ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [spring] tiles: 동적배치
    JAVA 2021. 8. 10. 17:39

    Tiles

    타일즈는 웹 페이지의 상단이나 하단 메뉴와 같이 반복적으로 사용되는 부분들에 대한 코드를 분리해서 예쁘게 한 곳에서 관리를 가능하게 해주는 프레임워크이다.

     

    JSP include와의 차이


    비슷한 역할이지만, tiles가 여러모로 편리하고 좋다. jsp는 페이지 내에 동일한 레이아웃 정보가 들어가므로 전체적인 레이아웃을 변경하게 될 경우 모든 페이지를 수정해야하는 문제점이 있다. 예를들면 만약 50개의 페이지에 상단 메뉴가 include 되어있는데, 페이지명이 바뀌면 50개 파일을 전부 수정해주어야 하는 것이다. tiles는 이런 일이 있으면 설정파일만 변경해주면 된다.

     

    특징


    화면 기본 구성 레이아웃 템플릿 정의하고 상속을 통하여 대부분 구조를 재사용할 수 있는 기능 및 설정파일을 통한 통합 관리를 통하여 확장성 있고 일관되게 페이지 구성을 관리한다.

     

     

    출처 : https://kecmok.tistory.com/16


    실습

    1. 라이브러리 의존성 추가


    pom.xml

    		<!-- tiles -->
    		<dependency>
    			<groupId>org.apache.tiles</groupId>
    			<artifactId>tiles-jsp</artifactId>
    			<version>2.2.2</version>
    		</dependency>
    		
    		<!-- tiles-core -->
    		<dependency>
    			<groupId>org.apache.tiles</groupId>
    			<artifactId>tiles-core</artifactId>
    			<version>2.2.2</version>
    		</dependency>

     

    2. servlet-context 에 설정하기


    webapp/WEB-INF/spring/appServlet/servlet-context.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans:beans xmlns="http://www.springframework.org/schema/mvc"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:beans="http://www.springframework.org/schema/beans"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
    		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    
    	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
    	
    	<!-- Enables the Spring MVC @Controller programming model -->
    	<annotation-driven />
    
    	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    	<resources mapping="/resources/**" location="/resources/" />
    	<beans:bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
          <beans:property name="definitions">
             <beans:list>
                <beans:value>/WEB-INF/tiles-def.xml</beans:value>
             </beans:list>
          </beans:property>
       </beans:bean>
       
       <beans:bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
          <beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
          <beans:property name="viewNames" value=".*"/>
          <beans:property name="order" value="1"/><!-- 1순위 -->
       </beans:bean>
       
    	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
    	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<beans:property name="prefix" value="/WEB-INF/views/" />
    		<beans:property name="suffix" value=".jsp" />
    		<beans:property name="order" value="2"/><!-- 2순위 -->
    	</beans:bean>
    	
    	<context:component-scan base-package="co.kr.tilestest" />
    	
    	
    	
    </beans:beans>

     

    3. tiles설정 xml 만들기


    webapp/WEB-INF/tiles-def.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=".main.layout" template="/WEB-INF/views/layout.jsp">
          <put-attribute name="header" value="/WEB-INF/views/header.jsp"/>
          <put-attribute name="side" value="/WEB-INF/views/side.jsp"/>
          <put-attribute name="content" value="/WEB-INF/views/board/list.jsp"/>
          <put-attribute name="footer" value="/WEB-INF/views/footer.jsp"/>
       </definition>
    
       <definition name=".main.*.*" extends=".main.layout">
          <put-attribute name="content" value="/WEB-INF/views/{1}/{2}.jsp"/>
       </definition>
    </tiles-definitions>

    위에 정의한 layout.jsp 등등 value 로 지정한 경로와 파일명 그대로 템플릿 view 를 생성해야 한다.

     

    4. 템플릿 view 만들기


    1. header

    webapp/WEB-INF/views/header.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>header.jsp</title>
    </head>
    <body>
    	<table border="0" style="width:100%; min-width:60%;">
    	  <tr>
    	    <td align="left">
    		    <h2>
    				<a href="/tilestest/" style="text-decoration:none;">
    					<img src="resources/th.gif">
    				</a>
    			</h2>
    		</td>
    		
    		<td align="right">
    			<a href="/tilestest/board/list.do">게시판</a>&nbsp;
    			<a href="">q&a</a>&nbsp;
    			<a href="">fnq</a>&nbsp;
    			<a href="">공지사항</a>&nbsp;
    			<a href="/tilestest/insertForm.do">회원가입</a>&nbsp;
    			<a href="/tilestest/insertForm.do">로그인</a>
    		</td>
    	  </tr>
    	</table>
    
    </body>
    </html>

    2. side

    webapp/WEB-INF/views/side.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>side.jsp</title>
    </head>
    <body>
    		<a href="/tilestest/board/list.do">게시판</a><br>
    		<a href="">q&a</a><br>
    		<a href="">fnq</a><br>
    		<a href="">공지사항</a><br>
    		<a href="/tilestest/insertForm.do">회원가입</a><br>
    		<a href="/tilestest/insertForm.do">로그인</a><br>
    </body>
    </html>

    3. footer

    webapp/WEB-INF/views/footer.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>footer.jsp</title>
    </head>
    <body>
    <table border="0" style="width:100%; min-width:60%;">
    	<tr>
    		<td>
    			본사이트는 무단으로 복제하는 것을 허용하지 않습니다.&nbsp;
    			tel:010-3333-7777&nbsp;
    			<a href="#">관리자</a>
    		</td>
    	</tr>
    </table>
    
    </body>
    </html>

    4. list

    webapp/WEB-INF/views/board/list.jsp

    내용 넣을 곳 (지금은 테스트)

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>list.jsp</title>
    </head>
    <body>
    list.jsp<br>
    list.jsp<br>
    list.jsp<br>
    list.jsp<br>
    list.jsp<br>
    list.jsp<br>
    list.jsp<br>
    </body>
    </html>

    5. list

    webapp/WEB-INF/views/layout.jsp

     

    'JAVA' 카테고리의 다른 글

    [mybatis] Persistence Framework  (0) 2021.08.11
    jsp:액션태그,우편번호API  (0) 2021.08.10
    [spring]board Business,Dataservice(xml방식)  (0) 2021.08.06
    [spring]member Presentation  (0) 2021.08.05
    [spring] member Business,Dataservice(xml방식)  (0) 2021.08.04

    댓글

Designed by Tistory.