Struts2学习笔记(五)-----Struts2的三种数据封装方式

编写一个实体类 User

package czm.struts2.domain;

import java.util.Date;

public class User {
    private String username;
    private String password;
    private Integer age;
    private Date birthday;
    private Double salary;
	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 Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public Double getSalary() {
		return salary;
	}
	public void setSalary(Double salary) {
		this.salary = salary;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + ", age=" + age + ", birthday=" + birthday
				+ ", salary=" + salary + "]";
	}
	
    
}

方式一:属性驱动:提供属性set方法的方式(不常用

1 、编写JSP页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Struts2的数据封装</h1>
<h3>方式一:属性驱动-提供set方法的方式</h3>
<form action="${ pageContext.request.contextPath }/userAction1.action" method="post">
	用户名:<input type="text" name="username"/><br/>
	密码:<input type="password" name="password"><br/>
	年龄:<input type="text" name="age"/><br/>
	生日:<input type="text" name="birthday"/><br/>
	工资:<input type="text" name="salary"/><br/>
	<input type="submit" value="注册">
</form>
</body>
</html>

2 、编写 Action 类(提供对应的属性及set方法

package czm.struts2.demo2;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

import czm.struts2.domain.User;
/**
 * 数据封装的方式一:提供属性的set方法的方式
 * @author ASUS
 *
 */
public class UserAction1 extends ActionSupport {
   
	    //提供对应的属性及set方法 接收数据
	    private String username;
	    private String password;
	    private Integer age;
	    private Date birthday;
	    private Double salary;
	    	
	public void setUsername(String username) {
			this.username = username;
		}


		public void setPassword(String password) {
			this.password = password;
		}


		public void setAge(Integer age) {
			this.age = age;
		}


		public void setBirthday(Date birthday) {
			this.birthday = birthday;
		}


		public void setSalary(Double salary) {
			this.salary = salary;
		}


	@Override
    public String execute() throws Exception {
    	// 输出打印接收的数据
		System.out.println(username);
		System.out.println(password);
		System.out.println(age);
		System.out.println(birthday);
		System.out.println(salary);
		// 封装数据:
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		user.setAge(age);
		user.setBirthday(birthday);
		user.setSalary(salary);
    	return NONE;
    }
}

3 、编写xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
   <package name="demo2" extends="struts-default" namespace="/">
       <!-- 属性驱动:提供属性set方法的方式配置 -->
       <action name="userAction1" class="czm.struts2.demo2.UserAction1">
           
       </action>
                
   </package>

	
</struts>

4 、访问 JSP 页面

5 、输入数据,点击注册 

 

获取到输入信息完成封装:

方式二:属性驱动:在页面中提供表达式的方式

1 、编写JSP页面(在name属性值中 提供了表达式,如 name="user.username"

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Struts2的数据封装</h1>
<h3>方式一:属性驱动-提供set方法的方式</h3>
<form action="${ pageContext.request.contextPath }/userAction1.action" method="post">
	用户名:<input type="text" name="username"/><br/>
	密码:<input type="password" name="password"><br/>
	年龄:<input type="text" name="age"/><br/>
	生日:<input type="text" name="birthday"/><br/>
	工资:<input type="text" name="salary"/><br/>
	<input type="submit" value="注册">
</form>


<h3>方式二:属性驱动-在页面中提供表达式方式</h3>
<form action="${ pageContext.request.contextPath }/userAction2.action" method="post">
	用户名:<input type="text" name="user.username"/><br/>  <!-- 在name属性值中 提供了表达式 -->
	密码:<input type="password" name="user.password"><br/>
	年龄:<input type="text" name="user.age"/><br/>
	生日:<input type="text" name="user.birthday"/><br/>
	工资:<input type="text" name="user.salary"/><br/>
	<input type="submit" value="注册">
</form>
</body>
</html>

2 、编写 Action 类 (创建一个 User 对象

package czm.struts2.demo2;


import com.opensymphony.xwork2.ActionSupport;

import czm.struts2.domain.User;
/**
 * 数据封装的方式二 :属性驱动-在页面中提供表达式的方式
 * @author ASUS
 *
 */
public class UserAction2 extends ActionSupport{
    
	// 提供一个User对象:
		private User user;
		// 提供user的set和get方法:一定要提供get方法。
		// 因为拦截器完成数据封装,需要创建User对象。通过get方法可以获得同一个对象,将数据封装到同一个对象中。
		public User getUser() {
			return user;
		}

		public void setUser(User user) {
			this.user = user;
		}
		
	@Override
    public String execute() throws Exception {
		 System.out.println(user);
    	return NONE;
    }


}

3 、编写xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
   <package name="demo2" extends="struts-default" namespace="/">
       <!-- 属性驱动:提供属性set方法的方式配置 -->
       <action name="userAction1" class="czm.struts2.demo2.UserAction1"></action>
         
       <!-- 属性驱动:在页面中提供表达式的方式配置 -->
       <action name="userAction2" class="czm.struts2.demo2.UserAction2"></action>  
                
   </package>

	
</struts>

4 、访问 JSP 页面

5 、输入数据,点击注册 

获取到输入信息完成封装:

方式三:模型驱动-采用模型驱动的方式(常用

1 、编写JSP页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Struts2的数据封装</h1>
<h3>方式一:属性驱动-提供set方法的方式</h3>
<form action="${ pageContext.request.contextPath }/userAction1.action" method="post">
	用户名:<input type="text" name="username"/><br/>
	密码:<input type="password" name="password"><br/>
	年龄:<input type="text" name="age"/><br/>
	生日:<input type="text" name="birthday"/><br/>
	工资:<input type="text" name="salary"/><br/>
	<input type="submit" value="注册">
</form>


<h3>方式二:属性驱动-在页面中提供表达式方式</h3>
<form action="${ pageContext.request.contextPath }/userAction2.action" method="post">
	用户名:<input type="text" name="user.username"/><br/>  <!-- 在name属性值中 提供了表达式 -->
	密码:<input type="password" name="user.password"><br/>
	年龄:<input type="text" name="user.age"/><br/>
	生日:<input type="text" name="user.birthday"/><br/>
	工资:<input type="text" name="user.salary"/><br/>
	<input type="submit" value="注册">
</form>


<h3>方式三:模型驱动-模型驱动方式</h3>
<form action="${ pageContext.request.contextPath }/userAction3.action" method="post">
	用户名:<input type="text" name="username"/><br/>
	密码:<input type="password" name="password"><br/>
	年龄:<input type="text" name="age"/><br/>
	生日:<input type="text" name="birthday"/><br/>
	工资:<input type="text" name="salary"/><br/>
	<input type="submit" value="注册">
</form>
</body>
</html>

2 、编写 Action 类(实现ModelDriven 接口---- implements ModelDriven<User>

package czm.struts2.demo2;

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

import czm.struts2.domain.User;
/**
 * 数据封装的方式三:模型驱动-采用模型驱动的方式
 * @author ASUS
 *
 */
public class UserAction3 extends ActionSupport implements ModelDriven<User>{
	// 模型驱动使用的对象:前提必须手动提供对象的实例
	private User user = new User(); 
	
	@Override
	public User getModel() {
		
		return user;
	}
	
	@Override
    public String execute() throws Exception {
		System.out.println(user);
    	return NONE;
    }


}

3 、编写xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
   <package name="demo2" extends="struts-default" namespace="/">
       <!-- 属性驱动:提供属性set方法的方式的配置 -->
       <action name="userAction1" class="czm.struts2.demo2.UserAction1"></action>
         
       <!-- 属性驱动:在页面中提供表达式的方式的配置 -->
       <action name="userAction2" class="czm.struts2.demo2.UserAction2"></action>  
       
       <!-- 模型驱动-采用模型驱动的方式的配置 -->
       <action name="userAction3" class="czm.struts2.demo2.UserAction3"></action>  
                
   </package>

	
</struts>

4 、访问 JSP 页面

5 、输入数据,点击注册 

备注

模型驱动方式是最常用的方式: 缺点:只能同时向一个对象中封装数据。

但使用属性驱动:在页面中提供表达式的方式可以向多个对象中同时封装数据

猜你喜欢

转载自blog.csdn.net/Rachel_pan/article/details/87775172
今日推荐