Springmvc參數綁定方式很多,本篇将盡可能全的介紹各種參數綁定
1、基本資料類型和引用資料類型
Springmvc内置了許多類型轉換器,例如:前端傳遞字元串後端可以用int類型接收。(推薦使用包裝資料類型)
2、預設支援的http對象
HttpServletRequest 通過request對象擷取請求資訊
HttpServletResponse 通過response處理響應資訊
HttpSession 通過session對象得到session中存放的對象
pojo類型
3.1 基本pojo類型
參數較少的時候可以使用簡單資料類型,一旦參數過多就可以使用pojo類型接收。參數名一定要和pojo對象屬性名一緻。
3.2 pojo類型(json)
@RequestMapping(value = "/bindParam",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public JsonFormat bindParam(@RequestBody User user) {
System.out.println(user.getUsername());
return JsonFormat.success("請求成功",null);
}
請求:
綁定數組
可以用String[]接收,或者pojo的String[]屬性接收。兩種方式都可以
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(User user,String[] ids) {
System.out.println(ids);
return JsonFormat.success("請求成功",null);
}
參數傳遞:
結果:
4.1 json數組
@RequestMapping(value = "/bindParam",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public JsonFormat bindParam(@RequestBody String[] ids) {
System.out.println(ids);
return JsonFormat.success("請求成功",null);
}
參數傳遞:
結果:
5、綁定List
5.1基本list集合
建立包裝對象,将定義的list集合放進保重對象中,直接綁定list不好使。
public class ParamVo {
private List<User> lists;
public List<User> getLists() {
return lists;
}
public void setLists(List<User> lists) {
this.lists = lists;
}
}
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(ParamVo vo) {
System.out.println(vo.getLists());
return JsonFormat.success("請求成功",null);
}
參數傳遞:
結果:
5.2json格式list集合
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(@RequestBody ParamVo vo) {
System.out.println(vo.getLists());
return JsonFormat.success("請求成功",null);
}
參數傳遞:
結果:
綁定map集合
5.1基本map集合
建立包裝對象,将定義的map集合放進保重對象中
實體類:
public class ParamVo {
private Map<String,String> maps;
private Map<String,User> userMap;
public Map<String, User> getUserMap() {
return userMap;
}
public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
}
public Map<String, String> getMaps() {
return maps;
}
public void setMaps(Map<String, String> maps) {
this.maps = maps;
}
}
主要代碼:
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(ParamVo vo) {
Map<String, String> maps = vo.getMaps();
for (Map.Entry<String, String> entry : maps.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
return JsonFormat.success("請求成功",null);
}
傳遞參數:
結果:
5.2多參數map集合接收
參數較多時,不想建立實體類,那麼可以直接使用map接收
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(@RequestParam Map<String,String> map) {
System.out.println(map.get("username"));
return JsonFormat.success("請求成功",null);
}
傳遞參數:
結果:
5.3 json格式map集合接收
@RequestMapping(value = "/bindParam",method = RequestMethod.POST)
@ResponseBody
public JsonFormat bindParam(@RequestBody Map<String,String> map) {
System.out.println(map.get("username"));
System.out.println(map.get("age"));
return JsonFormat.success("請求成功",null);
}
參數傳遞:
結果:
json資料互動
@RequestBody:注解用于讀取http請求的内容(字元串),通過springmvc提供的HttpMessageConverter接口将讀到的内容(json資料)轉換為java對象并綁定到Controller方法的參數上
@ResponseBody:注解用于将Controller的方法傳回的對象(如果傳回字元串,則直接将該字元串傳回給用戶端),通過springmvc提供的HttpMessageConverter接口轉換為指定格式的資料如:json,xml等(預設為json),通過Response響應給用戶端
示例:
@RequestMapping(value = "/bindParam",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public JsonFormat bindParam(@RequestBody User user) {
System.out.println(user.getUsername());
System.out.println(user.getPassword());
return JsonFormat.success("請求成功",null);
}
傳遞參數:
結果:
自定義參數綁定
自定義日期格式,需要建立類型轉換器
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
try {
// 把字元串轉換為日期類型
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
Date date = simpleDateFormat.parse(source);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
// 如果轉換異常則傳回空
return null;
}
}
在spring配置檔案中配置轉換器
<!-- 轉換器配置 -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="cn.ceshi.converter.DateConverter" />
</set>
</property>
</bean>
您的贊和關注是對我創作的最大肯定謝謝大家