ModelDriven模型驱动

这篇文章是在上一篇文章()的基础上写的,大家可以先快速阅读一下上一篇。

这篇文章用来写一下struts中的模型驱动机制modelDriven

1.为什么要用modelDriven

struts中Action 用来处理业务逻辑,如果向上一篇文章中的做法,把实体类的属性及get set方法都写在action中,会是代码比较混乱。根据分层的思想,我们可以将其封装为实体bean。 而要在action中使用该bean,就要使用ModelDriver(模型驱动),使用ModelDriver的类要继承ModelDriven类。

2.下面通过一个实例来看一下具体的使用方法

struts.xml和web.xml依然和上一篇中配置的一样。

不同的是将表单中涉及的属性封装为了一个bean.如下:

package bean;public class UserBean {//封装表单项,即表单中有的字段,,且要相对应private String name;private String password;//封装非表单项,即表单中没有该属性,此处info用来存放服务器返回给页面的信息private String info;public String getName() {return name;}(String name) {this.name = name;}public String getPassword() {return password;}(String password) {this.password = password;}public String getInfo() {return info;}(String info) {this.info = info;}}LoginAction.java修改为如下:

package action;

import bean.UserBean;

import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven;

public class LoginAction extends ActionSupport implements ModelDriven{

private UserBean model;@Overridepublic UserBean getModel() {if(model == null){model = new UserBean();}return model;}public String index(){return “index”;}public String execute(){//会自动取出页面表单中的值if(“sa”.equals(this.getModel().getName().trim())&&”aaaaaa”.equals(this.getModel().getPassword().trim())){this.getModel().setInfo(“登陆成功”);return SUCCESS;}{this.getModel().setInfo(“登陆失败”);return LOGIN;}}

} welcome.jsp修改如下:

<%@ page language=”java” import=”java.util.*” pageEncoding=”utf-8″%><%String path = request.getContextPath();String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;%>>>info><!– 写法一 从request取 –>${request.model.name}<br/>${request.model.info}<br/><!– 写法二 从值栈取(值栈后边再细究) –>${model.name}<br/>${model.info}<br/><!– 简写 –>${name}<br/>${info}>上面就是模型驱动机制,缺少的代码在文章首部提供的链接中有。

当花儿枯萎的时候,就是它生命终结的时候,

ModelDriven模型驱动

相关文章:

你感兴趣的文章:

标签云: