springMVC-Restful风格

基本介绍

REST:即Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用.
1.HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种

基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。


2.实例传统的请求方法:     Rest风格
getBook?id=1 GET              /book/1 HTTP GET:得到id=1的book
delete?id=1 GET                 /book/1 HTTP DELETE:删除id=1的book
update POST                      /book/1 HTTP PUT:更新id=1的book
add POST                           /book HTTP POST:新增book

(注意这里的/book/1并没有说属性名是book, rest这里强调的是 http请求的四个动作get,post,delte,put)

Rest的nl请求风格是目前比较流行的方式,他使用不同的请求方式,来区别我们的操作类型,比如GET请求,就表示查询,用POST请求就表示添加,用PUT请求就表示更新,用DELETE方式请求,就表示删除。
目前的浏览器支持GET和POST方式,如果我们希望以PUT方式和DELETE方式请求,就需要转换。|

Rest核心过滤器

1)当前的浏览器只支持post/get请求,因此为了得到put/delete的请求方式需要使用Spring提供的HiddenHttpMethodFilter过滤器进行转换.
 

(2)HiddenHttpMethodFilter:浏览器form表单只支持GET与POST 请求,而DELETE、PUT等method并不支持,Spring3.0添加了一个过滤器,可以将这些请求换为标准的http方法,使得支持GET、POST、PUT与DELETE请求。
 

(3)HiddenHttplMethodFilter只能对post请求方式进行转换,因此我们需要特别的注意这一点
 

(4)这个过滤器需要在web.xml中配置
(5)画出原理示意图

l

示例:

1、在@RequestMapping指定 页面请求必须是delete

//删除【delete】
    @RequestMapping(value = "/book/{id}",method = RequestMethod.DELETE)
    public String deleteBook() {
        System.out.println("删除书籍");
        return "bookOK";
    }

2、请注意隐藏域,name值务必为"_method"(spring底层写死,前提使用的是

HiddenHttpMethodFilter(但是该过滤器现在在springboot2.*开始已经弃用,使用webflux注解来进行post提交的delete、put请求的转换))

<%--    为了配合将get转为delete,需要加一个隐藏表单--%>
<form action="user/book/300" method="post" id = "hiddenform">

    <input type="hidden" name="_method" value="delete">
    <input type="submit" name="删除书籍">
</form>

3、在web.xml配置

 <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>

4、tomcat8以上可能,使用该方法可以执行到目标方法,但是跳转时发生405错误,解决方式可以在jsp页面中,添 isErrorPage= true(发生错误,可以仍然跳转)

相关推荐

  1. SpringMVCREST风格

    2023-12-17 08:34:02       38 阅读
  2. SpringMVC RESTful风格

    2023-12-17 08:34:02       35 阅读
  3. restful风格springmvc中的例子和简介

    2023-12-17 08:34:02       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-17 08:34:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-17 08:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-17 08:34:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-17 08:34:02       20 阅读

热门阅读

  1. CentOS新系统工具安装

    2023-12-17 08:34:02       51 阅读
  2. 如何下载 GitHub 私有仓库

    2023-12-17 08:34:02       34 阅读
  3. FlinkSQL的联结和函数

    2023-12-17 08:34:02       40 阅读
  4. 凑够五个字

    2023-12-17 08:34:02       44 阅读
  5. uniapp 消息队列 localstorage 消息队列用法

    2023-12-17 08:34:02       42 阅读
  6. Qt绘图控件的实现

    2023-12-17 08:34:02       40 阅读
  7. nlohmann-json使用

    2023-12-17 08:34:02       51 阅读
  8. 深拷贝和浅拷贝(js的问题)

    2023-12-17 08:34:02       45 阅读
  9. 复盘理解/实验报告梳理 数据结构PTA实验二

    2023-12-17 08:34:02       45 阅读
  10. [Django-05 ]自定义sql查询

    2023-12-17 08:34:02       40 阅读
  11. 微信小程序怎样给事件传值的

    2023-12-17 08:34:02       39 阅读
  12. huggingface使用与环境移植

    2023-12-17 08:34:02       41 阅读