Struts2中的Action对象

Action对象

Action介绍

Action充当MVC模式的控制器,响应用户操作,执行业务逻辑(或者调用其他类来执行),然后返回一个结果,告诉struts所要呈现的页面。
        Struts2 Action类通常扩展ActionSupport类,它由Struts2框架提供。类ActionSupport为常见的操作(执行,输入等)提供默认实现。例如execute方法。

Action处理表单输入

Action类最常见的职责之一是处理表单的用户输入,然后使处理的结果用于视图页面。表单中的数据会自动注入到Action对象中的对应属性,它与Spring框架中的IOC注入原理相同,通过Action对象提供的setter()方法进行注入。例如创建UserAction类,并提供一个username属性。关键代码如下:

public class UserAction extends ActionSupport{
		private String username;
		//为username提供setter方法
		public void setUsername(String username){
				this.username=username;
		}
		//为username提供getter方法
		public String getUsername(){
				return username;
		}

		public String excute(){
				return SUCCESS;
		}
}

Action的基本流程

(1)当浏览器向Web容器发送一个HTTP请求时,Web容器就会调用Struts2过滤器的doFilter()方法。
(2)Struts2接受HTTP请求,通过Struts2的内部处理机制就会判断这个请求是否与某个Action对象匹配。
(3)找到匹配的Action,就会调用对象的execute()方法,并根据结果反回相应的值。
(4)Struts2通过Action的返回值查找返回值所映射的页面。
(5)通过一定的视图回应给浏览器。
备注:在Struts2框架中,一个*.action请求的反回视图由Action对象决定。事实上,方法是通过查找反回的字符串对应的匹配项确定反回的视图,例如Action中的execute()方法反回字符串success,那么Struts2就会在配置文件中查找名为success的配置项,并反回这个配置项所对应的视图。

动态Action

        Action默认使用execute()方法来处理浏览器的请求,但是仅通过execute方法只适合比较单一的业务逻辑操作,在实际项目开发中业务请求类型多种多样,仅使用execute方法会使处理方式过于复杂。
        在Struts2框架提供了Dynamic Action这样一个概念,称为动态Action,通过动态请求Action对象中的方法来实现某一业务逻辑的处理。例如在配置文件中配置了userAction,请求其中的add()。

动态Action应用实例

(1)创建动态Web项目,将类库文件添加到WEB-INF目录下的lib文件夹中,然后在web.xml文件中注册Struts2提供的过滤器。
(2)创建名为UserAction的Action对象,并在其中分别编写add()和update()方法,用于处理添加和更新用户信息的请求并将请求反回到相应的页面。

package com.yy;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

	private String info;
	public String add() throws Exception{
		setInfo("添加用户信息!");
		return "add";
	}
	public String update() throws Exception{
		setInfo("修改用户信息!");
		return "update";
	}
	
	public void setInfo(String info) {
		this.info=info;
		
	}
	public String getInfo() {
		return info;
	}
}

(3)创建struts.xml文件





	
    
        
        
        	
            /user_add.jsp
            /user_update.jsp
            
            add,update
        
    


(4)创建user_add.jsp页面,作为成功添加信息的反回页面。


		

(5)创建user_update.jsp页面,作为成功修改信息返回页面。


		

(6)程序的首页index.jsp,其中添加两个超链接。通过Struts2提供的动态Action功能将这两个超链接请求分别指向于UserAction类的添加与更新用户信息的请求。关键代码如下:


		添加用户
		修改用户

(7)主页面显示如下:
在这里插入图片描述
单击“添加用户”超链接,请求交给UserAction的add()方法处理,通过add方法返回显示user_add.jsp页面。
在这里插入图片描述
单击“修改用户”超链接,请求交给UserAction的update()方法处理,通过update方法返回显示user_update.jsp页面。
在这里插入图片描述

你可能感兴趣的:(Struts2框架,java,struts2)