@PathVariable
映射 URL 绑定的占位符
带占位符的 URL 是 Spring3.0 新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的形参中:URL 中的 {xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的形参中,需要注意的是:该注解的value属性值要与占位符保持一致。
特殊字符问题
问题
SpringMVC项目中通过下面的URL进行GET请求。当version有多个小数点的时候。如version为1.0.1008。后台通过@PathVariable来获取version等于1.0。会丢失部分数据。
URL:
http://host_ip/consumer/appVersion/phone/android/download/{version}
Controller:
@RequestMapping(value="android/download/{version}",method=RequestMethod.GET)
解决方案
在version段后增加一个静态的字符段,这个段没有任何意义,可以为任意字符。
URL:
http://host_ip/consumer/appVersion/phone/android/download/{version}/static_str
参考:
http://*.com/questions/3526523/spring-mvc-pathvariable-getting-truncated
URL不加小尾巴。
在@RequestMapping的value中使用SpEL来表示,value中的{version}换成{version:.+}。
@RequestMapping(value="android/download/{version:.+}",method=RequestMethod.GET)
@RequestParam
可以接收请求的参数,相当于Servlet的getParameter()方法!
注意:要把@RequestParam和@PathVariable区分开:
三个默认属性:
value:这个字段要与请求参数的name属性值一致!
required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带!
defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值!
@RequestHeader
获取请求头信息,默认属性:
请求头包含了若干个属性,服务器可据此获知客户端的信息,通过 @RequestHeader 即可将请求头中的属性值绑定到处理方法的形参中
@ModelAttribute
@ModelAttribute通常使用在Controller方法的参数注解中,用于解释model entity,但同时,也可以放在方法注解里。如果把@ModelAttribute放在方法的注解上时,代表的是该Controller的所有方法在每次调用前,先执行此@ModelAttribute方法。