SpringMVC - @RequestMapping、@ResponseBody、@RequestBody、@RequestParam、@PathVariable(三)

简介: SpringMVC - @RequestMapping、@ResponseBody、@RequestBody、@RequestParam、@PathVariable(三)

五、@RequestParam

用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型)


RequestParam可以接受简单类型的属性,也可以接受对象类型。


实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段。


defaultValue:如果该参数为NULL,则采用此默认值。


public String fun(@Requestparam(value="name", defaultValue="zhangsan") String name)
{}

Ps:在Content-Type: application/x-www-form-urlencoded的请求中, get 方式中queryString的值,和post方式中 body data的值都会被Servlet接受到并转化到Request.getParameter()参数集中,所以@RequestParam可以获取的到。


附:

MappingJacksonHttpMessageConverter 调用了 objectMapper.writeValue(OutputStream stream, Object)方法,使用@ResponseBody注解返回的对象就传入Object参数内。若返回的对象为已经格式化好的json串时,不使用@RequestBody注解,而应该这样处理:


1、response.setContentType("application/json; charset=UTF-8");


2、response.getWriter().print(jsonStr);


3、直接输出到body区,然后的视图为void。


4、当前台界面使用GET或POST方式提交数据时,数据编码格式由请求头的ContentType指定。分为以下几种情况:


application/x-www-form-urlencoded,这种情况的数据@RequestParam、@ModelAttribute可以处理,@RequestBody也可以处理。

multipart/form-data,@RequestBody不能处理这种格式的数据。(form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件。)

application/json、application/xml等格式的数据,必须使用@RequestBody来处理。


目录
相关文章
|
JSON 前端开发 Java
SpringMVC中@RequestBody和@ResponseBody两个注解的区别
📒 程序员小王的博客:程序员小王的博客 🎉 欢迎点赞 👍 收藏 ⭐留言 📝 😊 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线 今天我想详细的了解一下Spring MVC中@RequestBody和@ResponseBody的区别,让我自己在开发中更好的使用这两个注解
230 0
SpringMVC中@RequestBody和@ResponseBody两个注解的区别
|
Java 网络架构
SpringMVC@PathVariable
SpringMVC@PathVariable
79 0
|
前端开发 网络架构
SpringMVC -->ant风格的路径 -->占位符 -->获取请求参数 -->@RequestParam
SpringMVC -->ant风格的路径 -->占位符 -->获取请求参数 -->@RequestParam
140 0
|
前端开发 Java Spring
《Spring MVC》 第三章 @Controller、@RequestMapping 注解和获取请求参数
《Spring MVC》 第三章 @Controller、@RequestMapping 注解和获取请求参数
211 0
|
XML JSON 前端开发
Spring MVC @RequestBody @ResponseBody 序列化反序列化实现
前言 Spring MVC 中,标注了 @RequestBody 注解的 Controller 方法参数可以用来接收请求体,标注了 @ResponseBody 注解的 Controller 方法则会将返回值作为响应体。
606 0
Spring MVC @RequestBody @ResponseBody 序列化反序列化实现
|
JSON 前端开发 Java
SpringMVC 使用@ResponseBody返回json 中文乱码
SpringMVC 使用@ResponseBody返回json 中文乱码
259 0
SpringMVC 使用@ResponseBody返回json 中文乱码
|
JSON 前端开发 Java
解决SpringMVC下使用@ResponseBody的中文乱码
解决SpringMVC下使用@ResponseBody的中文乱码
164 0
|
前端开发 JavaScript Java
解决springmvc使用@PathVariable路径匹配问题
解决springmvc使用@PathVariable路径匹配问题
解决springmvc使用@PathVariable路径匹配问题
SpringMVC - @PathVariable设置为空的问题(required=false)
SpringMVC - @PathVariable设置为空的问题(required=false)
742 0
|
7月前
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】