<!-- 配置 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> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置 DispatcherServlet 的一个初始化参数: 配置 SpringMVC 配置文件的位置和名称 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
springmvc.xml:
<context:component-scan base-package="cn.ccsu.springmvc.handler"></context:component-scan> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> </bean>
目标方法:
@RequestMapping(value = "/TestRestDelete/{id}", method = RequestMethod.DELETE) public String testRestDelete(@PathVariable("id") Integer id) { System.out.println("testRestDelete id:" + id); return "success"; } @RequestMapping(value = "/TestRest/{id}", method = RequestMethod.POST) public String testRestPost(@PathVariable("id") Integer id) { System.out.println("testRestPost id:" + id); return "success"; } @RequestMapping(value = "/TestRestPut/{id}", method = RequestMethod.PUT) public String testRestPut(@PathVariable("id") Integer id) { System.out.println("testRestPut id:" + id); return "success"; }
html表单:
<form action="springmvc/TestRestPut/120" method="post"> <input type="hidden" name="_method" value="PUT" /> <input type="submit" value="Rest Put" /> </form>
哥们,我也是这样,web.xml html都写对了,可就是405,不接受POST请求啊。
HiddenHttpMethodFilter的 url-pattern 过滤范围 设置为: /*