首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Action对象

一、认识Action对象

在Action接口中,包含5个静态变量,它们是Struts 2 API为处理结果定义的静态变量,具体的含义如下。

(1)SUCCESS

静态变量SUCCESS代表Action执行成功的返回值,在Action执行成功的情况下需要返回成功页面,则可设置返回值为SUCCESS。

(2)NONE

静态变量NONE代表Action执行成功的返回值,但不需要返回到成功页面,主要用于处理不需要返回结果页面的业务逻辑

(3)ERROR

静态变量ERROR代表Action执行失败的返回值,在一些信息验证失败的情况下可以使Action返回此值。

(4)INPUT

静态变量INPUT代表需要返回某个输入信息页面的返回值,如在修改某此信息时加载数据后需要返回到修改页面,即可将Action对象处理的返回值设置为INPUT。

(5)LOGIN

静态变量LOGIN代表需要用户登录的返回值,如在验证用户是否登录时Action验证失败并需要用户重新登录,即可将Action对象处理的返回值设置为LOGIN。

二、请求参数的注入原理

在Struts 2框架之中,表单提交的数据会自动注入到与Action对象中相对应的属性,它与Spring框架中的IoC注入原理相同,通过Action对象为属性提供setter方法进行注入。例如,创建UserAction类,并提供一个username属性,其代码如下:

需要注入属性值的Action对象必须为属性提供setter()方法,因为Struts 2的内部实现是按照JavaBean规范中提供的setter()方法自动为属性注入值的。

由于Struts 2中Action对象的属性通过其setter()方法注入,所以需要为属性提供setter()方法。但在获取这个属性的数值时需要通过getter()方法,因此在编写代码时最好为Action对象提供setter()与getter()方法。

三、Action的基本流程

Struts 2框架主要通过Struts的过滤器对象拦截HTTP请求,然后将请求分配到指定的Action处理,其基本流程如下图所示:

说明:在Struts框架中,一个“*.action”请求的返回视图由Action对象决定。其实现方法是通过查找返回的字符串为success,那么Struts 2就会在配置文件中查找名为success的配置项,并返回这个配置项对应的视图。

四、动态Action

前面所讲解的Action对象都是通过重写execute()方法处理浏览器请求,此种方法只适合比较单一的业务逻辑请求。但在实际的项目开发中业务请求的类型多种多样(如增、删、该和查一个对象的数据),如果通过创建多个Action对象并编写多个execute()方法来处理这些请求,那么不仅处理方式过于复杂,而且需要编写很多代码。当然处理这些请求的方式有多种方法,如可以将这些处理逻辑编写在一个Action对象中,然后通过execute()方法来判断请求的是哪种业务逻辑,在判断后将请求转发到对应的业务逻辑处理方法上,这也是一种很好的解决方案。

在Struts 2框架中提供了Dynamic Action这样一个概念,称为动态Action。通过动态请求Action对象中的方法实现某一业务逻辑的处理。应用动态Action处理方式如下图所示:

从图中可以看出,动态Action处理方式通过请求Action对象中的一个具体方法来实现动态操作,操作方式是通过在请求Action的URL地址后方加上请求字符串(方法名)与Action对象中的方法搭配,注意Action地址与请求字符串之间以“!”号分隔。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180203G0EDES00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券