zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    ssm之spring+springmvc+mybatis整合初探
    mybatis缓存之整合第三方缓存工具ehcache
    mybatis缓存之二级缓存
    mybatis缓存之一级缓存
    mybatis动态sql之利用sql标签抽取可重用的sql片段
    mybatis动态sql之bind标签
    mybatis动态sql之内置参数_parameter和_databaseId
    mybatis动态sql之使用foreach进行批量插入的两种方式
    mybatis动态sql之foreach补充(三)
    Visitor Pattern
  • 原文地址:https://www.cnblogs.com/wwzyy/p/5838785.html
Copyright © 2011-2022 走看看