SpringMvc的自動注入與Struts2的區別

項目中難免使用到傳值,從前臺form表單傳到後臺控制層,還記得剛開始學習的時候使用的方法嗎,在表單添加name,然後再後臺通過request.getParament獲取的方式,這當然是可以的,但是這樣難免有點麻煩,畢竟要考慮表單數據的變動和後期的維護,加入真的要增加一個字段,最好的方式是通過angular.js或者Vue.js框架來維護,畢竟讓現實和數據脫離可以減低頁面的耦合,修改的時候也簡單容易。小項目中可以在表單中直接改寫name。

說到用框架,可以解決這樣的麻煩,比如在前臺name給個和後臺model層對應的字段,可以很輕鬆的拿到前臺的值,框架提供的自動注入減少了人工手寫出錯的可能性。

如果使用struts框架:假如後臺有一個這樣的Bean

class Student{
     private String name;
     //..getter setter
}
前臺表單
<form>
<input type="text" name="student.name"/>
</form>

struts的框架action層

public myAction implements Action{
<span style="white-space:pre">	</span>private Student student;//這樣就可以獲取到前臺的數據,還行
<span style="white-space:pre">	</span>//others<span style="white-space:pre">	</span>
}


如果使用SpringMVC框架:和struts差不多

	/*-------------------處理用戶表單--------------------*/
	@RequestMapping(value="uploadtext",produces = "text/html;charset=UTF-8")
	@ResponseBody
	public String updateInf(Student student,HttpServletRequest request,Model model){
		//student直接作爲形參,這樣可以直接使用student,還可以免去setter,getter更方便
		return null;
	}
他們的不同點就是SpringMVC的前端form的name字段直接使用對象的屬性值,比如:改成這樣

<form>
<input type="text" name="name"/>
</form>


那麼也許你會覺得,假如name衝突怎麼辦?

對這個問題是存在的,但是form表單通常不會那樣寫,標準的做法是後臺用一個Bean來接受前臺的數據,而不是使用如string這樣的類型。畢竟,這也是面向對象思想的一部分體現!



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