ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Tiles 흐름파악하기
    프로그래밍/Tiles 2019. 8. 2. 17:27
    반응형

     

    1. Tiles란?


    일반 홈페이지에서 include, import 하던 반복적인 jsp(화면) 등의 반복적인 부분을 한 곳에서 깔끔하게 관리할 수 있게 도와주는 템플릿 프레임워크 입니다.


     


    참조 url:

    https://tiles.apache.org/

     

    Apache Tiles - Home

    https://its-easy.tistory.com/13

     

    [Spring] Tiles Spring 연동 방법 및 사용법

    Tiles Framework란? Tiles는 웹페이지의 상단메뉴나 좌측메뉴, 공통 파일 include 등의 반복적인 부분을 한 곳에서 깔끔하게 관리할 수 있게 도와주는 템플릿 프레임워크 입니다. https://tiles.apache.org/ 위 UR..

    its-easy.tistory.com

    https://epthffh.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%83%80%EC%9D%BC%EC%A6%88-Spring-Tile-%EC%84%A4%EC%A0%95%ED%95%B4%EB%B3%B4%EA%B8%B0


     

    참조url에서 해당 url, gradle plugin에 Tiles을 bulid하기

     

    2. Tiles.xml: 타일즈 구조(프레임) 만드는 곳


     

    <tiles-definitions>
    
    	<!-- (1) 레이아웃을 적용하지않는화면-->    
        <definition name="baseEmpty" template="/WEB-INF/views/template/baseEmpty.jsp">
        </definition>
        
        <!-- (1) 레이아웃 미적용 -->    
        <definition name="*.part" extends="baseEmpty">
          <put-attribute name="body" value="/WEB-INF/views/login/{1}.jsp" />
        </definition>
        
        <definition name="*/*.part" extends="baseEmpty">
             <put-attribute name="body" value="/WEB-INF/views/login/{1}/{2}.jsp" />
        </definition>
        
        <definition name="*/*/*.part" extends="baseEmpty">
            <put-attribute name="body" value="/WEB-INF/views/login/{1}/{2}/{3}.jsp" />
        </definition>    
        
        
        <!-- (2) 레이아웃을 적용하는화면-->
        <definition name="base" template="/WEB-INF/views/template/baseLayout.jsp">
            <put-attribute name="title" value="" />
            <put-attribute name="common" value="/WEB-INF/views/template/common.jsp" />
            <put-attribute name="header" value="/WEB-INF/views/template/header.jsp" />
            <put-attribute name="menu" value="" />        
            <put-attribute name="footer" value="/WEB-INF/views/template/footer.jsp" />
        </definition>
        
        
        <!-- (2) 레이아웃 적용 -->
       
        <definition name="*.page" extends="base">
            <put-attribute name="body" value="/WEB-INF/views/template/{1}.jsp" />
        </definition>
     	
        <definition name="*/*.page" extends="base">
             <put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp" />
        </definition>
        
        <definition name="*/*/*.page" extends="base">
            <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}.jsp" />
        </definition>
    
    
    </tiles-definitions>

     

    (1)레이아웃 적용하지 않는 화면(Tiles미적용)

    **Tiles미적용 화면은 보통 로그인화면, layout이 굳이 필요하지 않는 화면을 만들때 사용합니다.

     

    put-attribute의 경로에는 *(에스테리크) 를 {1} 에 넣어줄수있게 됩니다

    즉 /WEB-INF/jsp/login/login.jsp 를 찾아들어가게 됩니다

    컨트롤러에서 return 값으로 에스테리크(jsp명).part해주면 해당 xml을 타게됩니다.

     

    (2)레이아웃 적용화면(Tiles적용)

    Tiles적용하기 위해 보통 사용합니다.

    크게 common(css, js 등), header, footer, title, menu 등 공통 include.jsp를 설정합니다.

    사용하지않는 것들은 삭제해도 상관없고 value값을 ""비워놓으면 됩니다.

    • put-attribute: 나중에 하나의 layout jsp에서 사용하기 위한 name을 지정하는 것.
    • value: 사용할 jsp 풀네임을 작성
    • definition name: Controller에서 사용할 name

    레이아웃을 적용하건, 안적용하건 body값만 항상 바뀝니다.

     

    3. Tiles 합치기(하나의 layout.jsp 생성)


    <body>
    	<h1>baseLayout.jsp</h1>
    	<tiles:insertAttribute name="common"/>
    	<tiles:insertAttribute name="header"/>
    	<tiles:insertAttribute name="body"/>
    	<tiles:insertAttribute name="footer"/>
    	
    </body>

     

    2에서 만든 tile들을 합치는 곳입니다.

    baseLayout.jsp(가제)를 생성해서 위에서만든 put-attribute에서 지정한 name들을 이곳에서 뿌려줍니다.

    insertAttribute name = put-attribute

     

    4. Controller


     

    Controller return값-> Tiles.xml에서 설정한 definition name을 끝에 적어줍니다.

    ex) return "layoutTest.page";

    layoutTest(Tiles body jsp name).page(Tiles.xml에서 설정한 definition name)

     

     

    Tiles를 적용한 화면과 적용하지 않는 화면 두가지의 경우였습니다.

    이상입니다 ! 

    반응형

    댓글

Designed by Tistory.