Spring MVC中提交表单请求
在Http请求中,都在使用Content-type来指定不同格式的请求信息,请求的类型有那些,具体是做什么的,以及在Spring MVC中如何使用它们来映射请求信息。
Content-Type
使用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中的Class定义:
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";
String[] value() default {};
@AliasFor("value")
String[] path() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};
}
value: 指定请求的地址,
method: 指定请求的method类型, GET、POST、PUT、DELETE等
consumes: 指定处理请求的提交内容类型(Content-Type),这个可以认为是消费内容,例如application/json,application/x-www-form-urlencoded ,text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回,这个可以认为生产出来内容。
params: 指定request中必须包含某些参数值是,才让该方法处理 如hello=a1
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求
其中,consumes, produces使用content-typ信息进行过滤信息;headers中可以使用content-type进行过滤和判断。
使用时候可以配合@RequestBody在使用时要提交json序列化后的数据,记住表单提交使用的不是json
和@ReponseBody使用返回对象会转化为json对象
headers使用Accept
Accept:用来指定什么媒体类型的响应是可接受的,即告诉服务器我需要什么媒体类型的数据,此时服务器应该根据Accept请求头生产指定媒体类型的数据。
当你有如下Accept头:
①Accept:text/html,application/xml,application/json
将按照如下顺序进行produces的匹配 ①text/html ②application/xml ③application/json
②Accept:application/xml;q=0.5,application/json;q=0.9,text/html
将按照如下顺序进行produces的匹配 ①text/html ②application/json ③application/xml
q参数为媒体类型的质量因子,越大则优先权越高(从0到1)
③Accept:*/*,text/*,text/html
将按照如下顺序进行produces的匹配 ①text/html ②text/* ③*/*
@RequestMapping(value = "/produces", produces = "application/json"):表示将功能处理方法将生产json格式的数据,此时根据请求头中的Accept进行匹配,如请求头“Accept:application/json”时即可匹配;
@RequestMapping(value = "/produces", produces = "application/xml"):表示将功能处理方法将生产xml格式的数据,此时根据请求头中的Accept进行匹配,如请求头“Accept:application/xml”时即可匹配。
此种方式相对使用@RequestMapping的“headers = "Accept=application/json"”更能表明你的目的
四、组合使用是“或”的关系
@RequestMapping(produces={"text/html", "application/json"}) :将匹配“Accept:text/html”或“Accept:application/json”
分享到:
相关推荐
spring3 注解 详解spring3 注解 详解spring3 注解 详解
Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解 Spring java注解,元注解和自定义注解
使用Spring的注解方式实现AOP的细节
spring源码带注释的,直接可以阅读,不需要重新编译。
spring源码(注释+测试版)
spring3注解详细
Spring demo 自动检测注解
这是对Spring中注解是怎么实现的一个大概基本原理,条件是采取的理想状态,所以代码中还有缺陷的话请谅解,如果有需要的朋友可以放心下载,里面有详细的解释和流程。相信你能看懂
Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...
spring自定义注解样例
Spring注解
简单的demo4初学者,用到spring注解,log4j记录日志到文件
Spring通过注解实现IOC,Spring通过注解实现IOC,Spring通过注解实现IOC
spring4注解
基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop
Spring 常用注解整理,分类:创建对象;注入数据;范围;全局异常;生命周期;新注解;JPA;扩展原理等注解类型。
spring源码 中英文注释
spring 源码解析
spring注解笔记spring注解笔记spring注解笔记spring注解笔记
Spring注释包