背景剖析
传统java web利用,例如在servlet中获取申请数据,咱们可能间接HttpServletRequest
对象获取申请中的url,参数等相干信息(request.getParameter("...")).当然咱们
获取到这些参数当前,咱们可能还要进行参数的解析,类型的转换等等.
思考:
第一:如果咱们在一个传统的servlet利用中,向服务端发送了一个这样的申请,例如http://localhost/findObjects?pageCurrent=1
此时服务端要获取申请中的pageCurrent的值,并赋值给你整数变量你会怎么做?
`String page=request.getParameter("pageCurrent");if(page!=null&&"".equals(page)){ Integer pageCurrent=Integer.parseInt(page);}`
第二:如果咱们在一个传统的servlet利用中,向服务端发送了一个这样的申请,例如http://localhost/deleteObjects?ids=1,2,3,4,5
此时服务端要获取申请中的ids值,而后将这个ids字符串中多个id值存储一个整数数组,你会怎么做?
String idsStr=request.getParameter("ids");String []idArray=idsStr.split(",");Integer []ids=new Integer[idArray.length];for(int i=0;i<idArray.length;i++){ ids[i]=Integer.parseInt(idArray[i]);}
第三:如果咱们在一个传统的servlet利用中,向服务端发送了一个这样的申请,例如http://localhost/saveObject?id=10&name=20&remark=30
此时服务端获取了申请数据当前,要将申请数据存储到Goods对象中,你会怎么做呢?
String id=request.getParameter("id");String name=request.getParameter("name");String remark=request.getParameter("remark");Goods g=new Goods();g.setId(Integer.parseInt(id));g.setName(name);g.setRemark(remark)
对于如上几种申请参数获取,解析,封装.这样的过程,在咱们的程序中可能会
重复呈现,可能对如上重复执行的逻辑或模板性的代码进行简化,进而进步
开发效率?
1)间接量形式(八种根本数据类型或者封装类,字符串类型,日期类型,数组)
2)pojo对象形式(要求pojo对象中提供与申请参数匹配的set办法)
3)map对象形式(须要应用指定注解办法中map类型参数进行形容)
4)Rest格调的url中的参数.
1)Spring MVC 管制层办法中的参数值都来自于哪个对象?request
2)Spring MVC 管制层办法参数中罕用注解你晓得有几个呢?
2.1)@RequestParam (定义参数规定,例如参数是否可选,指定获取哪个参数的值)
2.2)@DateTimeFormat (定义能够获取的日期的日期格局)
2.3)@RequestBody(示意参数能够接管客户端post申请提交的json原生数据)
2.4)@PathVariable(示意参数的值来自url中{}表达式中的数据)3)Spring MVC管制办法上定义申请形式,申请url的注解你理解的有哪些?
3.1)@RequestMapping(value="/doGet",method=RequestMethod.GET)
3.2)@GetMapping("/path") 个别利用于查问数据的申请形式定义
3.3)@PostMapping("/path") 个别利用于增加数据的申请形式定义
3.4)@DeleteMapping("/path") 个别利用于删除数据的申请形式定义
3.5)@PutMapping("/path") 个别利用于更新数据的申请形式定义
BUG?
1)400 (客户端向服务端传递的申请参数与服务端可解决的模式不匹配)
2)405 (客户端申请形式与服务端定义的申请解决形式不匹配)
3)404 (客户端申请的资源不存在)