Spring mvc中Controller参数绑定注解详解
来源:互联网 发布:照片合成软件下载 编辑:程序博客网 时间:2024/06/01 08:05
Spring mvc中Controller参数绑定注解详解
简介
Request Method参数常用的注解,我们根据他们处理的Request不同部分分为4类:
- 处理Request Uri(这里指的是Uri template中的Variable,不包含QuertString部分):@PathVariable
- 处理Request Header:@RequestHeader,@CookieValue
- 处理Request Body: @RequestParam,@RequestBody
- 处理Attribute类型:@SessionAttributes,@ModelAttribute;
1.@PathVariable
当使用@RequestMapping URI template样式映射时,即someUrl/{paramId},这时的paramId可以通过@PathVariable注解绑定它传过来的值到方法的参数上。
@Controller@RequestMapping("/student/{studentId}")public ResponseEntity<List<Students>> queryStudentById(@Paramvariable String studentId){ return new ReponseEntity<>(studentService.queryStudentById(studentId),HttpStatus.Ok)}
2.@RequestHeader、@CookieValue
@RequestHeader注解,可以把Request请求header部分的值绑定到方法的参数上。
这时一个Request的Header部分:
Host localhost:8080Accept text/html,application/xhtml+xml,aaplication/xml;q=0.9Accept-Language fr,en-gb;q=0.7,en;q=0.3Accept-Encoding gzip,defalteAccept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive 300
使用@RequestHeader注解的Java片段:将Request header部分的Accept-Encoding和Keep-Alive的值分别绑定在encoding和keepAlive上。
@RequestMapping("displayHeaderInfo.do")public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,@RequestHeader("Keep-Alive") long keepAlive){ //...}
@CookieValue可以把Request header中关于cookie的值绑定到方法的参数上
例如有这样的Cookie值
JSESSIONID=415AAC78C59DACE0B842
使用@CookieValue绑定制定Cookie值的Java代码:将JSESSIONID的值绑定到了参数cookie 上
@Requestmapping("displayHeaderInfo.do")public void displayHeaderInfo(@CookieValue("JSESSIONID") String cookie){ //...}
3.@RequestParam、@RequestBody
@RequestParam使用分为2种情况:第一种为常用情况
1. 处理简单类型的绑定:通过Request.getParamter()获取的String的值可直接转换为简单类型String的情况。使用Request.getParamter()的方式获取参数,可以处理get方式中的queeryString的值,也可以处理post方式中的body data的值;
2. 处理Content-Type:为application/s-www-form-urlencoded编码的内容,提交方式GET、POST;
@RequestParam有两个参数:value(用来指定要传入值的id名称)、required(用来指明参数是否必须绑定)
下面是使用@RequestParam的java代码片段:
@RequestMapping(value="/teacher",method=RequestMethod.GET,produces="application/json")public ResponseEntity<List<Teacher>> queryByIdAndType(@RequestParam String id,@RequestParam int type){ return new ResponseEntity<>(teacherService.queryByIdAndType(id,type),HttpStatus.OK);}
@RequestBody:常用来处理Content-Type,但并不是application/x-www-form-urlended编码的内容虽然可以处理它,例如application/json,application/xml等。
使用@RequestBody的代码
@RequestMapping(value="/something",method=RequestMethod.PUT)public void handle(@RequestBody String body,Writer writer)throws IOException{ writer.write(body);}
4.@SeesionAttributes、@ModelAttribute
@SessionAttributes:用来绑定HttpSession中的attribute对象的值,便于在方法中的参数里使用;拥有两个属性value、types,可以通过名字和类型指定要使用的attribute对象
@Controller@RequestMapping("/editPet.do")@SessionAttributes("pet")public class EditPetForm{ @RequestMapping(method=RequestMethod.GET) public String setupForm(Model model){ Pet pet=new Pet(1); model.addAttribute("pet",pet) }}
@ModelAttribute:
参考博客:
* http://hbiao68.iteye.com/blog/1948380
* http://blog.csdn.net/li_xiao_ming/article/details/8349115
参考文档:
http://blog.csdn.net/walkerjong/article/details/7946109
- Spring mvc中Controller参数绑定注解详解
- spring MVC @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- spring mvc 注解参数详解@
- Spring中@Component注解,@Controller注解详解
- Spring中@Component注解,@Controller注解详解
- Spring MVC中基于注解的Controller
- Spring Mvc中Controller 中的@ResponseBody 注解
- Spring MVC 入门指南(四)@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- Spring注解@Controller 详解
- Spring注解@Controller 详解
- Spring MVC之controller注解
- spring mvc参数绑定
- Spring MVC 绑定参数
- spring mvc参数绑定
- Spring mvc参数绑定
- spring MVC 参数绑定
- spring mvc参数绑定
- Spring MVC参数绑定
- c++实现队列
- ThreadLocal分析
- (完结)Android官方培训课-支持不同的语言
- 『HIVE』hive基础学习笔记
- 数据库性能优化之SQL语句优化1
- Spring mvc中Controller参数绑定注解详解
- HDU 1166 敌兵布阵 zwk线段树
- dbvisualizer 如何将Exel数据导入数据库表中
- 欢迎使用CSDN-markdown编辑器
- js 合并数组
- 软件工程之软件项目管理
- c语言_单链表
- 【视觉-三维视觉技术-术语篇】三深度图像,点云数据
- andorid TextView(1)-带图片的TextView