`
CoderDream
  • 浏览: 470568 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

【张冰Struts2学习笔记】0502.struts.xml配置详解之五 Action配置2

阅读更多

 

struts.xml 配置详解之五 Action 配置2

 

1.      Action 配置

1.1 method 属性与动态方法调用注意点

1method 属性可以自动匹配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

 

0
4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics