`

springmvc 整合apache tiles

阅读更多
   最近把springmvc3.2.0 和 apache tiles 整合了一下,并用mvn构建了web工程,下面把关键点说明一下。前提:springmvc3.2 已经搭建完毕,搭建方式可查看 
http://zld406504302.iteye.com/blog/1887537 
   1:pom.xml 依赖项 
     
Java代码  收藏代码
  1.    <!--tiles jar 依赖-->  
  2.    <dependency>  
  3. <groupId>org.apache.tiles</groupId>  
  4. <artifactId>tiles-extras</artifactId>  
  5. <version>3.0.1</version>  
  6.    </dependency>  
  7.    <!--jstl 依赖 (构建tiles模板会用到)-->  
  8.    <dependency>  
  9.     <groupId>javax.servlet</groupId>  
  10.     <artifactId>jstl</artifactId>  
  11.     <version>1.2</version>  
  12.    </dependency>  
  13.      

  
   2:创建tiles.xml 文件,并构建tiles模板 
       2.1 目录结构 
          [img] 
 
[/img] 
      2.2 文件内容 
        tiles.xml 
      
Java代码  收藏代码
  1.         <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE tiles-definitions PUBLIC  
  3.        "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"  
  4.        "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">  
  5. <tiles-definitions>  
  6.     <definition name="baselayout" template="/WEB-INF/tiles/baselayout.jsp" preparer="com.cn.ld.framework.web.tiles.CustomerPreparer">  
  7.         <put-attribute name="title" value="title" />  
  8.         <put-attribute name="login_user" value="" />  
  9.         <put-list-attribute name="stylesheets">  
  10.             <add-attribute value="static/style/main" />  
  11.         </put-list-attribute>  
  12.         <put-list-attribute name="scripts">  
  13.             <add-attribute value="static/js/util" />  
  14.         </put-list-attribute>  
  15.     </definition>  
  16.       
  17.     <definition name="sublayout" extends="baselayout">  
  18.         <put-attribute name="login_user" value="/WEB-INF/tiles/loginUser.jsp" />  
  19.     </definition>  
  20.       
  21.     <definition name="title" template="/WEB-INF/tiles/title.jsp">  
  22.         <put-attribute name="title" value="springmvc3.2" />  
  23.     </definition>  
  24.       
  25.     <definition name="user/login/home" extends="baselayout">  
  26.         <put-attribute name="title" value="home page" />  
  27.         <put-attribute name="main" value="/WEB-INF/jsp/user/login/home.jsp" />  
  28.     </definition>  
  29.       
  30.     <definition name="home" extends="baselayout">  
  31.         <put-attribute name="main" value="/WEB-INF/tiles/loginUser.jsp" />  
  32.         <put-list-attribute name="scripts" inherit="true">  
  33.         </put-list-attribute>  
  34.     </definition>  
  35.    
  36. </tiles-definitions>  
  37.   
  38.          

       
      baselayout.jsp 
      
Java代码  收藏代码
  1.         <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
  2. <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>  
  3. <%@ taglib uri="http://tiles.apache.org/tags-tiles-extras" prefix="tilesx" %>  
  4. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  5.     pageEncoding="UTF-8"%>  
  6. <%  
  7. String path = request.getContextPath();  
  8. String basePath = request.getScheme() + "://"  
  9.         + request.getServerName() + ":" + request.getServerPort()  
  10.         + path + "/";  
  11. %>  
  12. <!DOCTYPE html>  
  13. <html>  
  14.     <head>  
  15.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  16.         <!-- tile <put-attribute name="title" value="title" />-->  
  17.         <title><tiles:insertAttribute name="title" /></title>  
  18.         <!-- stylesheets 要和tiles <put-list-attribute name="stylesheets"> name 一致 -->  
  19.         <!-- classname 定义类型 -->  
  20.         <tilesx:useAttribute name="stylesheets" classname="java.util.List" />  
  21.         <c:forEach items="${stylesheets}" var="src">  
  22.           <link rel="stylesheet" type="text/css" href="<%=basePath %><c:url value='${src}.css' />" />  
  23.         </c:forEach>  
  24.         <tilesx:useAttribute id="scripts" name="scripts" classname="java.util.List" />  
  25.         <c:forEach items="${scripts}" var="src">  
  26.             <script type="text/javascript" src="<%=basePath %><c:url value='${src}.js' />"></script>  
  27.         </c:forEach>  
  28.     </head>  
  29.     <body>  
  30.         <div id="head">  
  31.         <div id="banner"></div>  
  32.         <div id="menu"><jsp:include page="/WEB-INF/tiles/menu.jsp"/></div>      
  33.         </div>  
  34.         <!-- 加载 tiles main 指向的页面<put-attribute name="main" value="/WEB-INF/jsp/user/login/home.jsp" /> -->  
  35.         <div id="main"><tiles:insertAttribute name="main" /></div>  
  36.         <div id="footer"><jsp:include page="/WEB-INF/tiles/footer.jsp"/></div>  
  37.     </body>  
  38. </html>  
  39.          


       footer.jsp 
      
Java代码  收藏代码
  1. Copyright 2013 springmvc3.2, developer java 小生  


       loginUser.jsp 
      
Java代码  收藏代码
  1. <h1>Hello, ${user.name}  ${user.age }  ${user.sex}</h1>  

       
         menu.jsp 
      
Java代码  收藏代码
  1. <div>  
  2.     [list]  
  3.        [*]1  
  4.   
  5.        [*]2  
  6.   
  7.        [*]3  
  8.   
  9.        [*]4  
  10.   
  11.     [/list]  
  12. </div>  


       sublayout.jsp 
      
Java代码  收藏代码
  1.         <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
  2. <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>  
  3. <%@ taglib uri="http://tiles.apache.org/tags-tiles-extras" prefix="tilesx" %>  
  4. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  5.     pageEncoding="UTF-8"%>  
  6.  <tiles:insertAttribute name="login_user" />  
  7.          


       title.jsp 
      
Java代码  收藏代码
  1. <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>  
  2. le>springmvc3.2</title>  



   3:dispatcher-servlet.xml 增加tiles view试图 
    
Java代码  收藏代码
  1. <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver" p:order="1"/>  
  2.       
  3.     <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">  
  4.         <property name="definitions">  
  5.             <list>  
  6.                 <value>/WEB-INF/tiles.xml</value>  
  7.             </list>  
  8.         </property>  
  9.     </bean>  
  10.       
  11.     <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/"  
  12.             p:suffix=".jsp" p:order="2"/>  
  13.   
  14.       

    InternalResourceViewResolver 和 TilesViewResolver 共存,且以TilesViewResolver 为首要匹配,通过 p:order 来控制级别。数字越大,级别越低。 

     启动tomcat ,感受效果吧。

SpringMVC 3 + Tiles 2.2.2 Integration

 
Apache Tiles is a popular and mostly used templating framework for java based web application. 
Tiles became more popular because Struts 1.x uses Tiles as its default templating framework.
SpringMVC which is an MVC framework, like Struts, also supports integration of Tiles as its templating framework.

Let us see how we can integrate SpringMVC and Tiles.

You can download Tiles binaries from http://tiles.apache.org/ .

Step#1: Add the following tiles jars to WEB-INF/lib folder.

tiles-api-2.2.2.jar
tiles-core-2.2.2.jar
tiles-jsp-2.2.2.jar
tiles-servlet-2.2.2.jar
tiles-template-2.2.2.jar


Step#2: Configure tiles integration in WEB-INF/dispatcher-servlet.xml

01 <beans>
02  
03  <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
04    <property name="definitions">
05      <list>
06        <value>/WEB-INF/tiles.xml</value>
07      </list>
08    </property>
09  </bean>
10  
11  <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
12    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
13  </bean>
14  
15 </beans>


Step#3: Configure tiles definitions in WEB-INF/tiles.xml

01 <!--?xml version="1.0" encoding="UTF-8"?-->
02  
03   
04 <tiles-definitions>
05  
06  <definition name="baseLayout" template="/jsp/layout/layout.jsp">
07   <put-attribute name="title" value="SivaLabs" />
08   <put-attribute name="header" value="/jsp/layout/header.jsp" />
09   <put-attribute name="navigation" value="/jsp/layout/navigation.jsp" />
10   <put-attribute name="body" value="" />
11   <put-attribute name="footer" value="/jsp/layout/footer.jsp" />
12  </definition>
13   
14  <definition name="login" extends="baseLayout">
15   <put-attribute name="title" value="SivaLabs : Login" />
16   <put-attribute name="navigation" value="" />
17   <put-attribute name="body" value="/jsp/login.jsp" />
18  </definition>
19    
20  <definition name="welcome" extends="baseLayout">
21   <put-attribute name="title" value="SivaLabs : Welcome" />
22   <put-attribute name="body" value="/jsp/welcome.jsp" />
23  </definition>
24    
25 </tiles-definitions>

Step#4: Code the layout JSPs

layout.jsp

01 <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
02 <html>
03 <head>
04 <title><tiles:insertAttribute name="title" ignore="true" /></title>
05 <script type="text/javascript" src="js/sivalabs.js"></script>
06 </head>
07 <body>
08  
09 <table border="1" style="border-collapse: collapse;" cellpadding="2" cellspacing="2"align="center" width="800">    <tbody><tr>
10         <td height="30" colspan="2"><tiles:insertAttribute name="header" /></td>
11     </tr>
12     <tr>
13         <td width="150" height="450" valign="top">
14  
15          <tiles:insertAttribute name="navigation" />
16  
17         </td>
18         <td valign="top" width="650">
19  
20          <tiles:insertAttribute name="body" />
21  
22         </td>
23     </tr>
24     <tr>
25         <td height="30" colspan="2">
26  
27          <tiles:insertAttribute name="footer" />
28  
29         </td>
30     </tr>
31 </tbody></table></body>
32 </html>

header.jsp

1 <h2>SivaLabs : My Experiments On Technology</h2>


footer.jsp

1 <center>
2  <b>© 2011 SivaLabs All Rights Reserved</b>
3 </center>

navigation.jsp

1 <p><a href="createUser.do">Create User</a></p><p><a href="listUsers.do">View Users</a></p><p><ahref="logout.do">Logout</a></p>

welcome.jsp

1 <h2>Welcome to SpringMVC+Tiles Sample Application </h2>


Step#5: 

WelcomeController.java

01 package com.sivalabs.web.controllers;
02  
03 import org.springframework.stereotype.Controller;
04 import org.springframework.web.bind.annotation.RequestMapping;
05  
06 @Controller
07 public class WelcomeController
08 {
09  @RequestMapping("welcome")
10  public String welcome()
11  {
12   return "welcome";
13  }
14 }

Here the String "welcome" will be resolved as a tile name and display the UI as per "welcome" tile configuration.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics