package的namespace的执行顺序,如下图所示:
示例代码: <package name="p1" extends="struts-default" namespace="/user"> <!-- 名称空间(namespace="/user") -->
<!--
<action name="action1" class="com.itheima.web.action.Demo1Action" method="saveUser" >
<result name="success">/success.jsp</result>
</action>
-->
</package>
<package name="p2" extends="struts-default"> <!-- 默认的名称空间(namespace=""或者不写该属性) -->
<action name="action2" class="com.itheima.web.action.Demo1Action" method="saveUser2" >
<result name="success">/success.jsp</result>
</action>
</package>
访问::8080/day25_04_struts2_package/user/action2.action,可以找得到,查找过程:
1、先查找名称空间/user,有/user名称空间;
2、再在该名称空间查找动作名称action2.action,没有该动作名称;
3、再去默认的名称空间查找,有默认的名称空间;
4、再在该名称空间查找动作名称action2.action,有该动作名称,则执行该动作。
2、action元素: action元素:是用于定义动作名称,动作类和动作方法的映射,即配置动作用的。以及当出现不同情况时前往指定的结果视图 。
name属性:动作的名称。和jsp页面上的请求url中的名称对应起来。注意在此处不能写.action。
class属性:指定动作类,即动作类全名。
method属性:指定要执行的动作方法,即动作类中的方法名称。默认是public String execute() { }
方法要求:
1. public的
2. 返回值必须是String
3. 没有参数
可以修改默认动作类,注意:我们一般不改
<default-class-ref class="你自己的动作类" />
默认的动作类是:com.opensymphony.xwork2.ActionSupport 是在struts-default.xml中定义的。
3、编写动作类的三种方式: