上一篇:struts基礎知識
下一篇:struts動態(tài)方法調(diào)用
Structs2 核心文件
1. web.xml
- 任何MVC框架都需要與Web應用整合,不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才會被應用加載。
- 通常,所有的MVC框架都需要Web應用加載一個核心控制器,對于Struts2框架而言,需要加載StructPrepareAndExecuteFilter,只要Web應用負責加載StructPrepareAndExecuteFilter,StructPrepareAndExecuteFilter將會加載Struts框架。
2. struts.xml
- 全局變量
- 用戶請求和相應Action之間的對應關系
- Action可能用到的參數(shù)和返回結果
- 各種攔截器的配置
3. structs.properties
- struts2框架的全局屬性文件,自動加載。該文件包含很多key-value對。
- 該文件完全可以配置在struts.xml文件中,使用constant元素
4. struts.xml詳解
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >
<struts>
<!-- include節(jié)點是struts2中組件化的方式 可以將每個功能模塊
獨立到一個xml配置文件中 然后用include節(jié)點引用 -->
<include file="struts-default.xml"></include>
<!-- package提供了將多個Action組織為一個模塊的方式
package的名字必須是唯一的 package可以擴展 當一個package擴展自
另一個package時該package會在本身配置的基礎上加入擴展的package
的配置 父package必須在子package前配置
name:package名稱
extends:繼承的父package名稱
abstract:設置package的屬性為抽象的 抽象的package不能定義action 值true:false
namespace:定義package命名空間 該命名空間影響到url的地址,
例如此命名空間為/test
那么訪問是的地址為http://localhost:8080/struts2/test/XX.action
-->
<package name="com.kay.struts2" extends="struts-default" namespace="/test">
<interceptors>
<!-- 定義攔截器
name:攔截器名稱
class:攔截器類路徑
-->
<interceptor name="timer" class="com.kay.timer"></interceptor>
<interceptor name="logger" class="com.kay.logger"></interceptor>
<!-- 定義攔截器棧 -->
<interceptor-stack name="mystack">
<interceptor-ref name="timer"></interceptor-ref>
<interceptor-ref name="logger"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 定義默認的攔截器 每個Action都會自動引用
如果Action中引用了其它的攔截器 默認的攔截器將無效 -->
<default-interceptor-ref name="mystack"></default-interceptor-ref>
<!-- 配置默認的action
當前我們訪問的一個命名空間下的action資源的時候,
如果這個資源不存在,這時就會報錯,
這時我們可以使用這樣的配置,
這樣配置之后,如果用戶訪問了一個不存在的資源,
那么就會調(diào)用這個配置指向的action資源-->
<default-action-refname="ActionIsNotFound"></default-action-ref>
<!-- 全局results配置 -->
<global-results>
<result name="input">/error.jsp</result>
</global-results>
<!-- Action配置 一個Action可以被多次映射(只要action配置中的name不同)
name:action名稱
class: 對應的類的路徑
method: 調(diào)用Action中的方法名
-->
<action name="hello" class="com.kay.struts2.Action.LoginAction">
<!-- 引用攔截器
name:攔截器名稱或攔截器棧名稱
由于每一個包都是直接或者間接繼承了struts-default這個包,
這個包中定義了很多攔截器和攔截器棧,
并且定義了一個默認的攔截器棧(defaultStack),
只要是我們寫的action不去主動的引用攔截器或者攔截器棧,
這個默認的攔截器棧就會自動的攔截action。
所以當我們想用自定義的攔截器攔截action的時候,
不能忘了主動地聲明引用這個defaultStack攔截器棧
-->
<interceptor-ref name="timer"></interceptor-ref>
<!-- 節(jié)點配置
name : result名稱 和Action中返回的值相同
type : result類型 不寫則選用superpackage的type
struts-default.xml中的默認為dispatcher
-->
<result name="success" type="dispatcher">/talk.jsp</result>
<!-- 參數(shù)設置
name:對應Action中的get/set方法
-->
<param name="url">http://www.sina.com</param>
</action>
<!-- 替代全局屬性文件
-->
<constant name="structs.i18n.reload" value=""></constant>
</package>
</struts>