ActionSupport是默认的Action类:若某个Action节点没有配置class属性  则 ActionSupport是待执行的Action 类 ,而execute 方法即为要默认执行的 action方法

 

ActionSupport 实现的接口

         Action :里面定义了5个常量,并且有一个execute()方法

         Validateable:对字段进行验证

 

在手工完成字段验证,显示错误消息,国际化等情况下,推荐继承 ActionSupport。

 

 

 

Struts2中的result(结果)

1)       result是action节点的子节点

2)       result代表action方法执行后可能去的一个目的地

3)       一个action节点可以配置多个result子节点。

4)       Result的name属性值 ,对应的action方法可能有的一个返回值

5)       Result 一共有2个属性,还有一个是type:它表示结果的响应类型:可以

6)       Result 的type值在struts-default包下的result-types节点的name属性中定义的常用的有

a)         Dispatcher(默认的):转发同Servlet 中的转发

b)         Redirect:重定向

c)         RedirectAction:重定向一个Action

注意: 通过redirect 的响应类型也可以便捷的实现 redirectAction 的功能-

 

<result name="index" type="redirectAction">

       <param name="actionName">testAction</param>

        <param name="namespace">/atguigu</param>

</result>

 

Or

<result  name="index"  type="redirectAction">

/atguigu/testAction.do

</result>

d)         Chain:转发到一个Action

注意:不能通过type=dispatcher 的方式转发到一个Action

 

只能是:<result name="test" type="chain">

              <param name="actionName">testAction</param>

              <param name = "namespace">/atguigu</param>

       </result>

不能是

<result name="test">

       /atguigu/testAction.do

</result>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

通配符映射

 

一个Web应用可能有成百上千个action声明,可以利用Struts2提供的通配符映射机制把多个彼此项次的映射关系简化为一个映射关系,

 

1)  若找到多个匹配,没有通配符的那个胜出

2)  若指定的动作不存在,Struts将会尝试把这个URI与任何一个包含着通配符 * 的动作名进行匹配  (先精确匹配 ,后通配符匹配)

3)  通配符匹配到的URI字符串的自传可以用{1}{2}来引用,{1}匹配第一个字符串,{2}匹配第二个字符串…

4)  {0}匹配整个URI

5)  若Struts找到的带有的通配符的匹配不止一个,则按先后顺序进行匹配

意思就是:如果有多个含有通配符的字符串可以跟请求匹配的话 ,写在struts.xml文件中配置在前面的先匹配

 

       <action name="UserAction-*" class="com.atguigu.struts2.helloworld.UserAction"

       method="{1}">

           <result name="{1}-success">/success.jsp</result>

       </action>

      

       <action name="*-update" class="com.atguigu.struts2.helloworld.UserAction"

       method="test">

           <result name="query-success">/success.jsp</result>

       </action>

   

6)  * 可以匹配零个或多个字符,但不包括/字符,如果想把/字符包括在内,需要使用**,如果需要对某个字符进行转义,需要使用\.