1、概述

  HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE,它们分别对应四种基本的操作,GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。
    
    示例:
    —— /order/1        HTTP GET:得到id=1的order
    —— /order/1     HTTP DELETE:删除id=1的order
    —— /order/1     HTTP PUT:更新id=1的order
    —— /order        HTTP POST:新增order

2、如何发送一个PUT和DELETE请求?
    常见的有post和get请求,那么怎么弄一个put和delete请求出来呢?浏览器的form表单只支持GET和POST请求,而DELETE和PUT请求并不支持。为解决这个题,Spring3.0添加了一个 HiddenHttpMethodFilter 过滤器,可以将带有_method参数的http post请求转换为put或delete请求。从而解决问题。

  如何发送PUT和DELETE请求呢?

  ①、需要在web.xml文件中配置一个HiddenHttpMethodFilter:

<!-- 配置org.springframework.web.filter.HiddenHttpMethodFilter:可以把POST请求转化为DELETE或PUT请求 -->
<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>

  ②、需要发送post请求

  ③、在发送post请求时携带一个 name="_method" 的隐藏域,其值为delete或者是put。如下:

<!-- 发送put请求 -->
<form action="rest/put/1" method="post">
<input type="hidden" name="_method" value="put" >
<input type="submit" value="3、tetRest PUT请求">
</form> <!-- 发送delete请求 -->
<form action="rest/delete/1" method="post">
<input type="hidden" name="_method" value="delete" >
<input type="submit" value="4、tetRest DELETE请求">
</form>

  ④、在接受PUT或DELETE请求方法的注解@RequestMapping中设定method为PUT或DELETE,如下:

@RequestMapping(value="/rest/put/{id}", method=RequestMethod.PUT)
public String testRestPut(@PathVariable Integer id){
System.out.println("testRestPut 方法,响应PUT请求。id = " + id); return SUCCESS;
} @RequestMapping(value="/rest/delete/{id}", method=RequestMethod.DELETE)
public String testRestDelete(@PathVariable Integer id){
System.out.println("testRestDelete 方法,响应DELETE请求。id = " + id); return SUCCESS;
}

最新文章

  1. centos6 系统安装 system-config-kickstart 工具
  2. phpcms 标签
  3. 修改navigationbar右侧按钮离屏幕边缘位置
  4. mysql-zabbix-agent
  5. OC: 类的扩展、类的延展、协议、 NSDate
  6. poj3295解题报告(构造、算术表达式运算)
  7. com.android.builder.packaging.DuplicateFile
  8. Apache-rhel5.8环境下编译安装
  9. NET Core开发-读取配置文件Configuration
  10. log4net结构
  11. 孙鑫HTML视频学习总结
  12. phpcms 模板常用标签指南
  13. Python开发:部分第三方库无法在线安装解决方法
  14. request.getRealPath为什么会被代替
  15. Centos 6.5 freeswitch 编译mod_shout
  16. type=hidden
  17. mycat高可用集群搭建
  18. 30行python让图灵机器人和茉莉机器人无止尽的瞎扯蛋
  19. Win32 消息响应顺序
  20. 21.线程池ThreadPoolExecutor实现原理

热门文章

  1. WPF 控件截图位置不正确的问题
  2. Unable to create the store directory. (Exception from HRESULT: 0x80131468)
  3. linux创建线程之pthread_create
  4. 大晚上装CocoaPods出现错误坑爹
  5. 多态&amp;&amp;父类调用子类特有的方法
  6. cocos2dx中的三种基本的数据类型
  7. python学习小结4:类
  8. SQL Server 创建表 添加主键 添加列常用SQL语句【转】
  9. NOI2014 全国互测Round2
  10. Codeforces Round #302 (Div. 2) D. Destroying Roads 最短路