Struts2中xml配置文件的元素解析

1、package元素

package用来管理action:使用了面向对象的思想

属性:

name:用来定义包名,注意:同一个配置文件中包名是唯一的。

extends:指定所继承的包,一般情况下需要继承struts-default包
        truts-default.xml中定义着struts-default这个包。
        truts-default.xml是在我们的struts.xml加载之前加载。

abstract:指定包是抽象的,只能被继承,含有action的包不能是抽象的,默认值是false。

namespace:名称空间
        名称空间    +   动作名称    =   访问路径
<package name="p1" extends="struts-default" namespace="/a/b"></package>





struts2查找动作的方法:

1:先按照用户输入的路径查找路径: /a/b/c/d/action1.action

如果没有找到再向上一层路径找:/a/b/c  找到了(不会再继续向上找)该路径则执行第二步

再向上一层路径找:/a/b  找到了(不会再继续向上找)该路径则执行第二步,找不到继续向上一级找

再向上一层路径找:/a  没找到     找到了(不会再继续向上找)该路径则执行第二步

再找/   也没有的话去默认命名空间下找。
都没找到直接报错                                           

2:找action: 先在当前的命名空间下找   ,如果没有找到则取默认的命名空间(没有写namespace属性的)下找  ,如果还找不到报错

一般只要我们有默认命名空间的pakege标签时,第一步是不会报错的。




action元素

属性:

name:动作名称

class:动作类全名。默认的动作类是:com.opensymphony.xwork2.ActionSupport
是在struts-default.xml中定义的

method:动作类中的方法名称。默认是public String execute(){}
        要求:
            1.public的
            2.返回值必须是String
            3.没有参数

一般样式:

<action name="action1" class="com.qianfeng.web.action.TestAction1" method="test1">
            <result name="success">/success.jsp</result>
        </action>

那我们的动作类是怎么定义和实现的呢?

a.方式一:动作类就是一个POJO(Plain Old Java Object 原始的java对象)
然后定义方法,然后我们就可以这样访问了,需要规定动作类和方法名
<!-- 第一种创建动作类的配置 -->
        <action name="action1" class="com.qianfeng.web.action.TestAction1" method="test1">
            <result name="success">/success.jsp</result>
        </action>


方式二:动作类实现com.opensymphony.xwork2.Action接口。
常量:给动作方法返回值用的。用常量可以使你的应用规范和统一。

在实现这个接口时,我们要重写execute()方法,这样我们访问时可以不说明method了
<!-- 第二种创建动作类的配置,因为默认执行execute()方法,所以省略 method -->
        <action name="action2" class="com.qianfeng.web.action.TestAction2">
            <result name="success">/success.jsp</result>
        </action>


c.方式三:动作类继承com.opensymphony.xwork2.ActionSupport    推荐使用
这也是我们一般应用的方法,如果不重写execute()方法时,调用ActionSupport中默认的execute()方法
<!-- 第三种创建动作类的配置,默认执行execute()方法-->
        <action name="action3" class="com.qianfeng.web.action.TestAction3">
            <result name="success">/success.jsp</result>
        </action>





动作的访问
a.使用通配符:
这里写图片描述
升级版:
这里写图片描述
优先级:绝对匹配优先。使用通配符的按照在配置文件中的先后顺序进行匹配的。


动态执行动作方法 :

动作名!动作方法名.action
动作名!动作方法名

<a href="${pageContext.request.contextPath }/user!addUser.action">添加用户</a>

<a href="${pageContext.request.contextPath }/user!updateUser.action">修改用户</a>

<a href="${pageContext.request.contextPath }/user!deleteUser.action">删除用户</a>

<a href="${pageContext.request.contextPath }/user!findUser.action">查找用户</a>

action
这里写图片描述




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值