Tiles
์ ์
๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ ์ด์์(header, footer ๋ฑ) ์ ๋ณด๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํ์ด์ง ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๋ ํ๋ ์์ํฌ
๋จ์ํ ํ์ผ์ ํฉ์ณ์ฃผ๋ JSP Include์ ๋ฌ๋ฆฌ, ajax์ฒ๋ผ ๋ถ๋ถ์ ์ฌ๋ ๋๋ง์ด ๊ฐ๋ฅํ๋ค.
3์์
Template
ํ์ด์ง ๋ ์ด์์
jsp๋ก ํ์ด์ง์ ๊ธฐ๋ณธ ๊ณจ๊ฒฉ๋ง ๊ตฌ์ฑํ๊ณ ๊ฐ ํ์ด์ง์ ์ค์ ๋ด์ฉ์ definition์์ ์ค์ ๋๋ Attribute ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ์์ ๋ฟ๋ฆผ
Attribute
Template์ ๋น ๊ณต๊ฐ์ ์ฑ์ฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ ๋ณด
3๊ฐ์ง ํ์ ์ผ๋ก ๊ตฌ์ฑ
template
definition
string
Definition
์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๊ธฐ ์ํด ๋ ๋๋ง๋๋ Template๊ณผ Attribute ์ฐ๊ฒฐ
์ฌ์ฉ๋ฒ
pom.xml
์ tiles๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๋ชจ๋ dependency ์ถ๊ฐ<dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-jsp</artifactId> <version>๋ฒ์ </version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-template</artifactId> <version>๋ฒ์ </version> </dependency>
applicaitonContext.xml
์์ ํ์ ์ฐ์ ์์๋ฅผ tiles - jsp ์์ผ๋ก ์ค์ <!-- Tiles ViewResolver --> <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/> <property name="order" value="1"/> //์ฐ์ ์์ 1 - ํ์ผ์ฆ ์ค์ </bean> <!-- JSP ViewResolver --> <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> <property name="order" value="2"/> //์ฐ์ ์์ 2 - jsp์ค์ </bean>
์ฆ, tiles ํ์ผ(์ค์ ํ์ผ์ ์ ์๋ definition๊ณผ ์์ ํ ์ผ์นํ๋ jsp ํ์ผ)์ด ์์ผ๋ฉด ์ด๊ฑธ ๋จผ์ ์ ํํ๊ณ , ์๋ค๋ฉด ์ผ๋ฐ์ ์ธ jsp ํ์ผ์ ์ ํํ๋ค.
tiles ์ค์ ํ์ผ(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="page1/*"> <put-attribute name="title" value="test" /> <put-attribute name="header" value="/WEB-INF/views/common/header.jsp" /> <put-attribute name="body" value="WEB-INF/views/page1/{1}.jsp" /> <put-attribute name="bottom" value="/WEB-INF/views/common/bottom.jsp" /> </definition> </tiles-definitions>
ํ๊ทธ ์์ definition๋ค์ ์ ์ํ๋ค.
definition
์๋ ๋ค์์ ์ ๋ณด๋ค์ด ํฌํจ๋๋ค.์ด๋ฆ (๋ค๋ฅธ definition์์ ์์ ๋ฑ์ ์ฐธ์กฐ๋ฅผ ํ๊ธฐ ์ํด)
ํ ํ๋ฆฟ (์ด definition์ด ์ฌ์ฉ๋ jsp ๋ ์ด์์ ํ์ผ ๊ฒฝ๋ก)
์ด๋ฅผ ์๋ตํ๋ฉด
definition
๋ด์ ์ ์๋๋attribute
์๋ ๋ค์์ ์ ๋ณด๋ค์ด ํฌํจ๋๋ค.์ด๋ฆ (jsp ๋ ์ด์์์์ ์ด๋ฅผ ํตํด attribute๋ฅผ ํธ์ถ)
๊ฐ (attribute๋ฅผ ํธ์ถํ์ ๋ ๋ฐํ๋ String/Templateโฆ)
*
์ ๋ชจ๋ ๋ฌธ์์ด์ ๋ปํจ. ํ์ผ๋ช ์*
๋๋ ํ ๋ฆฌ๋ช ์**
{1}, {2}์ ๊ฐ์ ์ซ์๋ *์ ๋ค์ด๊ฐ ๊ฒ์ ์์๋๋ก ๋ฐ์
tiles ํ๊ทธ๋ฅผ ํตํด ๋ฌธ์์ด, ๋ ์ด์์(jsp)๋ฅผ ๋์ ์ผ๋ก include
<**tiles:getAsString** name="title"/>
name์ด title์ธ attribute์ value์ ์ ์ธ๋ ๋ด์ฉ์ ๊ทธ๋๋ก ๊ฐ์ ธ์ด
<**tiles:insertAttribute** name="header" />
name์ด header์ธ jsp ํ์ผ์ ๋ด์ฉ์ ๊ฐ์ ธ์ด
์ปจํธ๋กค๋ฌ์์๋ ๋ค์๊ณผ ๊ฐ์ด ๋งคํํด์ ์ฌ์ฉ
@RequestMapping("/") public String testList (HttpServletRequest request, HttpServletResponse response, ModelMap model) { return "page1/main"; }
์ด๋ฆ์ด page1/*์ธ ํ์ผ์ฆ์ ๋งคํ๋๋ค.
Last updated