springMVC的數據綁定java
1. 基本類型
1.1 好比int和Integer如何去選擇做爲Controller方法的入參
1.2 在入參上加上註解@RequestParam,
1.3 @RequestParam註解幾個設置
1.3.1 value如何應用,value就是參數的別名, 並且http參數只能以別名傳參
1.3.2 required爲true,表示這個參數是必須傳值的,
1.3.3 defaltValue的設置,是否設置默認值spring
2. 數組做爲Controller方法傳參
1.1 例子傳參 : http://localhost:8080/array.do?name=Tom&name=Lucy&name=Jimjson
3. Object做爲Controller方法傳參
1.1 普通url例子傳參: http://localhost:8080/object.do?name=Tom&age=10
1.2 若是Object的屬性也是一個對象的傳參
http://localhost:8080/object.do?name=Tom&age=10&contactInfo.phone=10086
1.3 若是Controller的入參有2個Object,而且這兩個Object有同名稱的屬性,爲了區分不一樣的Object的屬性
1.3.1 url能夠是: http://localhost:8080/object.do?user.name=Tom&admin.name=Lucy&age=10
1.3.2 須要用到註解InitBinder,並寫一個方法表示在Controller方法執行前執行數組
@InitBinder("user") //註解的value值對應執行方法的入參名稱 public void initUser(WebDataBinder binder){ //方法的傳參是WebDataBinder binder.serFieldDefaultPerfix("user."); //設置默認的前綴 } @InitBinder("admin")//註解的value值對應執行方法的入參名稱 public void initAdmin(WebDataBinder binder){ binder.serFieldDefaultPerfix("admin."); }
1.3.3 則Controller方法以下服務器
@RequestMapping(value="object.do") @ResponseBody public String object(User user, Admin admin){ return user.toString() + ", " + admin.toString(); }
4. 集合的綁定
4.1 List的綁定
4.1.1 List必須做爲某個javaben的屬性,好比mvc
public class UsersForm{ private List<User> users; //getter, setter, toString function... }
4.1.2 而後Controller方法就能夠接收這個包含List集合做爲屬性的javabean爲入參了app
@RequestMapping(value="list.do") @ResponseBody public String list(UsersForm usersForm){ return "users.size :" + usersForm.users.size() + ", all users :" + usersForm.users.toString(); }
4.1.3 那麼url傳參能夠是這個樣子的
http://localhost:8080/list.do?users[0].name=Tom&users[1].name=Lucy&users[20].name=Jerry
4.1.4 注意
在url傳參的時候,下標索引不要中間出現中斷的數字,好比不要出現如上的從0,1直接到20的狀況,雖然不會報錯,可是建立中的2到19的元素的javabean
4.2 Set集合的綁定
4.2.1 Set一樣須要做爲某個javabean的屬性,和List不一樣的是,必須在javabean的構造方法裏爲Set屬性初始化
4.2.2 Controller方法的處理同List綁定的Controller方法
4.2.3 url傳參時,
4.2.3.1參數的下標不能中斷,
4.2.3.2 在Set集合中的元素在複寫hashCode方法以後,url傳參的元素傳給Set以後的元素不能hashCode斷定相同,不然拋異常ui
4.3 Map集合的綁定
4.3.1 Map也和List同樣,必須做爲某個JavaBean 的屬性
4.3.2 Controller方法同List綁定的Controller方法
4.3.3 傳參例子以下: 中括號中的是key,等號後的爲value
http://localhost:8080/map.do?users['x'].name=Tom&users['y'].name=Lucy url
5. json和xml數據綁定
5.1 對http頭必須設置content-type
json設置的content-type="application/json"
xml設置的content-type="application/xml"
5.2 經過Post傳參, json的數據綁定須要用到RequestBody註解,這個註解用於讀取body部分的數據code
@RequestMapping(value={"json.do","xml.do"}) @ResposeBody public String json(@RequestBody User user){ return user.toString(); }
6. 數據轉換,格式化
6.1 PropertyEditor接口, 默認實現類PropertyEditorSupport,主要方法setValue, getValue, setAsText
6.1.1 將一段字符串解析成一個javabean,或者將一個javabean轉換成一個字符串
6.1.2 有不少默認的數據轉換實現, 好比對Date的實現
@RequestMapping(value="date1.do") @ResponseBody public String date1(Date date1){ return date1.toString(); } //對如上的Controller處理方法,須要對入參的Date進行數據轉換設置 @InitBinder("date1") public void initDate1(WebDateBinder binder){ binder.registerCustomEditor( //註冊一個針對傳參名稱爲date1的一個轉換器 Date.class, //轉換的目標類型 new CustomDateEditor( //一個springmvc默認提供的Date轉換器 new SimpleDateFormatter("yyyy-MM-dd"), //字符串格式 true) //true表示轉換器能夠處理null,空字符串等 ); }
6.2 全局的轉化器
6.2.1 Formatter
新建一個類實現Formatter接口
public class MyDateFormatter implements Formatter<Date> { public Date parse(String text, Locale locale) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.parse(test); } public String print(Date obj, Locale locale){ return null; } }
6.2.2 Converter
public class MyDateConverter implements Converter<String, Date>{ public Date convert(String source){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try{ return sdf.parse(source); }catch(ParseException ex){ex.printStackTrace;}; } return null; }
7 RESTful
7.1 相似於這樣的url
http://movie.douban.com/show/subject/11345/
7.2 對應的Controller的處理方法
須要用到註解 @PathVariable
@RequestMapping(value="/subject/{subjectId}") @ResponseBody public String subject(@PathVariable("subjectJd") String subjectId){ return subjectId; }
7.3 全稱: Representational State Transfer (資源)表現層狀態轉換
7.3.1 資源,好比url只表示資源實體,並不表明資源的展示形式
7.3.2 資源的展示形式,經過http頭的content-type/accept來在客戶端和服務器之間控制
7.3.3 RESTful的狀態轉換
概念: 冪等性: 相同的URL,相同的參數的http請求,返回的響應相同
GET :獲取資源 , 具備冪等性 POST :建立資源 , 不具備冪等性 PUT :建立或者更新資源, 具備冪等性 DELETE :刪除資源, 具備冪等性