IT修真院_JAVA

ContentType 在Spring MVC中如何接收

2017-08-29  本文已影响0人  老菜菜

大家好,我是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中的应用

PPT链接


ContentType类型在Spring MVC如何使用_腾讯视频

8.更多讨论

其他Http ContentType格式

问:@RequestMapping的方法只有以上这些吗?

答:spring新版本又增加了path()方法,需要去看API了解。

问:控制器方法如何匹配处理请求?

答:通过consumes方法的值进行判断。

问:header中的accept的设置是怎么回事?

答:不同的客户端发送请求,请求的accept有可能不一样,不全是*/*,比如点击jsp的<a>标签,之后获取的accept值并不是*/*。accept有具体的匹配规则,可以参考上面的参考链接。

鸣谢

感谢大家观看

------------------------------------------------------------------------------------------------------------------------

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

上一篇下一篇

猜你喜欢

热点阅读