SSH學習之Struts2獲取表單數據

回憶

之前看了看自己出現的代碼問題,爲什麼會出現span標籤?原來是因爲我在添加代碼的時候更改了代碼的樣式,這樣的問題以後會在意的。在上一篇中介紹了SSH學習之Struts2中的Action,現在就介紹一下如何從前臺獲取表單數據。

爲什麼需要講解

在學習Servlet階段,我們知道是使用原始的Servlet語句通過HtttpServletRequest對象獲取前臺表單數據。但是如果我們需要獲取的表單數據太多的話,使用request對象就顯得代碼多餘。所以,Struts2的框架中提供了自己獲取表單數據的方法:屬性封裝模型驅動。目的是爲了減少開發人員的代碼量。

屬性封裝

屬性封裝主要的特點是提供get方法,不過最好也提供set方法。這是不需要我們自己寫代碼獲取表單數據的,而是Struts2自身帶有的一種機制。其底層代碼也是原始的Servlet代碼,只是Struts2將其進行了封裝而已。注意name屬性值和Action中的字段要相同,否則會抓取失敗
前臺:
<form action="${pageContext.request.contextPath }/testAttribute.action" method="post">
    	<label>用戶名:</label><input type="text" name="username"><br>
    	<label>密碼:</label><input type="password" name="password"><br>
    	<input type="submit" value="提交">
</form>
後臺:
public class TestAttributeAction extends ActionSupport {
	private String username;
	private String password;
	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;
	}

	@Override
	public String execute() throws Exception {
		System.out.println(this.getUsername()+","+this.getPassword());
		return NONE;
	}
}

模型驅動ModelDriven(推薦使用)

模型驅動說的也是封裝的,他出現的主要目的就是爲了減少屬性封裝中出現的問題,也就是減少Action的代碼量,使分層更加清楚。最主要的特點是有一個純實體類以及實現攔截器。具體步驟:
實體類:

public class User implements Serializable {

	private String username;
	private String password;
	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;
	}
}

Action類:必須要實現ModelDriven接口,必須要實例化實體類(new命令),必須返回user對象。

public class TestModelAction extends ActionSupport implements ModelDriven<User> {
	private User user = new User();
	@Override
	public User getModel() {
		// TODO Auto-generated method stub
		return user;
	}
	@Override
	public String execute() throws Exception {
		System.out.println(user.getUsername() + "," + user.getPassword());
		return SUCCESS;
	}
}

問題

但是在實際開發中,我們經常遇見確認密碼、驗證碼等功能,那麼這些功能怎麼實現呢?這就需要驗證的概念了。驗證下一篇再筆記吧。

多餘的話

這是我的理解,多多見諒奮鬥






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章