0

我将 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 回答 1

0

正确的做法是创建一个Filter.

但是请注意,检查请求负载本身并不是一件简单的事情,因为一旦您读取了负载,您就无法在不付出额外努力的情况下“取消读取”它。例如,请参阅如何记录 RESTful 发布数据?

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

于 2013-06-26T16:54:32.857 回答