[Java springMVC] Restf…

探讨Java Spring MVC中RESTful风格API接口设计难题,特别是针对PUT和DELETE方法的支持问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[Java springMVC] Restful风格API接口设计 二

有人会问了? 为什么delete put用的也是post的请求,这里就要说说java里面对putdelete的不支持了->

java里面原本是对putdelete请求进行过滤掉的(不知道为什么要这么做),而且在servlet里面还有doGetdoPostdoDelete,doPut的对应方法,但是不可以使用(尴尬不尴尬),同样spring mvc里面也有对应的method=RequestMethod.PUT Delete,但是ajax里面type写成PutDelete是可以访问到对应的方法的,但是参数却无法传递过去,所有传递过去的参数都是null(郁闷不郁闷)!C#就不会这样,C#API编程需要开启一下PUTDelete就可以了,并不需要java里面这么复杂,说到这里我们解决一下这个问题->

首先在springMVC 项目的Web.xml里面增加一个过滤器filter

1 浏览器不支持put,deletemethod,由该filter/xxx?_method=delete转换为标准的http delete方法

当然有些新手不知道这段代码加在哪里,那么我就将我的web.xml一并粘贴在此处(我也搞这个半天...

7

17这段代码如果不用上面的的话是可以实现put

18

32

33spring

34org.springframework.web.servlet.DispatcherServlet

35

-->

36load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法

50指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下

这里我们将过滤器配置好了,我有一段注释掉了,如果用下面这个配置文件->

这段代码如果不用上面的的话是可以实现put

这个配置项如果写在这里的话是可以支持PUT请求的,但是DELETE请求依然不可以,那么我只能选择第一种方法了

这一段的方法是用 org.springframework.web.filter.HiddenHttpMethodFilter 的内置过滤器类进行对http请求的标准化。这样让我们可以自己声明请求的方式。

配置完成这个以后,我们在ajax里面需要传递一个参数_method:"PUT"  _method:"DELETE",但是请求方式仍然是POST

 [Java <wbr>springMVC] <wbr>Restful风格API接口设计 <wbr>二 

这样配置的话,我们已经可以实现对DELETE修饰的方法进行访问,同样_method:'PUT'我们可以对PUT修饰的方法进行访问,这样我们上面定义的控制器类已经可以实现了。


本文为七小站主原创作品,转载请注明出处:http://www.cnblogs.com/qixiaoyizhan/ 且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值