springmvc 接收请求信息
1.@RequestHeader
@RequestHeader注解用于映射请求头数据到Controller方法的对应参数
下面是一个请求头
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding:gzip, deflate, br Accept-Language:zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7 Cache-Control:max-age=0 Connection:keep-alive Host:localhost:8080 Upgrade-Insecure-Requests:1 User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36 @GetMapping("/getRequestHeader") public Result getRequestHeader(@RequestHeader("Accept-Encoding") String encoding) { return ResultUtil.successResult(encoding); }
2.@CookieValue
可以把Request header中关于cookie的值绑定到方法的参数上
@RequestMapping("/getCookie") public Result getCookie(@CookieValue("JSESSIONID") String co) { return ResultUtil.successResult(co); }
即把JSESSIONID的值绑定到参数co上
3.URL模板变量
@RequestMapping("show5/{id}/{name}") public ModelAndView test5(@PathVariable("id") Long ids ,@PathVariable("name") String names){ ModelAndView mv = new ModelAndView(); mv.addObject("msg","占位符映射:id:"+ids+";name:"+names); mv.setViewName("hello2"); return mv; }
4.@RequestParam
@RequestParam可以接受简单类型的属性,也可以接受对象类型。@RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性。@RequestParam也可用于其它类型的请求,例如:POST、DELETE等请求。
@RequestParam(value = "loginFlag", required = true,defaultValue = "aa") String loginFlag)
(1)value:请求参数名
(2)required:是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)
(3)defaultValue:默认值,如果设置了该值,required 将自动设为 false,无论你是否配置了required,配置了什么值,都是 false(可选配置)
5.@RequestBody 接收
@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。
public Map<String, Map<String, Object>> saveParamaters(@RequestBody Map<String, Object> map)
6.对象接收(默认为接收application/x-www-form-urlencoded,加上@RequestBody接收application/json、application/xml等)
@GetMapping(path = "/get2") public void get2(UserVo vo) { log.info("name:{},age:{}", vo.getName(), vo.getAge()); }
7.使用HttpServletRequest的方法 不推荐
@GetMapping(path = "/get3") public void get3(HttpServletRequest request) { String name = request.getParameter("name"); String age = request.getParameter("age"); log.info("name:{},age:{}", name, age); }