一、Action搜索顺序
Action的搜索顺序:
1、例如url是:http://server/struts2/path1/path2/path3/test.action
2、首先找命名空间为/path1/path2/path3的package,存在的话找包中名字为test的action
3、找命名空间为/path1/path2的package,存在的话找包中名字为test的action
4、找命名空间为/path1的package,存在的话找包中名字为test的action
5、找命名空间为/的package,存在的话找包中名字为test的action
6、如果还找不到,则去默认namespace(即namespace为空字符串)的package里面去找action,如果还找不到页面提示找不到action
二、action配置各项默认值
Action配置中的各项默认值:
1、如果没有为action指定class,默认是ActionSupport
2、如果没有为action指定method,默认执行action中的execute()方法,返回SUCCESS
3、如果没有指定result的name属性,默认值为success
三、result的各种转发类型
常用的类型有:dispatcher(默认)、redirect、redirectAction、plainText
1、redirect
<result type="redirect">/view.jsp</result>
还可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性。如下:
<result type="redirect">/view.jsp?id=${id}</result>
2、redirectAction
如果是同一个包下:
<result type="redirectAction">list</result>
如果重定向的action在别的命名空间下,采用注入的形式:
<result type="redirectAction">
<param name="actionName">list</param>
<param name="namespace">/test</param>
</result>
3、plainText
显示原始文件内容,如显示jsp文件源代码:
<result name="source" type="plainText">
<param name="location">/xxx.jsp</param>
<param name="charSet">UTF-8</param>
</result>
四、action属性注入
Struts2为Action属性提供了依赖注入功能:
public class HelloAction{
private String savePath;
public String setSavePath(String savePath){
this.savePath=savePath;
}
...
}
<package name="itcast" namespace="/test" extends="struts-default">
<action name="hello" class="cn.itcast.action.HelloAction">
<param name="savePath">/images</param>
...
</action>
</package>
通过<param>节点为action的savePath属性注入"/images"
五、Struts2中常用的常量配置
<!--指定Struts2处理的请求后缀-->
<constant name="struts.action.extension" value="do"/>
<!--指定默认编码集-->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!--设置浏览器是否缓存静态内容,默认为true(生产环境下使用),开发阶段最好关闭-->
<constant name="struts.serve.static.browserCache" value="false"/>
<!--当struts的配置文件修改后,系统是否自动重新加载该文件,默认为false(生产环境使用),开发阶段最好打开-->
<constant name="struts.configuration.xml.reload" value="true"/>
<!--上传文件的大小限制-->
<constant name="struts.multipart.maxSize" value="10701096"/>