최근의 대부분 프로젝트는 Sitemesh를 사용하여 개발했었다.
이번에 문서들을 보면서 확인해보니 Tiles2가 나오면서 성능등이 많이 개선이 되었다고한다.
그럼, 해봐야 하지 않겠어?! 해보자.
pom.xml 추가
<dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-core</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-jsp</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-servlet</artifactId> <version>2.2.2</version> </dependency>
스프링소스 사이트에서 다운로드받은 STS의 경우 메이븐 pom.xml업데이트만 해도 자동으로 라이브러리가 추가되더라.
따로 메이븐을 설치하여 사용해야하나 고민하고 있었는데, 조금 두고 봐야겠다.
이제 servlet-context.xml에 Tiles사용을 위한 설정을 해보자.
<beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> <beans:property name="definitions"> <beans:list> <beans:value>/WEB-INF/config/tiles_layouts.xml</beans:value> </beans:list> </beans:property> <beans:property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles2.SpringBeanPreparerFactory"/> </beans:bean> <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/> </beans:bean>
Tiles2에서 view를 연결하기 때문에 InternalResourceViewResolver를 사용하지 않아도 된다.
하지만, 나는 혹시나 발생할 수 있는 레이아웃없이 jsp페이지만 호출할 일이 있을까 싶어서,
InternalResourceViewResolver를 삭제하지 않았다.
이제 Tiles2의 레이아웃 설정이다.
설정파일은 위에서 지정한 "/WEB-INF/views/config/tiles_layouts.xml" 이 파일이 되겠다.
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" "http://tiles.apache.org/dtds/tiles-config_2_1.dtd"> <tiles-definitions> <definition name="layouts-tiles" template="/WEB-INF/views/template/layouts-tiles.jsp"> <put-attribute name="header" value="/WEB-INF/views/template/header.jsp" /> <put-attribute name="content" value="" /> <put-attribute name="footer" value="/WEB-INF/views/template/footer.jsp" /> </definition> <definition name="*.tiles" extends="layouts-tiles"> <put-attribute name="content" value="/WEB-INF/views/{1}.jsp" /> </definition> <definition name="*/*.tiles" extends="layouts-tiles"> <put-attribute name="content" value="/WEB-INF/views/{1}/{2}.jsp" /> </definition> <definition name="*/*/*.tiles" extends="layouts-tiles"> <put-attribute name="content" value="/WEB-INF/views/{1}/{2}/{3}.jsp" /> </definition> </tiles-definitions>
layouts-tiles설정에서 기본 레이아웃 페이지와 이름을 설정한다.
content의 경우는 유동적으로 바뀌기에 하단에서 layouts-tiles를 extends받아서 추가해 준다.
자신에 맞게 바꾸면 되겠다.
layouts-tiles.jsp 내용
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Digigroove Intranet</title> </head> <body> <tiles:insertAttribute name="header"/> <tiles:insertAttribute name="content"/> <tiles:insertAttribute name="footer"/> </body> </html>
여기까지가 끝이다.
header와 footer는 일반적인 html레이아웃 짜듯이 구성해 주면되겠다.
하나 불편한 점이 있는데, sitemesh의 경우는 header와 body의 내용 혹은 속성을 레이아웃에서
받아서 처리할 수 있있지만 Tiles녀석도 가능한지 아직모르겠다.
문서를 좀 읽어봐야겠다.
아름답게도 잘 설명해준 블로그가 있어서 살살 따라하다보니 쉽게 되었다.
출처를 밝히며 감사의 마음을 표한다. 앞으로도 이곳 저곳의 자료를 모아올 것 같다.. ㅋㅋ
출처 : http://blog.naver.com/PostView.nhn?blogId=jazz1234k&logNo=40123376205
'프로그래밍 > spring' 카테고리의 다른 글
스프링 한글 깨짐 처리 (0) | 2016.05.15 |
---|---|
@Aspect Annotation을 이용한 로그인 세션 관리 (0) | 2016.04.29 |
Apache Titles 적용하기 (0) | 2016.04.21 |
spring에서 현재의 HttpServletRequest 가져오는 법 (0) | 2016.04.20 |
messageConverter 방법 (0) | 2016.04.20 |