struts2的Action的相关配置

来源:互联网 发布:牛彩纽约源码 编辑:程序博客网 时间:2024/06/01 10:19

struts2的核心对象源码还没翻完,等到我下次有空整理笔记时候,笔记整理好再发上来。还剩Dispatcher和ActionProxy&ActionInvovation两个比较重要的对象。这里先将整理好的常量配置发上来

1.Action的相关配置

1)必须要为<action>元素 配置<package>元素  (struts2 围绕package进行Action的相关配置 )配置package 三个常用属性
<package name="default" namespace="/" extends="struts-default">    ①name包名称,在struts2的配置文件中,包名不能重复,name并不是真正包名,只是为了管理Action    ②namespace和 <action>的name属性,决定 Action的访问路径  (以/开始 )        namespace=""        :默认的名称空间         namespace="/"       :根名称空间         namespace="/aa/"    :带有名称空间的路径    ③extends继承哪个包,通常开发中继承struts-default包  (struts-default包在 struts-default.xml中定义 )【可以使用包中默认的拦截器和结果集】
2)Action是通过<action>元素配置
<action name="hello" class="cn.HelloAction" method="execute">    ①<action>的name和 <package>的namespace属性共同决定 Action的访问路径    ②class:类全路径    ③method:执行的方法,默认为execute()方法

例如:

package name="default" namespace="/user" extends="struts-default">    <action name="hello" class="cn.HelloAction">        <result name="success">/demo1/success.jsp</result>    </action></package>

此时的访问路径 http://localhost:8080/Struts2/demo1/user/hello.action
①result中的name:结果页面逻辑视图名称,默认为success
②type:结果类型(后面会做详细介绍,默认为转发)
`

3) 元素配置默认值

    <package> 的namespace 默认值 /    <action> 的class 默认值 ActionSupport 类     <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />        <result> 的 name 默认值 success

2.Action名称的搜索顺序

1.获得请求路径的URI,例如url是:  http://server/struts2/path1/path2/path3/test.action2.首先寻找namespace为/path1/path2/path3的package,  如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤3;3.寻找namespace为/path1/path2的package,  如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤4;4.寻找namespace为/path1的package,  如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action(默认的命名空间为空字符串“/” ),如果还是找不到,页面提示找不到action
  总结:action名称的搜索顺序是从最里层向上层进行搜索(遵循名称空间最大化原则),最后去找默认的namespacepackage去找,找不到就显示找不到。【名称空间最大化】

3.默认的Action和Action的默认处理类

1)默认的Action:在地址栏中输入一个错误的访问路径.action.(类似缺省的Servlet),解决客户端访问Action不存在的问题 ,客户端访问Action, Action找不到,默认Action 就会执行 我们需要在struts.xml文件中配置:    
<default-action-ref name="demo1"/>
2)Action的默认处理类: Action的默认处理类:地址栏访问的时候,可以找到该action的路径.但是class属性没有配置或者配置错误。客户端访问Action,已经找到匹配<action>元素,但是<action>元素没有class属性,执行默认处理类
<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />