这篇文章是在上一篇文章(http://blog.csdn.net/u012116457/article/details/48194905)的基础上写的,大家可以先快速阅读一下上一篇。
这篇文章用来写一下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;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getInfo() {
return info;
}
public void setInfo(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;
@Override
public 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+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>info</title>
</head>
<body>
<!-- 写法一 从request取 -->
${request.model.name}<br/>
${request.model.info}<br/>
<!-- 写法二 从值栈取(值栈后边再细究) -->
${model.name}<br/>
${model.info}<br/>
<!-- 简写 -->
${name}<br/>
${info}<br/>
</body>
</html>
上面就是模型驱动机制,缺少的代码在文章首部提供的链接中有。
版权声明:本文为博主原创文章,未经博主允许不得转载。