我的基于Spring MVC的Web应用程序存在问题。当我使用方法POST提交表单时,控制器有时会执行方法GET。它完全随机发生。有时它工作正常,有时不工作。 它使用弹簧框架3.1.4(以前是3.0.1)在jboss soa p 5上运行
在前端,我只需执行以下操作即可提交:
document.submitform.submit();
当我在表单提交之前在javascript中记录请求方法时,它始终是POST。但在分析springframework调试日志后,我发现它接收到GET方法:
2014-08-11 11:33:52,894 DEBUG [org.springframework.web.servlet.DispatcherServlet] (ajp-172.31.14.7-8109-9) DispatcherServlet with name 'Flow' processing GET request for [/project/mypage/mypage.htm]
2014-08-11 11:33:52,894 DEBUG [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] (ajp-172.31.14.7-8109-9) Looking up handler method for path /mypage/mypage.htm
2014-08-11 11:33:52,894 DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] (ajp-172.31.14.7-8109-9) Returning cached instance of singleton bean 'myController'
2014-08-11 11:33:52,894 DEBUG [org.springframework.web.servlet.DispatcherServlet] (ajp-172.31.14.7-8109-9) Last-Modified value for [/project/mypage/mypage.htm] is: -1
所以这是我的问题:发送请求时,前端的方法没问题,但在DispatcherServlet中修改了,但请求URI没问题。它完全是随机发生的。可能是什么原因呢? 据我所知,还有另一个类可以在DispatcherServlet之前修改请求方法。如何在ResponseOverrideFilter或RequestContextListener或DelegatingFilterProxy中查看我的请求方法? (org.springframework的调试不提供此信息。仅适用于DispatcherServlet)
我已经将版本从3.0升级到3.1,但它并没有解决我的问题。
EDIT1 :
执行请求后,Apache access.log显示IP - - [11/Aug/2014:13:00:18 +0100] "GET /project/mypage/mypage.htm HTTP/1.1" 200 31489
。正如评论中提到的那样,问题出在前端。