視頻教程地址:http://edu.51cto.com/sd/2cfc2
所謂的參數綁定過程,就是頁面向后台傳遞參數,后台接收參數的一個過程,那么總結在springMVC中參數綁定的過程,大致可以分為以下幾種:
1.默認支持的參數類型(就是你在方法上以形參的形式定義,就可以直接使用的),主要有以下幾個
HttpSession
HttpServletRequest
HttpServletResponse
Model/ModelMap
相信前面幾個大家並不陌生,和servlet的使用是一樣的,至於Model和ModelMap是把數據放到request作用域的,這里也許你會覺得奇怪,這些東西和你接收頁面參數並沒有什么關系,是的,這些主要是哪里獲取session,傳遞參數,跳轉頁面,攜帶數據相關的幾個默認類型,和接收參數並沒有太大關系,但是需要了解,以后會用到,使用方法如下:
@RequestMapping(value="/session_demo") public String session_demo(HttpSession session,Model model) { session.getAttribute("");//獲取session session.setAttribute("", "");//設置session model.addAttribute("", "");//把數據放到request作用域中 return "hello"; }
舉一個例子,其他的使用類似,其中("","")括號中的第一個" "表示名字,第二個" "表示值。
2.基本類型的綁定(基本類型就是指:int,String......這些),對於基本類型,只要你定義的名字和頁面的name屬性一致,就會自動接收頁面文本框的值
Controller代碼:
@RequestMapping(value="/test_user")
public String test_user(int sid,String name){ //int sid等價於 request.getpa...(""); System.out.println(sid+"="+name); return "hello"; }
頁面代碼:
<form action="test_user" method="post"><!--其中action提交的就是你的@RequestMapping中的value的值 -->
<input name="sid" ></br>
<input name="name" ></br>
<input type="submit" value="提交"></br>
</form>
3.綁定實體類(只要你的實體類屬性和頁面的name屬性一致就會自動接收),並且實體類的綁定,和基本類型的綁定不相互影響,可以同時使用
實體類:get,set和構造函數方法(全構造,和空的構造最好都生成)一定要有
private int sid; private String name; private String sex; private String hobbies;
頁面:
接下的幾種綁定,我把大概的寫法給大家,就不列舉的那么詳細了
4.包裝的實體類綁定(就是實體類中放着另外的實體類)
使用情況:當頁面的查詢條件比較復雜的時候,並且設計到多個數據庫的表,這個時候我們可以把這些查詢條件單獨封裝成一個類,或者用包裝一個查詢類,里面放着實體類。
包裝的查詢類:
public class QueryItems { private Student student; private BanJ banj; private List<Student>list; }
Controller寫法:
@RequestMapping(value = "/test_items") public String queryitems(QueryItems items){ System.out.printIn(items.getStudent());return "hello"; }
頁面寫法:(name屬性是你包裝類的對象名+屬性名)
5.集合類型的綁定(不詳細的寫了有需要可留言)
數組類型的綁定:利用復選框把id傳過去,Controller定義名字相同的數組獲取即可
應用場景:批量刪除
list類型的綁定:這個的寫法和包裝的實體類有點類似,不同的是頁面的寫法有很大的區別,把頁面的寫法給大家
頁面:
應用場景:批量修改
map類型的綁定:類似list