1.struts入門示例
2.struts.xml配置
2.1 簡單配置介紹
<struts>
<!-- name:包名稱,用於區分不用的包 -->
<!-- extends:繼承其他包,struts-default定義了一系列攔截器操作 -->
<!-- namespace:命名空間,一般/即可,http://localhost:8080/Struts02/命名空間值/studentAction -->
<package name="student" extends="struts-default" namespace="/">
<!-- 一個包下可以定義多個action -->
<!-- name:action名稱,網址訪問時用到 -->
<!-- class:action類的完整路徑 -->
<!-- method:指定要調用action類的指定方法 -->
<action name="studentAction" class="com.action.StudentAction" method="test">
<!-- 一個action可以有多個result,根據name值和action方法返回值進行匹配指定result -->
<!-- name:action類調用方法返回的結果值 -->
<!-- result標籤中包含的值是跳轉到的頁面 -->
<!-- type表示跳轉類型。
dispathcher轉發視圖頁,默認值;
redirect重定向視圖頁
redirectAction重定向action
chain轉發action
stream返回結果是流,一般用於ajax和文件下載
-->
<result name="success" type="dispathcher">/success.jsp</result>
</action>
</package>
</struts>
2.2 動態調用Action多個方法
- 使用通配符調用指定Action指定方法
<!-- 網址:/Struts02/updateStudent 表示訪問StudentAction類的update()方法-->
<!-- 網址:/Struts02/addStudent 表示訪問StudentAction類的add()方法-->
<!-- 網址:/Struts02/xxxStudent 表示訪問StudentAction類的xxx()方法-->
<!-- action的name一般 “*類名” ,表示匹配以Student結尾的action,*一般代表方法名 -->
<!-- method屬性表示要執行的方法名,{1}表示*匹配的值 -->
<action name="*Student" class="com.action.StudentAction" method="{1}">
<!-- 訪問StudentAction類的方法後可以匹配值{1}跳轉到指定頁面 -->
<!-- 如果update方法返回success,則跳轉到update_success.jsp -->
<!-- 如果add方法返回success,則跳轉到add_success.jsp -->
<!-- 如果xxx方法返回success,則跳轉到xxx_success.jsp -->
<result name="success">/{1}_success.jsp</result>
</action>
- 使用路徑調用指定Action類的指定方法
<struts>
<!-- 開啓動態方法常量配置 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="student" extends="struts-default" namespace="/">
<!-- 網址:/Struts02/student!update 表示訪問StudentAction類的update()方法 -->
<!-- 網址:/Struts02/student!add 表示訪問StudentAction類的add()方法-->
<!-- 網址:/Struts02/student!xxx 表示訪問StudentAction類的xxx()方法-->
<!-- 路徑語法:action名!方法名 action名就是name值 -->
<!-- 這裏不再需要設置method值 -->
<action name="student" class="com.action.StudentAction" >
<result name="update_success">/update_success.jsp</result>
<result name="add_success">/add_success.jsp</result>
<result name="xxx_success">/xxx_success.jsp</result>
</action>
</package>
</struts>
2.3 常量配置
- 配置項參考struts2-core.jar→org.apache.struts2→default.properties
<struts>
<!-- 把struts的框架的字符集編碼改成“UTF-8” -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- 把開發模式設爲true,頁面顯示的錯誤信息更直觀 -->
<constant name="struts.devMode" value="true"/>
<!-- 修改核心控制器攔截請求路徑的後綴名 -->
<constant name="struts.action.extension" value="action,,"/>
</struts>
2.4 配置默認Action
<package name="student" extends="struts-default" namespace="/">
<!-- 當在namespace下找不到Action時,會自動找default-action-ref指定的默認Action -->
<default-action-ref name="defaultAction"></default-action-ref>
<!-- 這裏action的name要與default-action-ref一致,代表默認Action -->
<action name="defaultAction" class="com.action.DefaultAction" method="notFound">
<result name="404">/404.jsp</result>
</action>
<!-- 此處省略其他Action -->
</package>
2.5 全局結果
<package name="default" namespace="/" extends="struts-default">
<!-- 此處省略其他action -->
<!-- 如果其他action中的result的name值與全局結果的name值相同時,優先匹配action的result -->
<global-results>
<result name="index" >/welcome.jsp</result>
</global-results>
</package>
2.6 struts.xml分模塊開發
<struts>
<!-- 主配置文件可以設置一些全局結果和默認Action -->
<!-- 其他子模塊的配置需要用主配置的全局結果、默認Action等時,子模塊配置可以繼承主模塊配置的包名extends="struts-global" -->
<package name="struts-global" namespace="/" extends="struts-default">
</package>
<!-- 引入其他子模塊的struts配置文件 -->
<include file="struts_student.xml"></include>
<include file="struts_grade.xml"></include>
</struts>