内容简介:之前的文章1、什么是Rest风格?2、基于
概述
之前的文章 springmvc使用注解声明控制器与请求映射 有简单提到过控制器与请求映射,这一次就详细讲解一下 SpringMVC
的 REST
风格的四种请求方式及其使用方法。
你能get的知识点
1、什么是Rest风格?
2、基于 springmvc
实现REST风格的四种请求方式
3、post请求转换为 delete
与 put
请求
4、解决请求乱码问题
5、 RequestMapping
注解的属性
@
目录
-
- 二:REST风格的四种请求方式
- 贰:基于springmvc实现REST风格的四种请求方式
-
- 一:post请求转换为delete与put请求
- 肆:RequestMapping注解的属性
壹:rest风格
一:什么是Rest风格?
REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
简单来说:使用URL定位资源,用HTTP动词(例如GET,POST,DELETE,DETC等)描述操作。
二:REST风格的四种请求方式
请求 | 说明 | 用于 | 例子 | 例子说明 |
---|---|---|---|---|
@GetMapping | 匹配GET方式的请求; | 一般用于读取数据 | /user/1 | 获取一号用户信息 |
@PostMapping | 匹配POST方式的请求; | 一般用于新增数据 | /user/1 | 新增一号用户 |
@PutMapping | 匹配PUT方式的请求; | 一般用于更新数据 | /user/1 | 修改一号用户 |
@DeleteMapping | 匹配DELETE方式的请求; | 一般用于删除数据 | /user/1 | 删除一号用户 |
也就是说,我们不再使用 /user/getuser?user=1
、 /user/deleteuser?user=1
等来区分使用者的行为操作,而是使用不同的请求方式来描述行为。
贰:基于 springmvc
实现REST风格的四种请求方式
Spring框架的4.3版本后,引入了新的组合注解,来帮助简化常用的 HTTP
方法的映射,并更好的表达被注解方法的语义。
@GetMapping = @requestMapping(method = RequestMethod.GET)。 @PostMapping = @requestMapping(method = RequestMethod.POST)。 @DeleteMapping = @requestMapping(method = RequestMethod.DELETE)。 @PutMapping = @requestMapping(method = RequestMethod.PuT)。
一:@GetMapping请求
以 @GetMapping
为例,该组合注解是 @RequestMapping(method = RequestMethod.GET)
的缩写,它会将HTTP GET请求映射到特定的处理方法上。
RequestMapping
后所有属性都是可选的,但其默认属性是 value
。当 value
是其唯一属性时,可以省略属性名。
@RequestMapping(value = "/rest",method = RequestMethod.GET) public String restGet(){ System.out.println("Get请求,hello....."); return "hello"; }
@GetMapping
是一个组合注解,是 @RequestMapping(method = RequestMethod.GET)
的缩写。
所以我们可以将以上代码简单的写成:
@GetMapping("/rest") public String restGet(){ System.out.println("Get请求,hello....."); return "hello"; }
二:@PostMapping请求
@PostMapping("/rest") public String restPost(){ System.out.println("Post请求,hello....."); return "hello"; }
三:@DeleteMapping请求
@DeleteMapping("/rest") public String restDelete(){ System.out.println("Delete请求,hello....."); return "redirect:rest"; }
四:@PutMapping请求
@PutMapping("/rest") public String restPut(){ System.out.println("Put请求,hello....."); return "redirect:rest"; }
叁:问题
一:post请求转换为delete与put请求
由于form表单只支持GET和POST请求,而不支持DELETE和PUT等请求方式,所以我们实现delete和put请求往往会报错找不到方法。
Spring提供了一个过滤器 HiddenHttpMethodFilter
,可以将DELETE和PUT请求转换为标准的HTTP方式,即能将POST请求转为DELETE或PUT请求。
具体实现:在web.xml文件中配置过滤器HiddenHttpMethodFilter
<!--使用Rest风格的URI,将页面普通的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>
注意:delete和put请求最好使用Redirect(重定向),不然会报404错误。
二:解决请求乱码问题
<!-- 解决乱码问题--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
注意:编码的过滤器应该放在所有的过滤器前,否则不生效
肆:RequestMapping注解的属性
属性名 | 类型 | 描述 |
---|---|---|
name | String | 可选属性,用于为映射地址指定别名。 |
value | String[] | 可选属性,同时也是默认属性,用于映射一-个请求和一种方法,可以标注在一-个方法或一个类上。 |
method | RequestMethod[] | 可选属性,用于指定该方法用于处理哪种类型的请求方式,其请求方式包括GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE和TRACE例如method=RequestMethod.GET表示只支持GET请求,如果需要支持多个请求方式则需要通过{}写成数组的形式,并且多个请求方式之间是有英文逗号分隔。 |
params | String[] | 可选属性,用于指定Request中必须包含某些参数的值,.才可以通过其标注的方法处理。 |
headers | String[] | 可选属性,用于指定Request中必须包含某些指定的header的值,才可以通过其标注的方法处理。。 |
consumes | String[] | 可选属性,用于指定处理请求的提交内容类型(Content-type),比如application/json,text/html等。 |
produces | String[] | 可选属性,用于指定返回的内容类型,返回的内容类型必,须是request请求头(Accept)中所包含的类型。 |
表中所有属性都是可选的,但其默认属性是value。当value是其唯一属性时, 可以省略属性名。
例如,下面两种标注的含义相同:
@RequestMapping(value="/rest")
@RequestMapping("/rest")
伍:测试
新建index.html文件,加入以下代码。新建hello.html,用于请求后的页面跳转。
<h2>各种请求</h2> <a href="rest">hello Get请求</a> <form action="rest" method="post"> <button type="submit">hello Post请求</button> </form> <form action="rest" method="post"> <input type="hidden" name="_method" value="delete"> <button type="submit">hello Delete请求</button> </form> <form action="rest" method="post"> <input type="hidden" name="_method" value="put"> <button type="submit">hello put请求</button> </form>
结果:
以上所述就是小编给大家介绍的《【spring springmvc】这里有你想要的SpringMVC的REST风格的四种请求方式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 调查显示雇主想要 JavaScript 而开发者想要 Python
- 前端想要了解的Nginx
- 如何搜索你想要的R包?
- 抖音推新品“抖店”:想要导流线下
- 想要做读写分离,送你一些小经验
- 我不想优化VM,只想要eval
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
勇敢新世界‧互聯網罪與罰
許煜、劉細良 / CUP / 2005 / $48
我天天上網數小時,為的是要在節目裡面介紹世界的最新動態,尤其是網絡這個世界本身日新月異的變化。所以我不可能不注意到BT、共享軟件、 Wikipedia、網絡監管等各種影響政治、社會、經濟及文化的重要網絡現象。但是我發現市面上一直沒有一本內容充實全面,資料切時的中文參考書,直到這本《互聯網罪與罰》。而且,最大的驚喜是它易讀好看,簡直就像故事書。 梁文道 鳳凰衛視 《網羅天下......一起来看看 《勇敢新世界‧互聯網罪與罰》 这本书的介绍吧!