• Spring MVC 使用HiddenHttpMethodFilter配置Rest风格的URL


    /**
            Rest 风格的 URL. 
            以 CRUD 为例: 
             新增: /order POST 
             修改: /order/1 PUT update?id=1 
             获取:/order/1 GET get?id=1 
             删除: /order/1 DELETE delete?id=1
          
         如何发送 PUT 请求和 DELETE 请求呢 ? 
            1. 需要在web.xml文件中配置 HiddenHttpMethodFilter 
            <!-- 
                配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE 或 POST 请求 
            -->
            <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>
            
            2. 需要发送 POST 请求
            3. 需要在发送 POST 请求时携带一个 name="_method" 的隐藏域, 值为 DELETE 或 PUT
            jsp文件如下:
            <form action="springmvc/testRest/1" method="post">
            <input type="hidden" name="_method" value="PUT"/>
            <input type="submit" value="TestRest PUT"/>
            </form>
            <br><br>
        
            <form action="springmvc/testRest/1" method="post">
                <input type="hidden" name="_method" value="DELETE"/>
                <input type="submit" value="TestRest DELETE"/>
            </form>
            <br><br>
            
            <form action="springmvc/testRest" method="post">
                <input type="submit" value="TestRest POST"/>
            </form>
            <br><br>
            
            <a href="springmvc/testRest/1">Test Rest Get</a>
            <br><br>
          
          在 SpringMVC 的目标方法中如何得到 id 呢? 使用 @PathVariable 注解
         
         */
        @RequestMapping(value = "/testRest/{id}", method = RequestMethod.PUT)
        public String testRestPut(@PathVariable Integer id) {
            System.out.println("testRest Put: " + id);
            return SUCCESS;
        }
    
        @RequestMapping(value = "/testRest/{id}", method = RequestMethod.DELETE)
        public String testRestDelete(@PathVariable Integer id) {
            System.out.println("testRest Delete: " + id);
            return SUCCESS;
        }
    
        @RequestMapping(value = "/testRest", method = RequestMethod.POST)
        public String testRest() {
            System.out.println("testRest POST");
            return SUCCESS;
        }
    
        @RequestMapping(value = "/testRest/{id}", method = RequestMethod.GET)
        public String testRest(@PathVariable Integer id) {
            System.out.println("testRest GET: " + id);
            return SUCCESS;
        }
    
        /**
         * @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中.
         * @param id
         * @return
         */
        @RequestMapping("/testPathVariable/{id}")
        public String testPathVariable(@PathVariable("id") Integer id) {
            System.out.println("testPathVariable: " + id);
            return SUCCESS;
        }
    
        @RequestMapping("/testAntPath/*/abc")
        public String testAntPath() {
            System.out.println("testAntPath");
            return SUCCESS;
        }
  • 相关阅读:
    【LeetCode-栈】栈排序
    【LeetCode-数组】旋转数组
    【LeetCode-数组】两个数组的交集 II
    【LeetCode-树】二叉树的层次遍历 II
    【LeetCode-字符串】Fizz Buzz
    【LeetCode-数组】数组的相对排序
    解决Oracle表中数据乱码的问题
    docker搭建mysql 用户名密码忘记了怎么办
    java中如何将string 转化成long
    http三次握手四次挥手
  • 原文地址:https://www.cnblogs.com/wwzyy/p/5838785.html
Copyright © 2020-2023  润新知