全局視圖
<global-results>
<result name="error">/WEB-INF/page/error.jsp</result>
</global-results>
爲Action的屬性注入值
<action name="hello"class="com.chen.action.Hello" method="save">
<param name="savepath">/image</param>
<result name="success">/saveOK.jsp</result>
</action>
修改Struts2請求的後綴
<constant name="struts.action.extension"value="do,go,action"/>
帶參重定向
<action name="hello"class="com.chen.action.Hello" method="sayHao">
<result name="success">/sayHao.jsp?message=${message}</result>
</action>
前端通過以下代碼獲得參數(會亂碼)
${param.message}
若亂碼則使用以下代碼獲取:
<%=URLDecoder.decode(newString(request.getParameter("username").getBytes("ISO8859-1"),"UTF-8"),"UTF-8") %>
動態方法調用
動態方法調用就是通過url動態指定調用Action哪個方法,而無需配置<action>的method屬性。
通過 “Action名稱!方法名”指定調用Action哪個方法。
(1)Struts.xml中設置Struts2支持動態方法調用
<constant name="struts.enable.DynamicMethodinvocation"value="true"/>
(2)struts.xml中配置無method屬性的<action>標籤,如下:
<action name="hello"class="com.chen.action.Hello">
<result name="success">/success.jsp</result>
</action>
(3)通過“Action名稱!方法名”就會執行對應Action中的指定方法。
使用通配符
<action name="*_*"class="com.chen.action.{1}" method="{2}">
<result name="success">/{2}.jsp</result>
</action>
• *_*代表匹配兩個字符串;
• {1} 匹配用於執行class;
• {2} 匹配用於指定method執行方法和結果頁面。
Action配置中的各種默認值
1. 如果沒有爲action指定class,默認是ActionSupport;
2. 如果沒有爲action指定method,默認執行action中的execute()方法;
3. 如果沒有指定result的name屬性,默認值爲success;
配置默認Action
可以爲每個package定義一個默認的Action,如果訪問路徑在package沒有匹配<action>就會執行默認action。
<default-action-ref name="error"></default-action-ref>
<action name="error"class="com.chen.action.ErrorAction" method="execute">
<result>/WEB-INF/page/error.jsp</result>
</action>
配置Action默認處理類
如果配置<action> 沒有指定class屬性,就會執行Action的默認處理類,在struts-default.xml中,有如下配置:
<default-class-ref class="com.opensymphony.xwork2.ActionSupport"/>
添加外部配置文件
隨着應用規模的增加,系統中Action的數量也會大量增加,導致struts.xml配置文件變得非常臃腫,爲了避免struts.xnl文件過於龐大、臃腫,提高struts.xml文件的可讀性,我們可以將一個strtus.xml配置文件分解成多個配置文件,然後在struts.xml文件中包含其他配置文件。例如:
<struts>
<include file="department.xml"></include>
<include file="employee.xml"></include>
</struts>