Spring REST(4)
REST风格
/user/1 get请求 获取用户
/user/1 post请求 新增用户
/user/1 put请求 更新用户
/user/1 delete请求 删除用户
在Spring MVC中如何提交put和delete请求呢?
需要在web.xml文件中配置一个HiddenHttpMethodFilter过滤器。该过滤过滤post请求,如果在post请求中有个一个_method参数,那么_method参数值就是请求方式。所以在jsp页面可以这样写

1 <a href="user/1">GET请求</a>
2
3 <form action="user/1" method="post">
4 <input type="submit" value="POST请求"/>
5 </form>
6
7 <form action="user/1" method="post">
8 <input type="hidden" name="_method" value="PUT">
9 <input type="submit" value="PUT请求"/>
10 </form>
11
12 <form action="user/1" method="post">
13 <input type="hidden" name="_method" value="DELETE">
14 <input type="submit" value="DELET请求"/>
15 </form>

web.xml配置过滤器

1 <filter>
2 <filter-name>methodFilter</filter-name>
3 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
4 </filter>
5
6 <filter-mapping>
7 <filter-name>methodFilter</filter-name>
8 <url-pattern>/*</url-pattern>
9 </filter-mapping>

控制器

1 package com.proc;
2
3 import org.springframework.stereotype.Controller;
4 import org.springframework.web.bind.annotation.PathVariable;
5 import org.springframework.web.bind.annotation.RequestMapping;
6 import org.springframework.web.bind.annotation.RequestMethod;
7
8 @Controller
9 public class User {
10
11 @RequestMapping(value="user/{id}",method=RequestMethod.GET)
12 public String get(@PathVariable("id") Integer id){
13 System.out.println("获取用户:"+id);
14 return "hello";
15 }
16
17 @RequestMapping(value="user/{id}",method=RequestMethod.POST)
18 public String post(@PathVariable("id") Integer id){
19 System.out.println("添加用户:"+id);
20 return "hello";
21 }
22
23 @RequestMapping(value="user/{id}",method=RequestMethod.PUT)
24 public String put(@PathVariable("id") Integer id){
25 System.out.println("更新用户:"+id);
26 return "hello";
27 }
28
29 @RequestMapping(value="user/{id}",method=RequestMethod.DELETE)
30 public String delete(@PathVariable("id") Integer id){
31 System.out.println("删除用户:"+id);
32 return "hello";
33 }
34 }

我们一次点击GET请求、POST请求、PUT请求和DELETE请求
获取用户:1
添加用户:1
更新用户:1
删除用户:1
【总结】:发出PUT请求和DELET请求的步骤
1、在发出请求时必须是POST请求
2、在POST请求中添加一个名为_method的参数,其值用来指定是PUT请求还是DELETE请求
3、配置HiddenHttpMethodFilter过滤器。该过滤器的作用是POST请求可以转换成PUT或DELET请求
Spring REST(4)的更多相关文章
- Spring7:基于注解的Spring MVC(下篇)
Model 上一篇文章<Spring6:基于注解的Spring MVC(上篇)>,讲了Spring MVC环境搭建.@RequestMapping以及参数绑定,这是Spring MVC中最 ...
- Spring Security(08)——intercept-url配置
http://elim.iteye.com/blog/2161056 Spring Security(08)--intercept-url配置 博客分类: spring Security Spring ...
- Spring学习(三)——Spring中的依赖注入的方式
[前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...
- Spring学习(二)——Spring中的AOP的初步理解[转]
[前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring. ...
- Spring入门(10)-Spring JDBC
Spring入门(10)-Spring JDBC 0. 目录 JdbcTemplate介绍 JdbcTemplate常见方法 代码示例 参考资料 1. JdbcTemplate介绍 JdbcTempl ...
- Spring入门(9)-AOP初探
Spring入门(9)-AOP初探 0. 目录 什么是面向切面编程 AOP常见术语 AOP实例 参考资料 1. 什么是面向切面编程 Aspect Oriented Programming(AOP),即 ...
- Spring入门(8)-基于Java配置而不是XML
Spring入门(8)-基于Java配置而不是XML 本文介绍如何应用Java配置而不是通过XML配置Spring. 0. 目录 声明一个简单Bean 声明一个复杂Bean 1. 声明一个简单Bean ...
- Spring入门(7)-自动检测Bean
Spring入门(7)-自动检测Bean 本文介绍如何自动检测Bean. 0. 目录 使用component-scan自动扫描 为自动检测标注Bean 1. 使用component-scan自动扫描 ...
- Spring入门(6)-使用注解装配
Spring入门(6)-使用注解装配 本文介绍如何使用注解装配. 0. 目录 使用Autowired 可选的自动装配 使用Qualifier选择 1. 使用Autowired package com. ...
- Spring入门(5)-自动装配Bean属性
Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...
随机推荐
- 12.RabbitMQ多机集群
配置两台Linux CentOS 6.7虚拟主机 CentOS6.7下载地址 https://pan.baidu.com/s/1i5GPg9n 安装视频下载 https://pan.baidu.c ...
- thinkphp+layui多图上传(1)thinkphp5+layui实现多图上传保存到数据库,可以实现图片自由排序,自由删除。
公共css代码 <style> .layui-upload-img { width: 90px; height: 90px; margin: 0; } .pic-more { width: ...
- eclipse修改项目访问前缀
eclipse项目右击 properties---web project setting---context root修改项目访问前缀
- 2019杭电多校第四场hdu6621 K-th Closest Distance(二分答案+主席树)
K-th Closest Distance 题目传送门 解题思路 二分答案+主席树 先建主席树,然后二分答案mid,在l和r的区间内查询[p-mid, p+mid]的范围内的数的个数,如果大于k则说明 ...
- python之保留有限的历史记录(collections.deque)
1.deque(maxlen=N)创建一个固定长度的队列,当有新的记录加入而队列已经满时,会自动移除老的记录. from collections import deque q = deque(maxl ...
- day02 mysql基本语句 存储引擎 数据类型 完整性约束
day02 mysql 一.sql的基本语句 系统数据库 information_schema: 虚拟库, 不占磁盘空间(在内存汇中): 存的是数据库启动后的一些参数, 如 ...
- 论文阅读笔记:《Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling》
论文阅读:<Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling& ...
- C/C++中的return和exit
return:只是退出函数; ~是关键字. exit:是退出进程; ~是函数名. 整理自:https://www.cnblogs.com/cxchanpin/p/6927025.html
- 简单介绍下怎么在spring中使用RabbitMQ
这篇文章主要介绍了简单了解如何在spring中使用RabbitMQ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 常见的消息中间件产品: (1)Ac ...
- Linux基本使用命令
一.常用命令归纳分类 课外网站 http://man.linuxde.net/ http://www.jb51.net/linux/ http ...