본문 바로가기

머리 있든 없든 정리하기!!!

sitemesh

728x90
반응형

혼자 개인 프로젝트를 하다가 그냥 만들려고 하다가... 회사 프로젝트에 익숙해져서 decorator를 sitemesh를 적용해봐야겠다는 생각이 들었다.

https://bongjava.tistory.com/entry/sitemesh-%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A7%A4%EC%89%AC%EB%9E%80

 

sitemesh? 사이트매쉬란?

sitemesh는 웹페이지를 구성하는 레이아웃을 효율적으로 처리할 수 있게 도와주는 프레임워크이다. 웹페이지의 동일한 상단, 하단, 메뉴등의 부분들은 한 곳에서 관리하고 각각의 페이지는 실제

bongjava.tistory.com

 

윗분의 친절한 설명이 있지만 블로그 내려버리면 의미가 없기에 내 블로그는 내릴 일은 없기에

 

pom.xml

 

<!-- https://mvnrepository.com/artifact/opensymphony/sitemesh -->
<dependency>
    <groupId>opensymphony</groupId>
    <artifactId>sitemesh</artifactId>
    <version>2.4.2</version>
</dependency>

 

web.xml

 

<filter>
        <filter-name>sitemesh</filter-name>
        <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>sitemesh</filter-name>
        <url-pattern>*.do</url-pattern>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>

 

.do로 끝나는 모든 url요청을 sitemesh 필터적용

 

INCLUDE : url에 입력해서 들어올 경우

FORWARD : include()를 통해 들어올 경우 ( <jsp:include...> )

REQUEST : forward()를 통해 들어올 경우 ( <jsp:forward ...> )

 

sitemesh.xml (sitemesh 설정 및 decorators.xml 파일 호출)

WEB-INF/ 경로아래에 설정

decorators.xml 위치는 조절 가능

 

sitemesh.xml

<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
    <property name="decorators-file" value="/WEB-INF/decorators.xml"/> 이부분이 decorators.xml의 위치를 지정하는 구간
    <excludes file="${decorators-file}"/>

    <page-parsers>
        <parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
    </page-parsers>

    <decorator-mappers>

        <mapper class="com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper">
            <param name="property.1" value="meta.decorator" />
            <param name="property.2" value="decorator" />
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper">
            <param name="match.MSIE" value="ie" />
            <param name="match.Mozilla [" value="ns" />
            <param name="match.Opera" value="opera" />
            <param name="match.Lynx" value="lynx" />
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
            <param name="decorator" value="printable" />
            <param name="parameter.name" value="printable" />
            <param name="parameter.value" value="true" />
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.RobotDecoratorMapper">
            <param name="decorator" value="robot" />
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.ParameterDecoratorMapper">
            <param name="decorator.parameter" value="decorator" />
            <param name="parameter.name" value="confirm" />
            <param name="parameter.value" value="true" />
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper">
        </mapper>

        <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
            <param name="config" value="${decorators-file}" />
        </mapper>

    </decorator-mappers>

</sitemesh>

 

decorators.xml (sitemesh 환경설정 파일)

<excludes> : sitemesh 사용하지 않을 url패턴 넣기

<decorators> : 호출된 view 페이지와 맞는 패턴이 있다면 decorator 엘리먼트는 정의된 대로 페이지를 꾸며준다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE decorators>

<decorators defaultdir="/WEB-INF/views">

    <!-- Any urls that are excluded will never be decorated by Sitemesh -->
    <excludes>
      <pattern>/admin/login.do</pattern>
      <pattern>/admin/*Include.do</pattern>
    </excludes>

    <!-- admin -->
    <decorator name="admin_top" page="layout/admin/top.jsp" />
    <decorator name="admin_sidebar" page="layout/admin/sidebar.jsp" />
    <decorator name="admin_default" page="layout/admin/default.jsp">
        <pattern>/admin/*.do</pattern>
    </decorator>

    <!-- front -->
    <decorator name="top" page="layout/front/top.jsp" />
    <decorator name="sidebar" page="layout/front/sidebar.jsp" />
    <decorator name="default" page="layout/front/default.jsp">
        <pattern>/*.do</pattern>
    </decorator>

    <!-- preview -->
    <decorator name="preview_default" page="layout/preview/default.jsp">
        <pattern>/preview/*.do</pattern>
    </decorator>

</decorators>
728x90
반응형