我知道 GenericServlet 是独立于协议的,是一个抽象类。所以我的问题是什么时候有人会选择使用 GenericServlet?您是否知道使用 GenericServlet 的任何特定示例?
我一直将 servlet 与 HTTP 协议及其响应和请求相关联。我想不出 servlet 在 HTTP 以外的协议中如何有用。这并不意味着它不可能。过去可能没有使用在其他协议中使用的选项,并且不再需要它。或者可能是我对它的了解不够。
您的问题的简短回答是“从不。实际上说。”
长答案是这GenericServlet
是一个抽象的(不能被实例化的)协议独立的 servlet,它是一个可以通过网络(如 web)访问的端点。GenericServlet
提供了一些基本的生命周期管理,但您必须扩展它以使任何有用的东西。
HttpServlet
是一种GenericServlet
处理 HTTP 协议的许多低级细节的实现,如标头、分块、cookie 等。实际上,这是任何人关心的唯一实现。
我想理论上可以扩展GenericServlet
以实现不同的协议,如 FTP 或 SMTP,但为什么要麻烦呢?
希望有帮助。
GenericServlet 没有实现所有 10 个 HTTP 协议请求(获取 post put delete head trace 连接选项等)。所以如果你扩展 GenericServlet 那么所有的请求都会调用 service() 方法。由于此 HttpServlet 的解决方案实现了它们,因此您可以根据收到的请求执行不同的操作。