在Struts2中配置Action
<package>:
1.定义Action使用<package>标签下的<action>标签完成,一个<package>下可以有多个<action>。
2.在<package>中有如下几个属性:
(1)name:必要属性,该<package>的名字,也是其他<package>引用此<package>时使用的名字。
(2)extends:非必要属性,指定被继承的<package>。
(3)abstract:非必要属性,在<package>中定义此属性后,此<package>下不可以有<action>元素。
(4)namespace:非必要属性,此<package>的命名空间。
简单的例子:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 配置第一个包,该包的name属性为package_a,继承struts-default --> <package name="package_a" extends="struts-default"> <!-- 定义拦截器部分:省略 --> <!-- <interceptors> <interceptor-stack name="xxx"> <interceptor-ref name="xxx1"/> <interceptor-ref name="xxx2"/> </interceptor-stack> </interceptors> --> <!-- 定义第一个Action --> <action name="first"> <result>first.jsp</result> </action> <!-- 定义第二个Action --> <action name="secend"> <result>secend.jsp</result> </action> </package> <!-- 配置第二个包, --> <package name="package_b" extends="package_a" namespace="/a"> <!-- 定义拦截器部分:省略 --> <!-- <interceptors> <interceptor-stack name="xxx"> <interceptor-ref name="xxx1"/> <interceptor-ref name="xxx2"/> </interceptor-stack> </interceptors> --> <!-- 定义第一个Action --> <action name="first"> <result>first.jsp</result> </action> <!-- 定义第二个Action --> <action name="secend"> <result>secend.jsp</result> </action> </package> </struts>
3.namespace属性的作用:
使用namespace区分在同一个应用的同名Action,在同一个namespace下不可以有同名的Action出现,如果没有为<package>指定namespace属性则该<package>处于默认的namespace下。
默认的namespace可以处理任何namespace下的action,这样的情况是在其namespace中没有找到相应的action,此时系统才会在默认的namespace下寻找此action,如果默认namespace下也没有此action则系统报错。系统优先在指定namespace下寻找action。
<action>:
1.<action>位于<package>下,不能单独存在于<package>外。
2.<action>中有如下几个属性:
(1)name:
必要属性,指定此action的名字,同时也指定了该action处理的请求的URL。
(2)class:
非必须属性,指定处理该action的实现类,如果没有指定此属性,则该action的实现类为系统默认的ActionSupport类。
(3)method:
非必须属性,指定处理方法。
3.默认Action:
配置默认Action使用<default-action-ref>标签进行配置,此标签中的name属性指向了一个有效的Action,当用户的请求找不到对应的Action时,使用此默认Action处理用户请求。
简单代码:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="package_a" namespace="/a" extends="struts-default"> <!-- 定义一个默认的Action --> <default-action-ref name="secend"/> <action name="first_a" class="myAction.FirstAction" method="start"> <result>start.jsp</result> </action> <action name="first_b" class="myAction.FirstAction" method="end"> <result>end.jsp</result> </action> <action name="secend" class="myAction.SecendAction"> <result name="success">welcome.jsp</result> <result name="error">error.jsp</result> </action> <!-- 默认处理类为ActionSupport --> <action name="third"> <result name="success">welcome.jsp</result> <result name="error">error.jsp</result> </action> </package> </struts>