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>
相關文章
相關標籤/搜索