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)的更多相关文章

  1. Spring7:基于注解的Spring MVC(下篇)

    Model 上一篇文章<Spring6:基于注解的Spring MVC(上篇)>,讲了Spring MVC环境搭建.@RequestMapping以及参数绑定,这是Spring MVC中最 ...

  2. Spring Security(08)——intercept-url配置

    http://elim.iteye.com/blog/2161056 Spring Security(08)--intercept-url配置 博客分类: spring Security Spring ...

  3. Spring学习(三)——Spring中的依赖注入的方式

    [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...

  4. Spring学习(二)——Spring中的AOP的初步理解[转]

      [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring. ...

  5. Spring入门(10)-Spring JDBC

    Spring入门(10)-Spring JDBC 0. 目录 JdbcTemplate介绍 JdbcTemplate常见方法 代码示例 参考资料 1. JdbcTemplate介绍 JdbcTempl ...

  6. Spring入门(9)-AOP初探

    Spring入门(9)-AOP初探 0. 目录 什么是面向切面编程 AOP常见术语 AOP实例 参考资料 1. 什么是面向切面编程 Aspect Oriented Programming(AOP),即 ...

  7. Spring入门(8)-基于Java配置而不是XML

    Spring入门(8)-基于Java配置而不是XML 本文介绍如何应用Java配置而不是通过XML配置Spring. 0. 目录 声明一个简单Bean 声明一个复杂Bean 1. 声明一个简单Bean ...

  8. Spring入门(7)-自动检测Bean

    Spring入门(7)-自动检测Bean 本文介绍如何自动检测Bean. 0. 目录 使用component-scan自动扫描 为自动检测标注Bean 1. 使用component-scan自动扫描 ...

  9. Spring入门(6)-使用注解装配

    Spring入门(6)-使用注解装配 本文介绍如何使用注解装配. 0. 目录 使用Autowired 可选的自动装配 使用Qualifier选择 1. 使用Autowired package com. ...

  10. Spring入门(5)-自动装配Bean属性

    Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...

随机推荐

  1. artTemplate性能卓越的 js 模板引擎

    artTemplate-3.0 新一代 javascript 模板引擎 目录 特性 快速上手 模板语法 下载 方法 NodeJS 使用预编译 更新日志 授权协议 特性 性能卓越,执行速度通常是 Mus ...

  2. unzip失败,unzip:报错End-of-central-directory signature not found、scp:报错no space left on device

    文章目录 问题 解决 拓展 问题 通过rz命令传本地文件到本地服务器,失败. 通过scp命令尝试报错: no space left on device 意思是目的机器内存不够用了,但是传过去了,但是没 ...

  3. 初探gitlab & gitlab-runner & asp.net core持续集成

    文章简介  gitlab & gitlab-runner 简介 基于gitlab & gitlab-runner 的asp.net core webapi 极简持续集成实践 gitla ...

  4. mysql中explain详解

    explain语法 有两种用法: 1.EXPLAIN tbl_name    2.EXPLAIN [EXTENDED] SELECT select_options 为了更好的说明它,我们需要建两张表, ...

  5. Chrome调试小技巧

    前言: 除了我们日常使用的调试方法,在Chrome中,其含有一些有意思的方法,有助于提高我们的开发调试效率. Sources页 command + p 文件跳转 使用Sublime的人或习惯用comm ...

  6. C#跨线程访问(二)----thread参数、回调传参数

    一.单个参数(封箱也可实现多参数) class B  {      public static void Main()      {          Thread t = new Thread(ne ...

  7. Mac上Chrome浏览器跨域解决方案

    现在比较新的浏览器在本地调试时AJAX请求,基本都会有跨域问题.相应的解决方案也挺多的,工具也不少.像charles等抓包工具等.不过最简单的就是移除浏览器的同源限制. 我们要做的第一步,就是创建一个 ...

  8. 区别 |python |[-1]、[:-1]、[::-1]、[2::-1]的使用

    格式 list[start :end :方向] start——>开始下标位置 end——>结束下标位置 方向——> 读取方向.默认正向,-1表示反方向读取 如: import num ...

  9. Redis缓存数据库常见操作

    Jedis的最为常见的操作.主要包括常用的列表(list).集合(set).有序集合(sorted set).哈希表(hash)等数据结构,以及其他特性支持. 参考资料:http://hello-ni ...

  10. css属性大全(基础篇)

      什么是CSS? CSS全称为Cascading Style Sheets,中文翻译为“层叠样式表”,简称CSS样式表,所以称之为层叠样式表(Cascading Stylesheet)简称CSS.在 ...