在struts2中,action在MVC中充当模型还是控制器角色?

在struts2中,action在MVC中充当模型还是控制器角色?

在struts2中,action可以定义属性和相应的getter和setter方法,就是来接收用户的请求数据的,action并把这些数据封装,在后续处…
关注者
13
 
被浏览
2316
 

5 个回答

当然是控制器了,里面虽然有相应的数据,并且有get 和set 方法,不过这些参数都是控制器进行控制转发处理逻辑的时候需要的数据,比如之前你单写Servlet的时候,Request和Response里面总要读取和填充数据吧?
现在全部交由Struts2的Action组件来做了,懂否?
比如下面的例子
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.dao.AdminDao;
import com.dao.StudentDao;
import com.dao.TeacherDao;
import com.opensymphony.xwork2.ActionSupport;

public class GoLogin extends ActionSupport {

	//下面是Action内用于封装用户请求参数和响应参数的属性
	private String Type;
	private String Username;
	private String Password;
	private String Msg;
	public String getType() {
		return Type;
	}
	public void setType(String type) {
		Type = type;
	}
	public String getUsername() {
		return Username;
	}
	public void setUsername(String username) {
		Username = username;
	}
	public String getPassword() {
		return Password;
	}
	public void setPassword(String password) {
		Password = password;
	}
	public String getMsg() {
		return Msg;
	}
	public void setMsg(String msg) {
		Msg = msg;
	}
	//处理用户请求的execute方法
	public String execute() throws Exception {
		
		System.out.println(Username + " " + Password);
		
		if(Type.equals("系统管理员"))
		{
			if (null == new AdminDao().CheckLogin(Username, Password)) {
				Msg = "用户名或者密码错误";
				return INPUT;
			}
			else
			{
				//获取ID
				String Admin_ID=new AdminDao().CheckLogin(Username, Password);
				//创建session
				HttpSession session = ServletActionContext.getRequest().getSession();
				session.setAttribute("id", Admin_ID);
				session.setAttribute("type", "1");
				return SUCCESS;
			}
		}
		else if(Type.equals("楼宇管理员"))
		{
			if (null == new TeacherDao().CheckLogin(Username, Password)) {
				Msg = "用户名或者密码错误";
				return INPUT;
			}
			else
			{
				//获取ID
				String Teacher_ID=new TeacherDao().CheckLogin(Username, Password);
				//创建session
				HttpSession session = ServletActionContext.getRequest().getSession();
				session.setAttribute("id", Teacher_ID);
				session.setAttribute("type", "2");
				
				return SUCCESS;
			}
		}
		else if(Type.equals("学生"))
		{
			if (null == new StudentDao().CheckLogin(Username, Password)) {
				Msg = "用户名或者密码错误";
				return INPUT;
			}
			else
			{
				//获取ID
				String Student_ID=new StudentDao().CheckLogin(Username, Password);
				//创建session
				HttpSession session = ServletActionContext.getRequest().getSession();
				session.setAttribute("id", Student_ID);
				session.setAttribute("type", "3");
				return SUCCESS;
			}
		}
		else
		{
			Msg = "身份类型错误";
			return INPUT;
		}
		
	}
}
Type UserName PassWord 本来应该从Request对象的getParameter方法中获取的,不过现在全部封装隐藏了,返回值msg也封装了,这是response中body的数据,就这样。。。。。
 

当然是控制器啦。

拿action当模型用,是m和c没分开。

所以,学技术必须看官方文档,二手知识要不得!
 
posted @ 2017-11-23 15:50  sky20080101  阅读(119)  评论(0)    收藏  举报