struts2 整合tiles 入门

下面开始正式阐述若是整合struts2 和 tiles 1. web

在struts2整合完成的前提下位tiles单独准备以下各jar包,注意各jar包的版本要一致。 apache

一般咱们到你用来搭建struts环境的lib目录下寻找这些jar包,若是你下载的是struts2.0,则到她的lib下面找; api

这样可以保证版本不会出错。 J jsp

ar: commons-beanutils-1.7.0.jar commons-digester-2.0.jar commons-collections-3.1.jar  spa

tiles-jsp-2.0.6.jar tiles-core-2.0.6.jar tiles-api-2.0.6.jar orm

 struts2-tiles-plugin-2.2.3.1.jar xml

 2.配置web.xml  继承

配置web.xml主要涉及下面2个内容: 资源

1.为系统上下文配置两个环境变量 2.为tiles天加监听器 it

 <context-param>

 <param-name>org.apache.tiles.CONTAINER_FACTORY</param-name>

 <param-value>org.apache.struts2.tiles.StrutsTilesContainerFactory</param-value>

 </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>

 <listener> 

<listener-class> org.apache.struts2.tiles.StrutsTilesListener 

</listener-class>  

 </listener>

 这样由监听器获到取tiles组装请求时,交给StrutsTilesContainerFactory处理,StrutsTilesContainerFactory根据请求的参数(也就是被调用的小页面的名称)在tiles-defs.xml中找,若是没有找到则会报出异常,找到以后就会将页面组装进来。 

3.紧接着就应该讲tiles-defs.xml如何配置,通常状况下将她放在WEB-INF下。

内容格式以下: 

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://tiles.apache.org/dtds/tiles-config_2_0.dtd"> 

<tiles-definitions>  

<definition name="testdefault" template="/user/tiles.jsp" >    

<put-attribute name="header" value="/index.jsp"></put-attribute>

 <put-attribute name="copy" value="/user/user-reg-form.jsp">

</put-attribute> 

</definition>

 </tiles-definitions> 

definition name对于action完成后result所返回的内容,

好比有以下一段action配置 

<package name="test" namespace="/taobao/test" extends="tiles-default">

 <action name="userFormtest" class="com.nj180.taobao.test.TestTiles" method="execute"> 

 <result name="success" type="tiles">testdefault</result> 

</action>

 </package> 

当这个action无误的执行后就会去寻找tiles-defs.xml 文件中的name=testdefault的template属性,这时候template属性就是这个action执行完的真正去向。(是否是明白大概是怎么个过程了呢?)。

当咱们不适用tiles的时候,可能直接会写下面的action配置: <action name="userFormtest" class="com.nj180.taobao.test.TestTiles" method="execute">  <result name="success">/user/tiles.jsp</result> </action> 这样执行完成后,就直接返回到了/user/tiles.jsp。因此这两强调两个问题: 1. 使用tiles,action中必须将type属性置为tiles,不然会报异常,找不到资源 2. Package 要继承tiles-default  好了,如今假定全部工做都完成了,咱们来看一下tiles都作了什么?action完成后,会返回user/tiles.jsp,这时候咱们就能够在user/tiles.jsp的任意位置去使用index.jsp,user/user-reg-form.jsp,由于他们已经被组装进来了!在真实的项目中通常都组装通用性较强的页面如头部和尾部,每一个页面确定还会有自身的逻辑。注意:虽然两个jsp被组装进来了,可是若是你再user/tiles.jsp不去使用,那么全部的工做至关于白作。因此tiles能够一次组装不少页面到目标页面,到目标页面以后咱们还能够进行二次操做,这是include不可以实现的  说明:在写配置文件的时候还须要注意路径问题,你们能够写项目的相对路径,好比个人写法:<definition name="testdefault" template="/user/tiles.jsp" >,那么说明我这个jsp的真实路径就是WebContent/user/tiles.jsp  最后的问题,在jsp中如何使用tiles进行二次选择操做。首先我须要导入tiles的标签文件,这样咱们才可以在页面使用,就像使用struts的其余标签(c)同样。在tiles-jsp-2.0.6.jar包中能够找到tiles-jsp.tld将他复制到WEB-INF下面在页面进行引用<%@taglib uri="/WEB-INF/tld/struts-tiles.tld" prefix="tiles"%>   

body><h1>First Page Coming</h1><tiles:insertAttribute name="copy"/> <hr> <h1>Second Page Coming</h1> <tiles:insertAttribute name="header"/>  <hr></body>
相关文章
相关标签/搜索