Struts2之Action对象及相关配置

mac2022-06-30  98

一、Action对象

  Action对象是Struts2框架中的重要对象,主要用于对HTTP请求进行处理,在Struts2 API中,Action对象是一个接口,位于com.opensymphony.xwork2包中。在Struts2项目开发中,创建Action对象都要直接或间接实现此对象。

  在Action接口中,包含了5个静态成员变量:

静态变量SUCCESS,代表Action执行成功的返回值。如果在Action执行成功的情况下,需要返回到成功的页面,此时就可以将返回值设置为SUCCESS。静态变量NONE,代表Action执行成功的返回值,但不需要返回到成功的页面。主要用于处理不需要返回结果页面的业务逻辑。静态变量ERROR,代表Action执行失败的返回值。如在一些信息验证失败的情况下,可以使Action返回此值。静态变量INPUT,代表需要返回到某个输入信息的页面的返回值。如在修改某些信息时,加载数据后需要返回到修改页面,此时就可以将Action对象的返回值设置为INPUT。静态变量LOGIN,代表需要用户登录的返回值。如在验证用户是否登录时,Action验证失败,需要用户重新登录,此时就可以将Action对象的返回值设置为LOGIN。

 

二、请求参数的注入

  在Struts2框架中,表单提交的数据会自动注入到与Action对象相对应的属性。通过Action对象为属性提供setter方法进行注入。

  基本流程:

    Struts2框架的工作,主要是通过Struts2的过滤器对象拦截HTTP请求,然后将请求分配到指定的Action进行处理。由于在Web项目中配置的是Struts2过滤器,所以当浏览器向Web容器发送一个HTTP请求时,      Web容器就要调用Struts2过滤器的doFilter()方法。此时Struts2就接收到了HTTP请求,通过Struts2的内部处理机制,它会判断这个HTTP请求是否与某个Action对象相匹配。如果找到了与之匹配的Action,就会        调用Action对象的execute()方法,并根据处理结果返回相应的值,然后Struts2就会通过Action的返回值查找返回值所映射的页面,最后通过一定的视图回应给浏览器。

 

三、动态Action

  动态Action的处理方式,是通过请求Action对象中一个具体的方法来实现的操作,具体方式,是在Action的URL地址后方加上请求的字符串(方法名称),与Action对象的方法进行匹配,Action对象地址ui请求字符串之间以“!”进行分隔。例如:

1     <body> 2       <a href="userAction!add">添加用户</a> 3       <a href="userAction!updatee">更新用户</a> 4 5     </body> View Code

 

  可知,Action请求的处理方式并非一定要通过execute()方法进行处理,使用动态Action的处理方式更加方便。所以,在实际开发中个,可以将同模块的一些请求封装到一个Action对象中,使用Struts2提供的动态Action对不同请求进行处理。

 

四、Struts2的相关配置

  <1> Struts2的配置文件主要有4个,如下。

Struts2框架的配置文件 名称说明struts-default.xml位于struts2-core-2.1.14.1.jar文件的org.apache.struts2包中struts-plugin.xml位于Struts2提供的各个插件的包中struts.xmlWeb应用默认的Struts2配置文件struts.propertiesStruts2框架中属性配置文件web.xml在该文件中也可以设置Struts2框架的一些信息

 

 

 

 

 

  <2> Struts2的包配置

1 <struts> 2 <!-- 声明包--> 3 <package name="user" extends="struts-default" namespace="/user"> 4 ...... 5 </package> 6 </struts> View Code <package>元素所包含的的属性及说明 名称说明name声明包的名称,以方便在其他地方引用此包,此属性是必须的extends用于声明继承的包,也就是它的父包namespace指定名称空间,也就是访问此包下的Action需要访问的路径abstract将包声明为抽象类型(包中不定义action)

 

 

 

 

 

  <3> Struts2中Action的对象相关配置

  Action对象起到一个控制器的作用,Struts2框架通过Action对象处理HTTP请求。  

1 <action name="userAction" class="com.wyao.action.UserAction" method="save"> 2 <result>success.jsp</result> 3 </action> View Code <action>元素的属性及说明 属性说明name用于配置Action对象被请求的URL映射class指定Action对象的类名method设置请求Action对象时,调用Action对象的哪一个方法converter指定Action对象类型转换器的类

 

 

 

 

 

  调用一个Action对象,默认情况下,它执行的是execute()方法。如果需要请求指定的方法,就可以通过<action>元素的method属性进行配置,将一个请求交给指定的业务逻辑方法进行处理。使用Action元素的method属性,其属性值需要与Action对象中的方法名一致,Struts2框架是通过method属性值查找与之配置的方法。

  <4> Struts2通配符匹配值

  通配符的配置方式主要针对在非常多的Action的情况下,通过一定的命名约定,使用通配符来配置Action对象,达到简化。

  常用的通配符有两个,

通配符“*” : 匹配0或多个字符。通配符“\” :是一个转义字符,如需匹配“/”,则使用通配符“ V”。

  在struts.xml中,结果映射使用<result>元素进行映射,如:

1 <action name="register" class="com.shengsiyuan.struts2.RegisterAction"> 2 <!-- 结果映射 --> 3 <result>/user/Result.jsp</result> 4 <!-- 结果映射 --> 5 <result name="success">/registerResult.jsp</result> 6 <!-- 结果映射 --> 7 <result name="input" type="dispatcher">/register.jsp</result> 8 </action> View Code

  <result>元素有两个属性,name和type。其中name属性与Action对象中方法的返回值相对应,如果execute()方法返回值为input,那么,将<result>元素的name属性配置为input,对应Action对象返回值。type属性用于设置结果的返回值类型,如请求转发、重定向等。如果不设置<result>元素的name属性,那么默认为success。

 

       

 

转载于:https://www.cnblogs.com/Wyao/p/7015715.html

最新回复(0)