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

     

  • 相关阅读:
    debian、ubuntu打包deb包工具,图形界面deb打包工具mkdeb
    Postgresql进程卡住无法退出原因和解决方法
    华为开发者大会2022,发布鸿蒙开发套件
    Vulnhub | DC: 4 |【实战】
    MySQL事务管理
    聊一聊 TLS/SSL
    wpf prism当中 发布订阅 IEventAggregator
    centos 上容器配置X11
    VirtualBox配置共享文件夹,如果你一直安装增强功能失败,又没有尝试过改内核版本。。。
    nodejs--开发自己的项目——4.1——用户登录函数模块-token-JWT部分(验证机制)——支持跨域
  • 原文地址:https://blog.csdn.net/qq_43079001/article/details/132717153