如何覆盖DispatcherServlet的get和post行为?

时间:2013-06-26 16:27:06

标签: spring servlets spring-mvc

我使用Spring MVC控制器进行REST服务。我想覆盖DispatcherServlet的GET和POST行为。我希望在GET和POST请求期间满足某些条件时执行一些自定义逻辑,否则回退DispatcherServlet实现。

我实现了从Spring的DispatcherServlet派生的自定义serlvet。 HttpServlet接口上有方法doGet()和doPost(),但似乎这些方法已在DispatcherServlet或其基类之一中声明为final。因此我无法覆盖doGet()和doPost()。

从文档中,我找到了两个方法 - 可以覆盖的doService()和doDispatch()。我对这两种方法之间的区别感到困惑。

  1. 我应该覆盖哪个方法 - doService()或doDispatch()?
  2. doService()和doDispatch()有什么区别?
  3. 如何确定http请求 - GET或POST是什么?
  4. 感谢。

1 个答案:

答案 0 :(得分:0)

正确的方法是创建Filter

但请注意,检查请求有效负载本身并不是一件简单的事情,因为一旦您读取了有效负载,就无法在不费力的情况下“解读”它。例如,请参阅How can I log RESTful post data?

但是,DispatcherServlet而不是使用过滤器的重写方法无论如何都不会简化它,只会使事情变得不那么清晰并违反SRP