一、认识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地址与请求字符串之间以“!”号分隔。
领取专属 10元无门槛券
私享最新 技术干货