我使用Spring MVC控制器进行REST服务。我想覆盖DispatcherServlet的GET和POST行为。我希望在GET和POST请求期间满足某些条件时执行一些自定义逻辑,否则回退DispatcherServlet实现。
我实现了从Spring的DispatcherServlet派生的自定义serlvet。 HttpServlet接口上有方法doGet()和doPost(),但似乎这些方法已在DispatcherServlet或其基类之一中声明为final。因此我无法覆盖doGet()和doPost()。
从文档中,我找到了两个方法 - 可以覆盖的doService()和doDispatch()。我对这两种方法之间的区别感到困惑。
感谢。
答案 0 :(得分:0)
正确的方法是创建Filter
。
但请注意,检查请求有效负载本身并不是一件简单的事情,因为一旦您读取了有效负载,就无法在不费力的情况下“解读”它。例如,请参阅How can I log RESTful post data?
但是,DispatcherServlet
而不是使用过滤器的重写方法无论如何都不会简化它,只会使事情变得不那么清晰并违反SRP。