springMVC之@Request
这段时间有了新的动力,所以开始了我的博客之旅。先从参数绑定开始我的随笔吧。
@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。(http路径上就是这样,value中的路径)
RequestMapping注解有六个属性:
1、 value, method属性;
value: 指定请求的实际地址,指定的地址可以是URI Template 模式;
value的uri值为以下三类:
A) 可以指定为普通的具体值;(value="/test")
B) 可以指定为含有某变量的一类值(value="/tmp/{tmp}")
C) 可以指定为含正则表达式的一类值(/web/{UserId:[a-z]})
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
(method=RequestMethod.GET\RequestMethod.POST)
2、 consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),
例如onsumes="application/json"、"text/html";方法仅处理request Content-Type为“application/json”类型的请求。
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回; produces="application/json"
3、 params,headers;
params: 指定request中必须包含某些参数值是,才让该方法处理。例如:(params="myParam=start")
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。(headers="www.baidu.com/")
在SpringMVC后台控制层获取参数的方式主要有两种:
一、request.getParameter("name");
二、是用注解@RequestParam直接获取;
这次主要说明注解 :
1、通过@RequestParam配置 :value="XX"
// 下面的对传入参数指定为test,如果传入参数不传test参数名,会报错
@RequestParam(value="test") String test
错误信息:
HTTP Status 400 - Required String parameter 'test' is not present
2、通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传
// required=false表示不传的话,会给参数赋值为null,required=true就是必须要有
@RequestParam(value="test",required=false) String test
3、如果用@RequestParam注解的参数类型是int,同时required=false,这时如果不传参数值会报错,因为不传值,会赋值为null给int。
解决方法:
“Consider declaring it as object wrapper for the corresponding primitive type.”。建议使用包装类型代替基本类型,如使用“Integer”代替“int”。