• (续)SSM整合之springmvc笔记(RESTful之HiddenHttpMethodFilter源码解析)(P147)了解


    RESTful之HiddenHttpMethodFilter源码解析

    由于浏览器只支持发送 get post 方式的请求,那么该如何发送 put delete 请求呢?
    SpringMVC 提供了 HiddenHttpMethodFilter 帮助我们 POST 请求转换为 DELETE PUT 请求
    HiddenHttpMethodFilter 处理 put delete 请求的条件:
    a> 当前请求的请求方式必须为 post
    b> 当前请求必须传输请求参数 _method
    满足以上条件, HiddenHttpMethodFilter 过滤器就会将当前请求的请求方式转换为请求参数
    _method 的值,因此请求参数 _method 的值才是最终的请求方式
    web.xml 中注册 HiddenHttpMethodFilter
    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>

    找到web.xml下面的HiddenHttpMethodFilter

    打开HiddenHttpMethodFilter  Ctrl+左健

    HiddenHttpMethodFilter extends OncePerRequestFilter

    Alt +7  打开类结构

     

     

    打开methodParam

     补:

    派生注解

    1. package com.atguigu.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.*;
    4. /**
    5. * 查询所有的用户信息-->/user-->get
    6. * 根据id查询用户信息-->/user/1-->get
    7. * 添加用户信息-->/user-->post
    8. * 修改用户信息-->/user-->put
    9. * 删除用户信息-->/user/1-->delete
    10. *
    11. * 注意:浏览器目前只能发送get和post请求
    12. * 若要发送put和delete请求,需要在web.xml中配置一个过滤器HiddenHttpMethodFilter
    13. * 配置了过滤器之后,发送的请求要满足两个条件,才能将请求方式转换为put或delete
    14. * 1、当前请求的请求方式必须为post
    15. * 2、当前请求必须传输请求参数_method,_method的值才是最终的请求方式
    16. */
    17. @Controller
    18. public class TestRestController {
    19. /*查询所有的用户信息*/
    20. //@RequestMapping(value = "/user", method = RequestMethod.GET)
    21. @GetMapping("/user")
    22. public String getAllUser(){
    23. System.out.println("查询所有的用户信息-->/user-->get");
    24. return "success";
    25. }
    26. /*根据id查询用户信息*/
    27. //@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
    28. @GetMapping("/user/{id}")
    29. public String getUserById(@PathVariable("id") Integer id){
    30. System.out.println("根据id查询用户信息-->/user/"+id+"-->get");
    31. return "success";
    32. }
    33. /*添加用户信息*/
    34. //@RequestMapping(value = "/user", method = RequestMethod.POST)
    35. @PostMapping("/user")
    36. public String insertUser(){
    37. System.out.println("添加用户信息-->/user-->post");
    38. return "success";
    39. }
    40. /*修改用户信息*/
    41. //@RequestMapping(value = "/user", method = RequestMethod.PUT)
    42. @PutMapping("/user")
    43. public String updateUser(){
    44. System.out.println("修改用户信息-->/user-->put");
    45. return "success";
    46. }
    47. /*删除用户信息*/
    48. //@RequestMapping(value = "/user/{id}", method = RequestMethod.DELETE)
    49. @DeleteMapping("/user/{id}")
    50. public String deleteUser(@PathVariable("id") Integer id){
    51. System.out.println("删除用户信息-->/user/"+id+"-->delete");
    52. return "success";
    53. }
    54. }
     
      

     

     
     
  • 相关阅读:
    单线程模型想象不到的高并发能力、多路复用是效率杠杆
    下载运行ps软件提示因为计算机中丢失d3dcompiler_47.dll解决方法
    【C++】类和对象(四)“这三种”成员变量只能放在初始化列表中初始化,你都知道吗?
    SQL--DDL数据定义语言(Oracle)
    基于Python的超市管理系统毕业设计源码111042
    webgl未使用独立显卡报告
    HomeAssistant快速使用教程一:Docker安装Node-Red和HomeAssistant,并将二者配置连接
    谷歌云的利润增长才刚刚开始
    高分三号1米分辨率飞机检测识别数据集
    (yum+内网)centos7两种方式安装jdk11
  • 原文地址:https://blog.csdn.net/m0_59281987/article/details/127944622