struts.xml 配置详解之五 Action 配置2
1. Action 配置
1.1 、 method 属性与动态方法调用注意点
1 、method 属性可以自动匹配doXXX() 方法,如doAdd() ,访问方式一样,这样的好处是可以使用Java 的关键字,如default ,可以创建doDefault() 方法;
2 、如果同一个Action 的不同方法使用的是相同的配置(同样的拦截器、同样的result 的映射),那么可以使用动态方法调用;
3 、如果同一个Action 的不同方法使用的是配置不同的拦截器、不同的result 的映射,那么可以method 属性,为同一个Action 配置多个别名;
4 、动态方法可以修改配置禁用,因为它可能被恶意访问;
5 、动态方法调用与通配符方法有所重叠。
1.2 、 模拟 Struts1 的 ForwardAction
在jsp 中将所有URL 都指向action ,而不是指向jsp ,可以通过如下方式实现。
代码清单 1 : struts.xml 片段
< package name = "test" extends = "struts-default" >
<!-- 服务器跳转,返回的地址为 xxx.action -->
< action name = "main" >
< result> /main.jsp </ result>
</ action>
</ package>
在jsp 中的调用:
代码清单 2 : operateSuc.jsp 片段
<a href = " <%= path %> /main.action" > 返回主页 </a >
实现原理:
1、 class 属性省略,则默认使用com.opensymphony.xwork2.ActionSupport 类;
2、 当请求“/main.action ”时,框架将创建ActionSupport 实例,调用该实例的execute() 方法,返回“success ”,于是请求被导向到”/main.jsp” 页面。
1.3 、 默认的 action
如果请求的action 不存在,结果将是HTTP 404 错误,我们可以通过配置默认的action 匹配不存在的action
代码清单 3 : struts.xml 片段
< package name = "test" extends = "struts-default" >
<!-- 配置默认的 action ,所有不存在的 action 都会匹配此 action -->
< default-action-ref name = "hello" />
< action name = "hello" >
< result > /error.jsp </ result >
</ action >
</ package >
注意:
1、 default-action-ref 必须在action 元素之前;
2、 每个包中都可以有它自己的默认action ,但是每个名称空间应该只有一个默认action 。
3、 默认action 只对访问action 有效,非action 同样会看到HTTP 404 错误;
4、 推荐的处理方式 是为整个Web 应用程序指定默认页面,在web.xml 中配置如下:
代码清单 4 : web.xml 片段
<web-app version = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
<error-page >
<error-code >404 </error-code >
<location >/error.jsp </location >
</error-page >
</web-app >
我的联系方式: 85337464
我的博客: http://coderdream.iteye.com