Struts学习(三):参数封装

Struts学习(三):参数封装

1.静态参数封装

		<action name="action1" class="action.Demo1Action" method="addUser">
			<!-- 使用注入的方式,给动作类的参数赋值 -->
			<param name="username">aaa</param>
			<param name="password">bbb</param>
		</action>

2.动态参数封装

2.1动态参数封装的第一种方式(数据模型与动作类写在一起)
    import com.opensymphony.xwork2.ActionSupport;
    
    
    /**
     * 动作参数封装,第一种情况:
     * 			数据模型与动作类写在一起
     * 
     * */
    public class Demo2Action extends ActionSupport {
    
    	private String username;
    	private String password;
    	
    	public String addUser(){
    		System.out.println(username+","+password);
    		return null;//不返回任何结果视图,NONE常量
    	}
    	
    	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;
    	}
    	
    }

表单中的name属性必须和动作类中的实体的属性名相同

		<form action="${pageContext.request.contextPath }/action2.action" method="post">
		<%--表单中的name属性必须和动作类中的实体的属性名相同 --%>
			用户名:<input name="username" type="text"><br/>
			密码:<input name="password" type="text"><br/>
			<input type="submit" value="提交">
		</form>
2.2动态参数封装的第二种方式(数据模型与动作类分开)
    import com.opensymphony.xwork2.ActionSupport;
    
    import domain.User;
    
    
    /**
     * 动作参数封装,第二种情况:
     * 			数据模型与动作类分开
     * 
     * */
    public class Demo3Action extends ActionSupport {
    
    	//定义数据模型对象
    	private User user;
    	
    	public User getUser() {
    		return user;
    	}
    
    	public void setUser(User user) {
    		this.user = user;
    	}
    
    	public String addUser(){
    		System.out.println(user.getUsername()+","+user.getPassword());
    		return null;//不返回任何结果视图,NONE常量
    	}
    }

表单中的name属性必须是对象.属性名

		<form action="${pageContext.request.contextPath }/action3.action" method="post">

			用户名:<input name="user.username" type="text"><br/>
			密码:<input name="user.password" type="text"><br/>
			<input type="submit" value="提交">
		</form>

原理:

1. Struts框架,先调用getUser方法,看看对象是否存在,如果不存在,反射为我们创建一个对象

2. 如果对象不存在,创建一个对象,调用setUser方法

3. 存在不存在都再次调用getUser方法,得到该对象,调用对应的set属性,为属性赋值

2.3动态参数封装的第三种方式(模型驱动)
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    
    import domain.User;
    
    
    /**
     * 动作参数封装,第三种情况:模型驱动
     * 			要想实现模型驱动,必须数据模型和动作类分开
     * 实现模型驱动的步骤:
     * 			1.实现一个ModelDriven的接口
     *			2.实现接口中的抽象方法getModel()
     *			3.在使用模型驱动的时候,数据模型必须由我们来实例化 
     * */
    public class Demo4Action extends ActionSupport implements ModelDriven<User>{
    
    	//定义数据模型对象
    	private User user = new User();
    
    	//该方法返回的是数据模型
    	public User getModel() {
    		return user;
    	}
    	
    	public User getUser() {
    		return user;
    	}
    
    	public void setUser(User user) {
    		this.user = user;
    	}
    
    	public String addUser(){
    		System.out.println(user.getUsername()+","+user.getPassword());
    		return null;//不返回任何结果视图,NONE常量
    	}
    }

表单中的name属性必须是实体中的属性名

		<form action="${pageContext.request.contextPath }/action4.action" method="post">
		<%--表单中的name属性必须是实体中的属性名 --%>
			用户名:<input name="username" type="text"><br/>
			密码:<input name="password" type="text"><br/>
			<input type="submit" value="提交">
		</form>

猜你喜欢

转载自blog.csdn.net/sconghw/article/details/81024333