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 ...
随机推荐
- python中的缓存技术
python缓存技术 def console(a,b): print('进入函数') return (a,b) print(console(3,'a')) print(console(2,'b')) ...
- JAVA FileUtils(文件读写以及操作工具类)
文件操作常用功能: package com.suning.yypt.business.report; import java.io.*; import java.util.*; @SuppressWa ...
- centos_mysql踩坑
1 mysql安装 a: #wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm b:rpm -ivh mysq ...
- Python CookBook(self report)
Python CookBook 中文版:https://python3-cookbook.readthedocs.io/zh_CN/latest/copyright.html 英文版:https:// ...
- struts2自定义拦截器 设置session并跳转
实例功能:当用户登陆后,session超时后则返回到登陆页面重新登陆. 为了更好的实现此功能我们先将session失效时间设置的小点,这里我们设置成1分钟 修改web.xml view plainco ...
- C# WinfForm 控件之dev报表 XtraReport (一) 初了解
这个控件其实用法和fast也差不了太多但如果没接触过 真有种老虎吃天的感觉 1.这里先不说那些高深的先说最基本的 在窗体中显示一个设计好的 模版 1.1一般设计和这个程序是分着的为了方便我就先把他们合 ...
- 36-Ubuntu-用户管理-01-新建用户useradd
创建用户/设置密码/删除用户/确认用户信息 序号 命令 作用 说明 01 sudo useradd -m -g 组名 新建用户名 添加新用户 -m 自动建立用户家目录 -g 指定用户所在的组,否则会建 ...
- AForge.Video.FFMPEG库几个注意事项
同事开发过程中,读写摄像头遇到的问题. 在录制和取消反复切换就会报内存越界的错误,这是由于open和close没有线程同步造成的. 参考如下文章得到了解决思路,最后Open和Close用一个静态锁解决 ...
- Linux 档案目录的结构及功能(鸟哥私房菜)
- 机器学习改善Interpretability的几个技术
改善机器学习可解释性的技术和方法 尽管透明性和道德问题对于现场的数据科学家来说可能是抽象的,但实际上,可以做一些实际的事情来提高算法的可解释性 算法概括 首先是提高概括性.这听起来很简单,但并非那么简 ...