필자의 다음 프로젝트를 보면 중복되는 CSS, JSP 파일이 많다.
해당 부분을 tiles로 처리하여 코드를 간소화 시키고자한다.
파일의 구조는 다음과 같으니 참고하도록하자
우선 dispatcher-servlet.xml 파일을 다음과 같이 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:beans="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<mvc:annotation-driven></mvc:annotation-driven>
<context:component-scan base-package="com.mycom" />
<!-- 패키지 tiles의 모든 설정 XML 파일을 읽어 들인다. -->
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>classpath:tiles/*.xml</value>
</list>
</property>
<property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory" />
</bean>
<!-- 타일즈 뷰리졸버를 사용하여 화면을 표시한다. -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
<property name="order" value="1" />
</bean>
<!-- 타일즈 뷰리졸버에 포함되지않은 것은 다음과 같이 view 셋팅을 한다. -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
<property name="order" value="2"/>
</bean>
</beans>
그럼 브라우저에서 요청시 타일즈를 적용하여 JSP를 표시해보도록하자
JSP에 타일즈 기능을 적용하는 과정은 다음과 같다.
- tiles_member.xml을 작성한다.
- 레이아웃용 JSP를 작성한다.
- 레이아웃에 표시할 JSP를 작성한다.
- 컨트롤러에서 tiles.xml에 설정한 뷰이름을 반환한다.
1. tiles_member.xml을 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:beans="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<context:component-scan base-package="com.mycom"/>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760" />
</bean>
<!-- 패키지 tiles의 모든 설정 XML 파일을 읽어 들인다. -->
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>classpth:tiles/*.xml</value>
</list>
</property>
<property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory" />
</bean>
<!-- 타일즈 뷰리졸버를 사용하여 화면을 표시한다. -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
</bean>
</beans>
2. 레이아웃용 JSP를 작성한다.
그외에 footer, css, side 등은 프로젝트에 맞게 작성한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"
%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="container">
<div id="sidebar-left">
<tiles:insertAttribute name="side"/>
</div>
<div id="content">
<tiles:insertAttribute name="body"/>
</div>
<div id="footer">
<tiles:insertAttribute name="footer"/>
</div>
</div>
</body>
</html>
3. 레이아웃에 맞게 JSP를 작성한다.
필자는 다음과 같이 작성하였다.
4. 컨트롤러에서 tiles.xml에 설정한 뷰이름을 반환한다.
package com.mycom;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HomeController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(){
System.out.println("타일즈 접속");
return "main";
}
}
같이 홈 컨트롤러에서 main을 반화하면
tiles_member.xml에서 main을 받아서
다음과 같이 구성된 Layout을 참조한다.
참조 후 다음과 같이 정상 출력되는 것을 확인할 수 있다.
'[책] > 자바 웹을 다루는 기술' 카테고리의 다른 글
7. pageContext.request.contextPath에 관하여 (0) | 2020.01.15 |
---|---|
6. Thumnail을 사용해보자 (0) | 2020.01.14 |
4. Filter API (0) | 2020.01.06 |
3. 세션 쿠키 사용하기 (0) | 2020.01.06 |
2. 쿠키란? (0) | 2020.01.06 |