
스프링 제공 기능


tiles 사용법

[tiles jsp support 3.0.8V] → dependency 추가<tiles:insertAttribute name="tiles.xml에 지정한 name값" /> 추가하여 tile 위치 지정.
[dispatcher-servlet.xml]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean id="/index" class="webProject.controller.IndexController"/>
<bean id="/notice/list" class="webProject.controller.notice.ListController"/>
<bean id="/notice/detail" class="webProject.controller.notice.DetailController"/>
<!-- Tiles 전용 ViewResolver 빈으로 등록.-->
<!-- property로 order를 설정해주어 요청 시 매핑되는 view로 tiles가 출력되도록 설정-->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
<property name="order" value="1"/>
</bean>
<bean class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions" value="/WEB-INF/tiles.xml"/>
</bean>
<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>
<mvc:resources location="/static/" mapping="/**"></mvc:resources>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="notice.list" template="/WEB-INF/views/customer/inc/layout.jsp">
<put-attribute name="title" value="Tiles tutorial homepage" />
<put-attribute name="header" value="/WEB-INF/views/inc/header.jsp" />
<put-attribute name="visual" value="/WEB-INF/views/customer/inc/visual.jsp" />
<put-attribute name="aside" value="/WEB-INF/views/customer/inc/aside.jsp" />
<put-attribute name="body" value="/WEB-INF/views/customer/notice/list.jsp" />
<put-attribute name="footer" value="/WEB-INF/views/inc/footer.jsp" />
</definition>
<definition name="notice.detail" template="/WEB-INF/views/customer/inc/layout.jsp">
<put-attribute name="title" value="Tiles tutorial homepage" />
<put-attribute name="header" value="/WEB-INF/views/inc/header.jsp" />
<put-attribute name="visual" value="/WEB-INF/views/customer/inc/visual.jsp" />
<put-attribute name="aside" value="/WEB-INF/views/customer/inc/aside.jsp" />
<put-attribute name="body" value="/WEB-INF/views/customer/notice/detail.jsp" />
<put-attribute name="footer" value="/WEB-INF/views/inc/footer.jsp" />
</definition>
</tiles-definitions>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="notice.*" template="/WEB-INF/views/customer/inc/layout.jsp">
<put-attribute name="title" value="Tiles tutorial homepage" />
<put-attribute name="header" value="/WEB-INF/views/inc/header.jsp" />
<put-attribute name="visual" value="/WEB-INF/views/customer/inc/visual.jsp" />
<put-attribute name="aside" value="/WEB-INF/views/customer/inc/aside.jsp" />
<put-attribute name="body" value="/WEB-INF/views/customer/notice/{1}.jsp" />
<put-attribute name="footer" value="/WEB-INF/views/inc/footer.jsp" />
</definition>
</tiles-definitions>
<!-- root 전용 layout -->
<definition name="root.*" template="/WEB-INF/views/inc/layout.jsp">
<put-attribute name="title" value="공지사항" />
<put-attribute name="header" value="/WEB-INF/views/inc/header.jsp" />
<put-attribute name="body" value="/WEB-INF/views/{1}.jsp" />
<put-attribute name="footer" value="/WEB-INF/views/inc/footer.jsp" />
</definition>
* 만 사용할 경우 모든 요청이 해당 layout이 적용된 tiles 파일이 호출되기 때문에 root.* 이라는 name으로 설정해준다.<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<!DOCTYPE html>
<html>
<head>
<title>코딩 전문가를 만들기 위한 온라인 강의 시스템</title>
<meta charset="UTF-8">
<title>공지사항목록</title>
<link href="/css/layout.css" type="text/css" rel="stylesheet" />
<link href="/css/index.css" type="text/css" rel="stylesheet" />
</head>
<body>
<!-- header 부분 -->
<tiles:insertAttribute name="header" />
<!-- --------------------------- <body> --------------------------------------- -->
<tiles:insertAttribute name="body" />
<!-- ------------------- <footer> --------------------------------------- -->
<tiles:insertAttribute name="footer" />
</body>
</html>
public class IndexController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView("root.index");
return mv;
}
}