模型驱动是使用javaBean对象来封装请求参数,在整个MVC流程中可以直接使用这个对象。在发送请求后Struts将各个请求参数(javab的属性)封装到一个JavaBean对象中,Action接收这个实例对象并用该对象进行相关处理返回处理结果。
模型驱动的Action中定义javaBean并实例化,并且需要提供该JavaBean的getter和setter方法。Action需要实现ModelDriven接口。
采用模型驱动模式后,所有的处理结果都会封装在Model中。
下面是模型驱动的一个使用实例:
—————————-实体类————————–
package Model;
/**
* 实体bean
* @author user
*
*/
public class User {
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
——————-action—————————–
package action;
import Model.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
//实现ModelDriven接口,泛型为实体bean的类型,重写getModel方法
public class TestAction extends ActionSupport implements ModelDriven {
User user = new User();//一定要初始化bean对象
public void login(){
//不用request.getParameter获得参数值
System.out.println(user.getName());
System.out.println(user.getPwd());
}
// 重写getModel方法,返回实体bean
@Override
public User getModel() {
return this.user;
}
}
——————————-jsp页面——————-
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'login.jsp' starting page</title>
</head>
<!-- 这里的name属性要和实体bean的属性名称一样 -->
<body>
<form action="./Test_login.action" method="post">
用户名<input type="text" name="name" >
密码<input type="text" name="pwd">
<input type="submit" value="提交">
</form>
</body>
</html>