-
一、概述
所谓模型驱动,就 是使用单独 的JavaBean实例贯穿整个MVC流程,与之相对应 的属性驱动方式,则使用属性作为贯穿MVC流程 的信息携带者。属性无法独立存下,它必须依附于一个对象,这个对象就 是Action实例。简单来说,模型驱动使用单独 的值对象来封装请求参数和处理结果, 属性驱动则使用Action实例来封装请求参数和处理结果。回到顶部二、应用实例以前文提到 的LoginAction为例,在 属性驱动中 的action为:
public class LoginAction extends ActionSupport { private static final long serialVersionUID = -5377305857336513025L; private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String execute() throws Exception { if(getUsername().equals("xujian")&&getPassword().equals("123456")) { ActionContext.getContext().getSession().put("user", username); return SUCCESS; } else return ERROR; } }
而在模型驱动中,我们通常上述 的action分解为如下两个类:/* * 用于封装请求参数和处理结果 */ public class UserBean { private String username; private String password; private String tip; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getTip() { return tip; } public void setTip(String tip) { this.tip = tip; } }
还提供一个包含处理逻辑 的Action类:public class LoginAction implements Action,ModelDriven<UserBean> { private UserBean model=new UserBean(); @Override public UserBean getModel() { return model; } @Override public String execute() throws Exception { if(getModel().getUsername().equals("xujian")&&getModel().getPassword().equals("123")) { getModel().setTip("哈哈,登录成功"); return SUCCESS; } else return ERROR; } }
从上述代码我们可以看到,在模型驱动模式中,Action必须 实现ModelDriven接口,并 实现getModel()方法,该方法用于把Action和与之对应 的Moel实例关联起来。在struts-default.xml文件中,我们看到该文件配置了两个拦截器引用params和modelDriven,其中params拦截器负责提取请求参数,如果使用 属性驱动模式,还负责将请求参数传递给Action实例 的属性,而modelDriven拦截器负责将请求参数传递给模型 的属性。<interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>
struts模型驱动和属性驱动
最新推荐文章于 2018-08-09 12:22:00 发布