当前位置: 首页 > news >正文

SpringMVC框架Request请求-contentType设置与配置

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在Http请求中使用Content-type来指定不同格式的请求信息,那么在spring MVC中如何使用它们来映射请求信息呢?

Content-type类型

 常见的媒体格式类型如下:

  •     text/html : HTML格式
  •     text/plain :纯文本格式      
  •     text/xml :  XML格式
  •     image/gif :gif图片格式    
  •     image/jpeg :jpg图片格式 
  •     image/png:png图片格式

   以application开头的媒体格式类型:

  •    application/xhtml+xml :XHTML格式
  •    application/xml     : XML数据格式
  •    application/atom+xml  :Atom XML聚合格式    
  •    application/json    : JSON数据格式
  •    application/pdf       :pdf格式  
  •    application/msword  : Word文档格式
  •    application/octet-stream : 二进制流数据(如常见的文件下载)
  •    application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

   上传文件:

  •     multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

Spring MVC中Content-Type类型信息的使用

先看RequestMapping注解的定义:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
      String[] value() default {};
      RequestMethod[] method() default {};
      String[] params() default {};
      String[] headers() default {};
      String[] consumes() default {};
      String[] produces() default {};
}

value:  指定请求的实际地址, 比如 /action/info之类。
method:  指定请求的method类型, GET、POST、PUT、DELETE等
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
params: 指定request中必须包含某些参数值是,才让该方法处理
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求

其中,consumes, produces使用content-typ信息进行过滤信息;headers中可以使用content-type进行过滤和判断。

如:

  @RequestMapping(value = "/abc", method = RequestMethod.GET, headers="Referer=http://www.baidu.com/")  
  public void testHeaders(@PathVariable String ownerId, @PathVariable String petId) {      
    // implementation omitted  
  } 

@RequestMapping(value = "/response/ContentType", headers = "Accept=application/json")  
public void response2(HttpServletResponse response) throws IOException {  
    //表示响应的内容区数据的媒体类型为json格式,且编码为utf-8(客户端应该以utf-8解码)  
    response.setContentType("application/json;charset=utf-8");  
    //写出响应体内容  
    String jsonData = "{}";  
    response.getWriter().write(jsonData);  
    // implementation omitted  
}  

 

使用场景


GET、POST方式提交的请求:

Content-type:

1、application/x-www-form-urlencoded:@RequestBody不是必须加的

2、mutipart/form-data:@RequestBody不能处理这种格式

3、其他格式,比如application/json,application/xml等,必须使用@RequestBody来处理

@ResquestBody注解可以使http消息转换器会根据content-type对请求体进行解析

PUT方式提交的请求:

以上1和3的场景都是必须使用@RequestBody来处理的,2场景也是不支持的

如:


$.ajax({
    url:"/login",
    type:"post",
    contentType:"application/json;charset=UTF-8",
    data:JSON.stringify({"name":"test","pass":"123456"})
});
  4、后台接收代码示例

@RequestMapping(value="/login")
@ResponseBody
public ModelAndView loadForm(@RequestBody Login login){
    // implementation omitted  
}

 

转载于:https://my.oschina.net/guoshuyun/blog/831472

相关文章:

  • Win7配置SVN详细步骤(服务器和客户端)
  • Dell服务器raid5的在线扩容
  • Android Studio——gradle同步出错:MALFORMED
  • BizTalk Server 2010高可用方案
  • linux下如何设置环境变量PATH
  • tcp-time-wait-state
  • MYSQL5.5源码安装 linux下
  • JDK8的流式数据处理
  • Web设计流程优化:网页效果图设计新思路
  • Android稳定性测试工具Monkey的使用
  • 基于C#的MongoDB数据库开发应用(4)--Redis的安装及使用
  • jz2440上内核和文件系统移植
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 事务隔离(二):基于加锁方式的事务隔离原理
  • mybatis随笔一之SqlSessionFactoryBuilder
  •  D - 粉碎叛乱F - 其他起义
  • HTML-表单
  • Java|序列化异常StreamCorruptedException的解决方法
  • JS学习笔记——闭包
  • Median of Two Sorted Arrays
  • nginx 配置多 域名 + 多 https
  • Sass 快速入门教程
  • webgl (原生)基础入门指南【一】
  • WePY 在小程序性能调优上做出的探究
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于遗传算法的优化问题求解
  • 计算机在识别图像时“看到”了什么?
  • 记一次和乔布斯合作最难忘的经历
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 如何使用 JavaScript 解析 URL
  • 微信开源mars源码分析1—上层samples分析
  • 小而合理的前端理论:rscss和rsjs
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • Semaphore
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​queue --- 一个同步的队列类​
  • ​马来语翻译中文去哪比较好?
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (ibm)Java 语言的 XPath API
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (编译到47%失败)to be deleted
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (七)理解angular中的module和injector,即依赖注入
  • (十八)三元表达式和列表解析
  • (原創) 物件導向與老子思想 (OO)
  • (转)scrum常见工具列表
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • *上位机的定义
  • .Family_物联网
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET 药厂业务系统 CPU爆高分析