struts属性驱动与模型驱动

Struts2的属性驱动是使用Action的属性来封装来回请求参数和处理结果,即在jsp页面的每一个form中的name都对应在action中有一个属性与之对应。
Struts2的模型驱动的意思是使用单独的JavaBean来封装请求参数和处理结果。
一、属性驱动(1)
User JavaBean代码如下:
package com.hsinghsu.testSSH.model;

public class User {
	
	private Long id;  
    private String name;  
    private String pwd;
    
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	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 com.hsinghsu.testSSH.action;

import org.springframework.beans.factory.annotation.Autowired;

import com.hsinghsu.testSSH.service.UserService;

public class LoginAction extends BaseAction {

	/**
	 * 
	 */
	private static final long serialVersionUID = -6144396976094110475L;
	
	@Autowired
	private UserService userService; 
	
	private String username;  
	private String password;
	
	public String execute() throws Exception 
	{  
		System.out.println("username:"+username+" password:"+password);
		if(userService.login(username,password))  
		{
            return "success";  
		}
        return "error";  
    }

	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;
	}  
	
}
struts.xml配置如下:
<action name="mylogin" class="com.hsinghsu.testSSH.action.LoginAction"> 
            <result name="success">/jsp/welcome.jsp</result>
            <result name="error">/jsp/login.jsp</result>
        </action>
login.jsp代码如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
	<form action="mylogin.action" method="post">  
        Username:<input type="text" name="username"/><br/>  
        Password:<input type="password" name="password"/><br/>  
        <input type="submit" value="Submit"/>   
    </form>
</body>
</html>
welcome.jsp代码如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>IWelcome</title>
</head>
<body>
Welcome <s:property value="username"/>
</body>
</html>
二、属性驱动(2):
action代码如下:
package com.hsinghsu.testSSH.action;

import org.springframework.beans.factory.annotation.Autowired;

import com.hsinghsu.testSSH.model.User;
import com.hsinghsu.testSSH.service.UserService;

public class NoUserDrivenLoginAction extends BaseAction {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3116586181830026380L;

	private User user;
	
	@Autowired
	private UserService userService;
	
	public String execute() throws Exception 
	{  
		System.out.println("username:"+user.getName()+" password:"+user.getPwd());
		if(userService.login(user.getName(),user.getPwd()))  
		{
            return "success";  
		}
        return "error";  
    }

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

}
struts.xml配置如下:
<action name="noDrivenLogin" class="com.hsinghsu.testSSH.action.NoUserDrivenLoginAction"> 
            <result name="success">/jsp/noDrivenWelcome.jsp</result>
            <result name="error">/jsp/noDrivenLogin.jsp</result>
        </action>
noDrivenLogin.jsp代码如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
	<form action="noDrivenLogin.action" method="post">  
        Username:<input type="text" name="user.name"/><br/>  
        Password:<input type="password" name="user.pwd"/><br/>  
        <input type="submit" value="Submit"/>   
    </form>
</body>
</html>
noDrivenWelcome.jsp代码如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>IWelcome</title>
</head>
<body>
Welcome <s:property value="user.name"/>
</body>
</html>
三、模型驱动:
在模型驱动中,action类需要继承ModelDriven接口,并必须要实现getModel()方法。
action代码如下:
package com.hsinghsu.testSSH.action;

import org.springframework.beans.factory.annotation.Autowired;

import com.hsinghsu.testSSH.model.User;
import com.hsinghsu.testSSH.service.UserService;
import com.opensymphony.xwork2.ModelDriven;

public class UserDrivenLoginAction extends BaseAction implements ModelDriven<User>{

	/**
	 * 
	 */
	private static final long serialVersionUID = -3116586181830026380L;

	private User user = new User();
	
	@Autowired
	private UserService userService;
	
	public String execute() throws Exception 
	{  
		System.out.println("username:"+user.getName()+" password:"+user.getPwd());
		if(userService.login(user.getName(),user.getPwd()))  
		{
            return "success";  
		}
        return "error";  
    }

	@Override
	public User getModel() {
		return user;
	}

}
struts.xml配置如下:
<action name="drivenLogin" class="com.hsinghsu.testSSH.action.UserDrivenLoginAction"> 
            <result name="success">/jsp/drivenWelcome.jsp</result>
            <result name="error">/jsp/drivenLogin.jsp</result>
        </action>
drivenLogin.jsp代码如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
	<form action="drivenLogin.action" method="post">  
        Username:<input type="text" name="name"/><br/>  
        Password:<input type="password" name="pwd"/><br/>  
        <input type="submit" value="Submit"/>   
    </form>
</body>
</html>
drivenWelcome.jsp代码如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>IWelcome</title>
</head>
<body>
Welcome <s:property value="name"/>
</body>
</html>

你可能感兴趣的:(struts属性驱动与模型驱动)