tiles框架的使用记录

来源:互联网 发布:滴露和威露士 知乎 编辑:程序博客网 时间:2024/05/22 05:07

tiles框架是一个很强大的框架,能够方便快捷的搭建各种模块化的web架构。比如包含菜单、banner、主体、footer的web架构。

一、在http://tiles.apache.org/ 下载Tiles 2.1.2(点击共享下载)
 需要引入这几个jar: tiles-api-2.1.2.jar,tiles-core-2.1.2.jar,tiles-servlet-2.1.2.jar,tiles-jsp-2.1.2.jar

二、在WEB-INF中增加tiles-defs.xml文件:

 <?xml version="1.0" encoding="ISO-8859-1" ?> <!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="sample.page" template="/jsp/layout/layout.jsp">     <put-attribute name="title" value="标题" />     <put-attribute name="header" value="/jsp/layout/header.jsp" />     <put-attribute name="menu" value="/jsp/layout/menu.jsp" />     <put-attribute name="footer" value="/jsp/layout/footer.jsp" />   </definition> </tiles-definitions>


 

三、制作一个jsp模块,比如。注意在头部需要引入taglib
 
 

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>  <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> <html>   <head>     <title><tiles:getAsString name="title"/></title>   </head>   <body>         <table>       <tr>         <td colspan="2">           <tiles:insertAttribute name="header" />         </td>       </tr>       <tr>         <td>           <tiles:insertAttribute name="menu" />         </td>         <td>           <tiles:insertAttribute name="body" />         </td>       </tr>       <tr>         <td colspan="2">           <tiles:insertAttribute name="footer" />         </td>       </tr>     </table>   </body> </html>


 

四、在web.xml中:
 增加context param:
   

<context-param>         <param-name>           org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG         </param-name>         <param-value>           /WEB-INF/tiles-defs.xml         </param-value>     </context-param>



 
 增加filter:
 

<filter>      <filter-name>tilesFilter</filter-name>      <filter-class>org.apache.tiles.web.util.TilesDecorationFilter</filter-class>      <init-param>          <param-name>definition</param-name>          <param-value>sample.page</param-value>      </init-param>      <init-param>          <param-name>attribute-name</param-name>          <param-value>body</param-value>      </init-param>  </filter>  <filter-mapping>   <filter-name>tilesFilter</filter-name>   <url-pattern>*.jsp</url-pattern>   <dispatcher>FORWARD</dispatcher>  </filter-mapping> 



 增加listener:
 

<listener>      <listener-class>org.apache.tiles.web.startup.TilesListener</listener-class>  </listener>

因为tiles是struts的一部他,所以这样可以得用struts的跳转(forward)来改变body定义的页面。如果某个页面forward时不想经过tiles处理,可以在forward之前加一个

req.setAttribute ("org.apache.tiles.decoration.PREVENT:"+definitionName, Boolean.TRUE);

 其中definitionName就是filter init-param中的definition

 

另外一种配置不需要使用filter

在Action中返回view的时候,使用格式: 
   tiles:def-name:attr-name=jsp-name
  其中def-name是tiles定义的definition name, attr-name是要插入的jsp对应的attr, jsp-name是要插入的jsp
  
  比如: "tiles:main.page:body=userList.jsp"

原创粉丝点击