栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RESTful开发风格5:RESTful基本使用三:简单请求(GET和POST);非简单请求(PUT和DELETE);(包括FormContentFilter过滤器)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RESTful开发风格5:RESTful基本使用三:简单请求(GET和POST);非简单请求(PUT和DELETE);(包括FormContentFilter过滤器)

说明:

(1)本文内容:

          ● 简单请求和非简单请求是什么;

          ● 基本逻辑:【Spring MVC原先只能处理GET和POST这种简单请求】→【但后来有了PUT和DELETE这种非简单请求】→【而,Spring MVC一开始是无法处理这种非简单请求的】→【为了能够处理PUT和DELETE这种非简单请求,Spring MVC可以通过FormContentFilter过滤器,来解决这个需求】;

(2)本篇博客的代码沿用自【RESTful开发风格4:RESTful基本使用二:【@RestController注解】;【路径变量(uri中的变量)】(使用@PathVariable注解来获取路径变量值);】中的【restful工程】;

目录

一:【简单请求】与【非简单请求】简介;

 二:【简单请求】与【非简单请求】案例演示;

1.默认情况下:Spring MVC可以处理简单请求;不能处理非简单请求;

2.借助FormContentFilter过滤器,Spring MVC也可以处理非简单请求了;


一:【简单请求】与【非简单请求】简介;

(1)简单请求:在HTML中使用的、标准结构的HTTP请求。包括GET和POST请求;

(2)非简单请求:包含两种情况;

               ● 复杂要求的HTTP请求。包括PUT和DELETE请求;

               ● 在标准的GET和POST请求中,扩展了额外的自定义请求头。这种的GET和POST请求,也可以看成非简单请求;

(3)简单请求和非简单请求比较;

               ● 简单请求和非简单请求,在数据的结构上,几乎是一致的;

               ● 二者在数据的内容上存在差异:非简单请求在发送之前,需要额外的发送一次预检请求;

               ● 简单请求就像廉价快递,其会直接把快递送到你家门口或者附加的快递柜;非简单请求就像顺丰这种高质量快递,其在正式送快递前会先打个电话,问一下收件人是否在家,如果收件人在家,顺丰才会正式投递;

(4)非简单请求的好处:非简单请求增加了预检请求,其可以让服务器预先处理;预检请求会把不符合要求的请求给排除,这些不符合要求的请求并不会发送实际请求;而这是可以减轻网络传输和服务器的压力;

(5)非简单请求和简单请求的处理方式不同:在用Spring MVC的处理的时候,二者的处理方式是不同的,我们需要注意。


 二:【简单请求】与【非简单请求】案例演示;

1.默认情况下:Spring MVC可以处理简单请求;不能处理非简单请求;

(1.1)服务器端的POST请求和PUT请求,都增加data参数;

………………………………

(1.2)为了方便服务器端接收客户端传过来的参数,这儿创建一个JavaBean:Person类;

……………………………………………………

(1.3)在服务器端的Controller类的POST和PUT方法中,尝试接收客户端发来的请求中的参数;

……………………………………………………

(1.4)启动Tomcat,观察效果:POST这个简单请求是可以的,PUT这个非简单请求不可以;

……………………………………………………

(1.5)原因分析;

          ● 最早的Spring MVC是为网页服务的;而默认情况下,网页在进行表单提交的时候,只支持GET和POST请求;所以,一开始的时候,Spring MVC只支持GET和POST请求,Spring MVC是不支持PUT和DELETE请求的;

          ● 但是,随着时间演进,Spring MVC也必须要考虑PUT请求和DELETE请求了;

          ● 自然,为了能够处理PUT和DELETE这种非简单请求,Spring MVC就需要新增一些新的、针对PUT和DELETE请求的、处理方式;

          ● 但是,出于各种原因,Spring MVC又不能把【新的、针对PUT和DELETE请求的、处理方式】,强加到服务器端的代码中;(目测是,出于尽量不要动老代码的目的吧)

          ● 所以,Spring MVC提出了一种折中方案:对于PUT和DELETE这种非简单请求,Spring MVC提供了一个额外的【表单内容过滤器】(FormContentFilter过滤器);通过这个过滤器来对PUT和DELETE请求进行额外处理;

2.借助FormContentFilter过滤器,Spring MVC也可以处理非简单请求了;

(2.1)首先,需要在web.xml中配置FormContentFilter过滤器;

    
        formContentFilter
        org.springframework.web.filter.FormContentFilter
    
    
        formContentFilter
        /*
    

……………………………………………………

(2.2)然后,服务器端的代码不用动;

……………………………………………………

(2.3)启动Tomcat,观察效果:此时Spring  MVC也可以处理PUT请求了;

 

……………………………………………………

(2.4)分析;

          ●  FormContentFilter过滤器,是对Spring MVC功能的扩展;

          ● 如果没有这个过滤器的话,Spring  MVC是无法正常接收PUT和DELETE请求所传递的参数的;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490340.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号