타일즈와 유사하게 header, footer, body 등의 형식을 지원하는 sitemesh 설정 방법
[ SiteMesh 설정하기 ]
1. pom.xml에 dependency 추가
1 2 3 4 5 6 | <!-- sitemesh --> <dependency> <groupId>opensymphony</groupId> <artifactId>sitemesh</artifactId> <version> 2.4 . 2 </version> </dependency> |
2. web.xml에 한글처리 filter 위에 filter 추가
이때, 모든 경로가 siteMesh의 영향을 일단 받을 수 있도록 /*로 설정한다.
1 2 3 4 5 6 7 8 | <filter> <filter-name>sitemesh</filter-name> <filter- class >com.opensymphony.module.sitemesh.filter.PageFilter</filter- class > </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
3. /WEB-INF 폴더 밑에 sitemesh.xml 파일을 만들고 다음 코드를 붙여넣는다.
sitemesh 라이브러리를 추가했다면, WEB-INF 폴더 밑에 sitemesh.xml 파일을 자동으로 인식한다.
이 곳에서 sitemesh 설정파일의 위치를 등록해준다.
여기서는 /WEB-INF/decorators.xml 로 sitemesh의 설정파일을 사용하겠다는 것을 알 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?xml version= "1.0" encoding= "UTF-8" ?> <sitemesh> <property name= "decorators-file" value= "/WEB-INF/decorators.xml" /> // sitemesh 의 환경설정 파일을 이 걸로 사용하겠다는 지정 <excludes file= "${decorators-file}" /> <page-parsers> <parser content-type= "text/html" class = "com.opensymphony.module.sitemesh.parser.FastPageParser" /> </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> |
4. 위에서 설정파일로 사용할 xml 파일을 WEB-INF 폴더 하위에 decorators.xml로 만들고 다음 코드를 붙여넣는다.
/WEB-INF/decorators.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?xml version= "1.0" encoding= "utf-8" ?> <!-- 데코레이터 기본 폴더 --> <decorators defaultdir= "/WEB-INF/views/layout" > // 데코레이터 기본 폴더로 sitemesh의 layout 관련 파일은 /WEB-INF/view/layout 폴더로 추가 할 것이다. <!-- 예외 URL 패턴 --> //여기 패턴은 sitemesh를 사용하지 않을 URL 패턴을 입력하면 된다. //아직 만들어진 것이 없어 추가할 내용은 없지만, 추후 login 문자열이 들어간 URL은 sitemesh를 사용하지 않겠다는 것이다. <excludes> <pattern>*login*</pattern> </excludes> // 이 부분이 데코레이터를 정의하는 부분이다. //여기서는 아래와 같이 header와 footer가 고정으로 들어가고 본문내용만 바뀌는 데코레이터를 만들 생각이다. // header // body // footer <decorator name= "header-footer-layout" page= "header-footer-layout.jsp" > <pattern>*</pattern> </decorator> </decorators> |
5. 데코레이터 기본 폴더에 decorator로 등록한 파일을 생성하자
/WEB-INF/views/layout/header-footer-layout.jsp 를 만들고 다음 코드를 붙여넣자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <%@ page pageEncoding= "UTF-8" contentType= "text/html; charset=UTF-8" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <head> <title>테스트 페이지</title> <!-- 공통 CSS --> <!-- 공통 JS --> <decorator:head /> </head> <div>공통 헤더</div> <hr /> <div> <decorator:body /> </div> <hr /> <div>공통 푸터</div> |
6. 그 외의 설정
여기서는 4번에서 header-footer-layout.jsp 하나만을 등록하고 *(모든 요청)시 작동하도록 하였는데,
그 외에 다른 적용이 필요한 경우 이 부분에 다른 layout 설정 파일을 등록해서 사용할 수 있다.
그 외에도, layout 파일 내에도 별도의 header.jsp 등을 만든 것을
<c:import 태그를 이용해서 등록해서 사용할 수 있다.
1 |
'개발 > 스프링' 카테고리의 다른 글
AJAX를 동기화, 비동기화 지정하는 방법(동기<순서대로>로 작업하는 예제) (0) | 2017.05.31 |
---|---|
handlebars js 라이브러리를 이용한 View 표현하기 (1) | 2017.05.31 |
게시글 페이징 처리하기(페이지 처리 쪽 처리) (11) | 2017.05.07 |
스프링 환경설정 (2) | 2017.05.06 |
쿠키와 세션을 이용한 자동 로그인 처리 (4) | 2017.05.06 |