SpringMvc-用RESTful处理put和delete

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

什么是restful,引用百度百科中的解释就是:一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
Restful是一种设计风格。对于我们Web开发人员来说。就是使用一个url地址表示一个唯一的资源。
然后把原来的请求参数加入到请求资源地址中。然后原来请求的增,删,改,查操作。改为使用HTTP协议中请求方式GET、POST、PUT、DELETE表示。
把请求参数加入到请求的资源地址中
原来的增,删,改,查。使用HTTP请求方式,POST、DELETE、PUT、GET分别一一对应。(以上解释来自百度)

自我理解;举个例子;我可以将一种类型的资源统一设置一个路径,比如/user,然后我想条件查询就写一个路径为/user/1
然后如果是想增删改查需要在RequestMapping写上对应的方法GET、POST、PUT、DELETE

一、用RESTful处理put

注意;浏览器目前只能发送get和post请求
若要发送put和delete请求,需要在web.xml种配置一个过滤器HiddenHttpMethodFIlter
配置了过滤器之后,发送的请求要满足两个条件,才能将请求方式转换为put或delete
1;当前请求必须为post
2;当前请求必须传输请求参数_method,_method的值才是最终的请求方式(详情见index.html种的put和delete请求)

index.html传参代码

注意传入参数的时候,因为目前学习的内容中只有post和get方法,所以如果要穿put方法,需要在form表单中添加一个input,并且name必须为_method,值必须为put
并且传入的form表单的method值必须为post

<form th:action="@{/user}" method="post">
	<!--主要代码,name的值必须为_method,value的值必须为put-->
    <input type="hidden" name="_method" value="put">
    <input type="submit" value="测试修改用户信息-">
</form>

<form th:action="@{/user/2}" method="post">
	<!--主要代码,name的值必须为_method,value的值必须为delete-->
    <input type="hidden" name="_method" value="delete">
    <input type="submit" value="测试删除用户信息">
</form>

配置web.xml文件

这里如果要知道如何实现的话,需要自己去看HiddenHttpMethodFilter的源码分析,总的来说就是设置了一个过滤器,传入的form表单的method值必须为post. 如果有参数_method,并且menthod的值为put或者delete,则将请求方式设置为PUT或者DELETE

<!--设置RESTful风格的put和delete请求过滤器-->
    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

控制层代码

@RequestMapping(value = "/user",method = RequestMethod.PUT)
    public String testRestByUserToPut(){
        System.out.println("修改用户信息--->/user--->method = RequestMethod.put");
        return "success";
    }

一、用RESTful处理delete

index.html传参代码

<form th:action="@{/user/2}" method="post">
    <input type="hidden" name="_method" value="delete">
    <input type="submit" value="测试删除用户信息">
</form>

控制层代码

@RequestMapping(value = "/user/{id}",method = RequestMethod.DELETE)
    public String testRestByUserToDelete(@PathVariable("id") Integer id){
        System.out.println("根据id删除用户信息--->/user/"+id+"");
        return "success";
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值