首页 > 代码库 > struts.xml常用元素配置和结果集配置

struts.xml常用元素配置和结果集配置

1.struts.xml的常用元素配置介绍

(1).<package/>元素:表示包整个概念,和代码中的package没有关系:
  仅仅是从逻辑上将<action>,<interceptors/>等元素做模块管理.
package的常见的属性:
a>name:逻辑分包的名字,应用中有多个<package>元素,得保证name属性的唯一性. 因为该名字可以用来别别的<package>元素所继承.

b>extends:比如A<package/>元素继承了B<pckage/>元素, 那么像好比把B<package>元素中所有的内容拷贝到A<package>元素. 一般的,我么自定义的包,应该去继承struts-default包. 该包在struts-default.xml中.那么自定义的包就可以使用到<package name="struts-default"/>的所有的结果集类型和拦截器.

c>namespace:命名空间,在应用中有可能有多个Action的名字相同,那么如何区分,就使用namespace区分.
          namespace和<action>元素的name决定了一个Action的访问路径.
          该属性可以不写:默认就是 namespace="/",若要写必须以/打头
          namespace="/oa"


d>abstract:抽象的, <package abstract="true">:那么该包不能再定义<action>等元素,只能用来被其他<package>所继承.

(2).<action>元素: 存在于<package>元素中,用来定义Action的信息:
a>name:表示访问Action的名字,注意,没有 / 打头.(必须)
   <package>元素namespace和<action>元素的name决定了一个Action的访问路径.
   <package name="config" extends="struts-default" namespace="/config">
<action name="login" />
   </package>
   访问:http://ip:port/contextPath/config/login
  <package name="xx" extends="struts-default" namespace="/">
<action name="abc" />
  </package>
   访问:http://ip:port/contextPath/abc
b>class:表示一个被访问Action类的全限定名.若没配置该属性,默认找的是com.opensymphony.xwork2.ActionSupport类

c>method:表示该次请求将要访问Action类中的某一个指定的方法.若该属性没有配置,默认值execute

2.struts.xml的结果集配置:
Struts2处理结果使用<result>元素配置
局部结果:将<result>作为<action>子元素配置

全局结果
:将<result>作为<global-results>元素的子元素配置:一个package中多个Action供应的界面,如错误信息界面.

先在局部结果中去找Action方法返回的逻辑视图名,找到就跳转,找不到再去全局结果中去找到.还找不到,不错:
就近原则:


<result>元素的属性:
name:表示Action方法执行完返回的"逻辑视图的名字",默认值:success
type:跳转的方式:在struts-defautl.xml中有定义:
type的常用属性值:
dispatcher: 请求转发到jsp(共享同一个请求):默认值
redirect:    重定向到jsp
chain:       从Action请求转发到另一个Action(共享同一个请求)
redirectAction: 从Action重定向到另一个Action
stream:      响应流(文件下载)

<result>元素中还有<param>的子元素,表示参数信息.
  
<param>元素有name属性,默认值是location表示本地的资源:

默认配置:
<action name="hello" class="cn.wwh.www.hello.HelloAction" method="show">
<result name="show" type="redirect">
<param name="location">/views/hello/welcome.jsp</param>
</result>
</action>

<action name="hello" class="cn.wwh.www.hello.HelloAction">
     <!---逻辑视图名为success,跳转方式是dispatcher,找本地的一个文件-->
<result>/views/hello/welcome.jsp</result>
</action>


<!-- 若找/config命名空间找不到指定的Action,那么就执行默认的Action-->
<default-action-ref name="other"/>