`

spring之注解表达传递

阅读更多
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”




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics