tiles框架的使用记录

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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值