天天看點

史上最全的springmvc參數綁定

作者:it村男主任

Springmvc參數綁定方式很多,本篇将盡可能全的介紹各種參數綁定

1、基本資料類型和引用資料類型

史上最全的springmvc參數綁定

Springmvc内置了許多類型轉換器,例如:前端傳遞字元串後端可以用int類型接收。(推薦使用包裝資料類型)

2、預設支援的http對象

HttpServletRequest 通過request對象擷取請求資訊

HttpServletResponse 通過response處理響應資訊

HttpSession 通過session對象得到session中存放的對象

史上最全的springmvc參數綁定

pojo類型

3.1 基本pojo類型

參數較少的時候可以使用簡單資料類型,一旦參數過多就可以使用pojo類型接收。參數名一定要和pojo對象屬性名一緻。

史上最全的springmvc參數綁定

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);
}           

請求:

史上最全的springmvc參數綁定

綁定數組

可以用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);
}           

參數傳遞:

史上最全的springmvc參數綁定

結果:

史上最全的springmvc參數綁定

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);
}           

參數傳遞:

史上最全的springmvc參數綁定

結果:

史上最全的springmvc參數綁定

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);
}           

參數傳遞:

史上最全的springmvc參數綁定

結果:

史上最全的springmvc參數綁定

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);
}           

參數傳遞:

史上最全的springmvc參數綁定

結果:

史上最全的springmvc參數綁定

綁定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);
}           

傳遞參數:

史上最全的springmvc參數綁定

結果:

史上最全的springmvc參數綁定

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);
}           

傳遞參數:

史上最全的springmvc參數綁定

結果:

史上最全的springmvc參數綁定

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);
}           

參數傳遞:

史上最全的springmvc參數綁定

結果:

史上最全的springmvc參數綁定

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);
}           

傳遞參數:

史上最全的springmvc參數綁定

結果:

史上最全的springmvc參數綁定

自定義參數綁定

自定義日期格式,需要建立類型轉換器

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>           

您的贊和關注是對我創作的最大肯定謝謝大家