繁体   English   中英

servlet重写HttpServlet服务方法的有效原因

[英]Valid reason for servlet to override HttpServlet service method

我有一些遗留的Servlet重写服务方法,

根据HttpServlet docs服务方法不应该被覆盖,仅在特定情况下:

几乎没有理由重写服务方法。 service通过将它们分派给每个HTTP请求类型的处理程序方法(上面列出的doXXX方法)来处理标准HTTP请求。

我找到了几个关于调用do方法的服务方法的答案

调用doGet(),doPost()和其他do方法都在HttpServlet类中

默认完成,可以覆盖

由于您的servlet重写了service()方法并提供了不同的实现,因此它不再执行此操作。 相反,它确实......方法中的代码做了什么。

和答案说,为什么覆盖它

让servlet处理其他方法。

但我没有任何有效的理由来覆盖这种方法,是否有任何案例?

它似乎可能对应于DRY (不要重复自己)规则,因此所有do方法都将执行相同的方法。

必须覆盖service ,如果你需要处理一个非标准的HTTP方法,即一个还没有被分派到doXxx的方法HttpServlet

正如RFC 2616 HTTP文档所述

HTTP / 1.1的常用方法集定义如下。 虽然可以扩展此集合 ,但不能假定其他方法为单独扩展的客户端和服务器共享相同的语义。

你自己的引用甚至说同样的,尽管只是暗示:

几乎没有理由重写service方法。 service通过将它们分派给每个HTTP请求类型的处理程序方法(上面列出的doXXX方法)来处理标准 HTTP请求。

隐含的是必须通过覆盖方法来处理非标准请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM