1.@ResponseBody与@RequestBody
作用:@ResponseBody注解用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端。
作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容(json数据)转换为java对象并绑定到Controller方法的参数上。
什么是HttpMessageConverter
作用:负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息。
2.@PathVariable和@RequestParam、@RequestBody的区别
@RequestParam :是从请求里面获取参数.
用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型)
RequestParam可以接受简单类型的属性,也可以接受对象类型。
@PostMapping("updateMixerBack")
@ResponseBody
public R updateMixerBack(@RequestParam("tdlvId") Integer tdlvId){
Tdlv tdlv =tdlvService.getOneByTdlvId(tdlvId);
if(null ==tdlv){
return new R(false,"未找到该发货单记录");
}
List<Dlv> dlvList = dlvService.findDlvByTdlv(tdlvId);
if(dlvList.size()==0){
return new R("未找到发货单记录");
}
return dlvService.updateDlvCur(dlvList,tdlv);
}
@RequestBody
处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。
GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。
POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。
@PutMapping("addSginWdlv")
public R addSginWdlv(@RequestBody Wdlv wdlv){
WdlvSign wdlvSign =wdlvService.findWdlvSignByWid(wdlv.getWdlvId());
if(null == wdlvSign){
return new R(false,"该条记录在待签送水单中不存在,无法签收");
}
wdlvService.addSginWdlv(wdlv);
return new R(true,"签收成功");
}
}
@PathVariable :从路径里面去获取变量
@GetMapping("/findMaxCanNum/{lineId}")
public R findMaxCanNum(@PathVariable(value = "lineId") Integer lineId){
Integer canNum = canService.findMaxCanNum(lineId);
if(canNum == null){
return R.ok(0);
}
return R.ok(canNum);
}