【springMVC】RequestMapping_HiddenHttpMethodFilter 过滤器在tomcat7/8实现的问题

时间:2022-07-23 18:25:07

初次尝试springMVC的味道,看看理论,看看代码,觉得挺简单容易掌握,这是我对springMVC的第一印象;可是在实现HiddenHttpMethodFilter时,碰到一个非常奇怪的额问题:项目环境没有问题,代码编写也没有问题,折腾了半个小时始终得不到我要的答案。。。。结果才发现是自己的运气碰上这个HiddenHttpMethodFilter的不可忽视的问题,下面是过程和最终的解决方案。

项目代码写好后,我是发布在Tomcat8中【springMVC】RequestMapping_HiddenHttpMethodFilter 过滤器在tomcat7/8实现的问题(我的IDE工具有Tomcat7),进入get,post,put,delete测试的jsp中,get,post顺利实现,可是put和delete始终遇到了:

HTTP Status 405 - JSPs only permit GET POST or HEAD

折腾了那么久,我的内心是崩溃的,明明就是没问题嘛,给我弄得是哪出呢????

最后发现是Tomcat容器的问题,Tomcat8版本升级service方法中不在支持put和delete,因此,以后使用你懂得...
问题源码附上:
 public void service (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
+
+ String method = request.getMethod();
+
+ if (!"GET".equals(method) && !"POST".equals(method) &&
+ !"HEAD".equals(method)) {
+ // Specification states behaviour is undefined
+ // Jasper opts to reject any other verbs, partly as they are
+ // unlikely to make sense in a JSP context and partly to protect
+ // against verb tampering
+ response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED,
+ Localizer.getMessage("jsp.error.servlet.invalid.method"));
+ }