[英]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
。
HTTP / 1.1的常用方法集定义如下。 虽然可以扩展此集合 ,但不能假定其他方法为单独扩展的客户端和服务器共享相同的语义。
你自己的引用甚至说同样的,尽管只是暗示:
几乎没有理由重写
service
方法。service
通过将它们分派给每个HTTP请求类型的处理程序方法(上面列出的doXXX
方法)来处理标准 HTTP请求。
隐含的是必须通过覆盖方法来处理非标准请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.