GenericServlet,HttpServlet和Servlet有什么区别?

Ron*_*ony 21 java servlets

我正在寻找它们之间的确切区别javax.servlet.http.HttpServlet ,javax.servlet.GenericServlet并且javax.Servlet无法找到它.

"精确差异"是指

  1. 用法
  2. javax.servlet.GenericServlet存在背后的原因

Dav*_*ton 24

"确切的差异"意味着什么?API列出了确切的差异.

Servlet 是定义servlet必须实现的内容的接口.

GenericServlet 就是这个,一个通用的,独立于协议的servlet.

HttpServlet 是一个专门与HTTP协议绑定的servlet.

你在问什么时候使用这些吗?

通常,您将扩展HttpServlet到实现应用程序的Web层.

Servlet如果您正在编写自己的容器或自己处理所有内容,则可以实现.您可以扩展GenericServlet以处理不同的协议,但您可能不会.

  • +1 表示“如果您正在编写自己的容器或自己处理所有事情,您可能会实现 Servlet” (2认同)

K_A*_*nas 12

的javax.servlet

Servlet是一种服务器端Web技术.顾名思义,它服务于客户端请求并从服务器接收响应.您必须实现javax.Servlet(接口)来处理servlet工作.

javax.servlet.GenericServlet的

签名:

public abstract class GenericServlet extends java.lang.Object implements Servlet, ServletConfig, java.io.Serializable
Run Code Online (Sandbox Code Playgroud)
  1. GenericServlet定义了一个通用的,与协议无关的servlet.
  2. GenericServlet提供了一个蓝图,使编写servlet变得更容易.
  3. GenericServlet提供了生命周期方法init和destroy的简单版本以及ServletConfig接口中的方法.
  4. GenericServlet实现在ServletContext接口中声明的日志方法.
  5. 要编写通用servlet,覆盖抽象service()方法就足够了.

javax.servlet.http.HttpServlet

签名:

public abstract class HttpServlet extends GenericServlet implements java.io.Serializable
Run Code Online (Sandbox Code Playgroud)
  1. HttpServlet定义了一个特定于HTTP协议的servlet.
  2. HttpServlet为Http servlet提供了蓝图,使编写更容易.
  3. HttpServlet扩展了GenericServlet,因此继承了GenericServlet属性.

  • 这个答案来自http://javapapers.com/servlet/difference-between-httpservlet-and-genericservlet/ (2认同)

Mik*_*unu 10

javax.servlet.Servlet是接口,它定义了所有实现的方法 - 这就是接口通常所做的事情.

javax.servlet.GenericServlet与协议无关.它是抽象的,因此不能直接实例化.如果你有一天必须为HTTP之外的协议编写servlet,那么它是可用的扩展类.

如果要通过HTTP协议进行通信,则javax.servlet.http.HttpServlet是要扩展的抽象类.很可能你只需要关心这个.

您可以在链接后面找到更准确的信息.


Jay*_*dha 7

- >一个常见的特性是,这两个类都是抽象类.

- > GenericServlet是HttpServlet类的超类.

- >主要区别在于,HttpServlet是依赖于协议的,而GenericServlet是协议无关的.因此GenericServlet可以处理所有类型的协议,但HttpServlet只处理HTTP特定协议.

- > GenericServlet属于javax.servlet包.HttpServlet属于javax.servlet.http包

- > GenericServlet是一个抽象类,它扩展了Object并实现了Servlet,ServletConfig和java.io.Serializable接口.HttpServlet是一个抽象类,它扩展了GenericServlet并实现了java.io.Serializable接口.

- > GenericServlet仅支持service()方法,不包含doGet()和doPost()方法.HttpServlet还支持doGet(),doPost(),doHead()方法(HTTP 1.0)以及doPut(),doOptions(),doDelete(),doTrace()方法(HTTP 1.1).