Struts的屬性驅動和模型驅動

struts2中咱們能夠使用Model-DrivenProperty-Driven進行表單數據的封裝,便於咱們在Action中直接使用java

屬性驅動時,只要保持表單域名字和Action屬性名一致,便可自動進行值得填充。apache

第一種數組

http://localhost:8080/Struts/paramter?username=aa&password=bb

訪問的路徑和參數username=aa&password=bb框架

代碼jsp

package org.heinrich.action;

import com.opensymphony.xwork2.ActionSupport;

public class ParamterAction extends ActionSupport {
	

	private static final long serialVersionUID = -8556185601880040463L;
	private String username;
	private String password;
	
	public String login(){
		
		System.out.println(username);
		System.out.println(password);
		
		return SUCCESS;
	}
	
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}

}

hr-user.xml文件ide

<action name="paramter" class="org.heinrich.action.ParamterAction" method="login">
    <result>/success.jsp</result>			
</action>

在Action中直接能夠拿到this

username :heinrich
password :123456

在頁面上我要拿到username和passowrd的話spa

username : ${username }
password : ${password }

框架會爲你把username和password傳到下一個頁面code

username : heinrich password : 123456

還有一個屬性驅動的方式xml

http://localhost:8080/Struts/paramter?user.username=heinrich&user.password=123456

參數傳遞方式user.username=heinrich&user.password=123456

package org.heinrich.action;


import org.heinrich.User;

import com.opensymphony.xwork2.ActionSupport;

public class ParamterAction extends ActionSupport {
	

	private static final long serialVersionUID = -8556185601880040463L;
	private User user;
	
	public String login(){
		
		System.out.println(user.getUsername());
		System.out.println(user.getPassword());
		
		return SUCCESS;
	}

	public User getUser() {
		return user;
	}

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

獲取前臺傳過來的參數,還會把他放到下個頁面使用

頁面取值
		username : ${user.username }
		password : ${user.password }

還有一種基於模型驅動的方式,官方不推薦使用,我比較喜歡用官方的

package org.heinrich.action;


import org.heinrich.User;

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

public class ParamterAction extends ActionSupport implements ModelDriven<User>{
	

	private static final long serialVersionUID = -8556185601880040463L;
	private User user = new User();
	
	public String login(){
		
		System.out.println(user.getUsername());
		System.out.println(user.getPassword());
		
		return SUCCESS;
	}


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


	public User getUser() {
		return user;
	}


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

在我看來這種方式不錯,用來作Abstract類的Action的時候很好用

其實還有

方法3:能夠經過ActionContext對象Map  parameterMap=context.getParameters();方法,獲得請求參數Map,而後經過parameterMap來獲取請求參數。須要注意的是:當經過parameterMap的鍵取得參數值時,取得是一個數組對象,即同名參數的值的集合。 

package org.heinrich.action;


import java.util.Map;

import org.heinrich.User;

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

public class ParamterAction extends ActionSupport{
	

	private static final long serialVersionUID = -8556185601880040463L;
	
	
	public String login(){
		
		Map<String, Object> contextMap = ActionContext.getContext().getParameters();
		
		for(String key:contextMap.keySet()){
			Object object = contextMap.get(key);
			System.out.println(key+"  :"+object.toString());
		}
		
		return SUCCESS;
	}


}


方法4:經過ActionContext取得HttpServletRequest對象,而後使用request.getParameter("參數名")獲得參數值。

package org.heinrich.action;


import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.heinrich.User;

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

public class ParamterAction extends ActionSupport{
	

	private static final long serialVersionUID = -8556185601880040463L;
	
	
	public String login(){
		
		HttpServletRequest request =(HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
		
		String username = request.getParameter("user.username");
		String password = request.getParameter("user.password");
		System.out.println(username);
		System.out.println(password);
		request.setAttribute("username", username);
		request.setAttribute("password", password);
		
		return SUCCESS;
	}


}
相關文章
相關標籤/搜索