全局视图
<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>