ContentType 在Spring MVC中如何接收
大家好,我是IT修真院深圳分院第01期学员,一枚正直纯洁善良的web程序员。今天给大家分享一下,修真院官网JAVA(职业)任务2的知识点——ContentType 在Spring MVC中如何接收。
1.背景介绍
Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。
2.知识剖析
2.1 常用的ContentType三种类型:
1)application/x-www-form-urlencoded:浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码,大部分服务端语言都对这种方式有很好的支持。
2)multipart/form-data:使用表单上传文件时,必须让 form 的 enctyped 等于这个值。
3)application/json:目前最流行的请求头格式,告诉服务端消息主体是序列化后的 JSON 字符串。可以方便的提交复杂的结构化数据,特别适合 RESTful 的接口。
2.2 @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等
params:指定request中必须包含某些参数值是,才让该方法处理
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求
consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
3.常见问题
在Spring MVC中接收
4.解决方案
根据consumes值进行判断
5.编码实战
6.扩展思考
text/xml格式
7.参考文献
参考:Http请求中Content-Type讲解以及在Spring MVC中的应用
ContentType类型在Spring MVC如何使用_腾讯视频
8.更多讨论
其他Http ContentType格式
问:@RequestMapping的方法只有以上这些吗?
答:spring新版本又增加了path()方法,需要去看API了解。
问:控制器方法如何匹配处理请求?
答:通过consumes方法的值进行判断。
问:header中的accept的设置是怎么回事?
答:不同的客户端发送请求,请求的accept有可能不一样,不全是*/*,比如点击jsp的<a>标签,之后获取的accept值并不是*/*。accept有具体的匹配规则,可以参考上面的参考链接。
鸣谢
感谢大家观看
------------------------------------------------------------------------------------------------------------------------
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~