• Spring MVC实现RESTful


    Spring MVC 中,我们可以通过 @RequestMapping +@PathVariable 注解的方式,来实现 RESTful 风格的请求。

    1. 通过@RequestMapping 注解的路径设置

    当请求中携带的参数是通过请求路径传递到服务器中时,我们就可以在 @RequestMapping 注解的 value 属性中通过占位符 {xxx} 来表示传递的参数,示例代码如下。

    @RequestMapping("/testRest/{id}/{username}")

    注意:value 属性中占位符的位置应当与请求 URL 中参数的位置保持一致,否则会出现传错参数的情况。

    2. 通过 @PathVariable 注解绑定参数

    我们可以在控制器方法的形参位置通过 @PathVariable 注解,将占位符 {xxx} 所表示的参数赋值给指定的形参。

    1. @RequestMapping("/testRest/{id}/{username}")
    2. public String testRest(@PathVariable("id") String id, @PathVariable("username")
    3. String username) {
    4. System.out.println("id:" + id + ",username:" + username);
    5. return "success";
    6. }

    3. 通过 HiddenHttpMethodFilter 对请求进行过滤

    由于浏览器默认只支持发送 GET 和 POST 方法的请求,因此我们需要在 web.xml 中使用 Spring MVC 提供的 HiddenHttpMethodFilter 对请求进行过滤。这个过滤器可以帮助我们将 POST 请求转换为 PUT 或 DELETE 请求,其具体配置内容如下。 

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

     HiddenHttpMethodFilter 处理 PUT 和 DELETE 请求时,必须满足以下 2 个条件:

    • 当前请求的请求方式必须为 POST;
    • 当前请求必须传输请求参数 _method。

    在满足了以上条件后,HiddenHttpMethodFilter 过滤器就会将当前请求的请求方式转换为请求参数 _method 的值,即请求参数 _method 的值才是最终的请求方式,因此我们需要在 POST 请求中携带一个名为 _method 的参数,参数值为 DELETE 或 PUT。

    注意:若 web.xml 中同时存在 CharacterEncodingFilter 和 HiddenHttpMethodFilter 两个过滤器,必须先注册 CharacterEncodingFilter,再注册 HiddenHttpMethodFilter。

     

  • 相关阅读:
    计算机网络_计算机的概念、组成、功能、分类
    [附源码]计算机毕业设计绿色生活交流社区网站Springboot程序
    OpenVPN服务器搭建与OpenVPN客户端访问
    IAR9.30以上版本安装、注册、新建工程和配置过程详细介绍
    express脚手架及koa脚手架
    【Typora】解决单词爆红问题
    小程序样式问题
    JavaEE多线程知识--计时器
    DevOps 必备的 Kubernetes 安全清单
    STC15单片机-状态机点灯
  • 原文地址:https://blog.csdn.net/qq_43079001/article/details/132717153