2012-07-17 18 views
17

Estaba buscando la diferencia exacta entre javax.servlet.http.HttpServlet , javax.servlet.GenericServlet y javax.Servlet no pudiendo encontrarlo.¿Cuál es la diferencia entre GenericServlet, HttpServlet y un Servlet?

"diferencia exacta" significa

  1. Uso
  2. La razón detrás de javax.servlet.GenericServlet existencia
+4

Eso ya está respondido en sus javadocs. ¿Lo leíste? [Servlet] (http://docs.oracle.com/javaee/6/api/javax/servlet/Servlet.html), [GenericServlet] (http://docs.oracle.com/javaee/6/api/javax /servlet/GenericServlet.html) y [HttpServlet] (http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServlet.html) – BalusC

Respuesta

22

"diferencia exacta" si se refiere? La API enumera las diferencias exactas.

Servlet is an interface defining what a servlet must implement.

GenericServlet is just that, a generic, protocol-independent servlet.

HttpServlet is a servlet tied specifically to the HTTP protocol.

¿Estás preguntando cuándo desea uso alguno de esos?

En general, ampliaría HttpServlet para implementar la capa web de una aplicación.

Puede implementar Servlet si está escribiendo su propio contenedor o manejando todo usted mismo. Puede ampliar GenericServlet para manejar un protocolo diferente, pero es posible que no.

+0

+1 para 'Usted puede implementar Servlet si usted ' reescribiendo su propio contenedor o manejándolo todo usted mismo'' – UnKnown

11

javax.servlet

Servlet es una tecnología web del lado del servidor. Como su nombre lo indica, sirve una solicitud del cliente y recibe una respuesta del servidor. Debe implementar javax.Servlet (Interfaz) para manejar un trabajo de servlet.

javax.servlet.GenericServlet

Firma:

public abstract class GenericServlet extends java.lang.Object implements Servlet, ServletConfig, java.io.Serializable 
  1. GenericServlet define una, servlet genérico independiente del protocolo.
  2. GenericServlet proporciona un modelo y facilita la escritura del servlet.
  3. GenericServlet proporciona versiones simples de los métodos de ciclo de vida init y destroy y de los métodos en la interfaz ServletConfig.
  4. GenericServlet implementa el método de registro, declarado en la interfaz ServletContext .
  5. Para escribir un servlet genérico, es suficiente para anular el método abstract service().

javax.servlet.http.HttpServlet

Firma:

public abstract class HttpServlet extends GenericServlet implements java.io.Serializable 
  1. HttpServlet define un servlet específico protocolo HTTP.
  2. HttpServlet proporciona un modelo para el servlet de Http y hace que escribir sea más fácil.
  3. HttpServlet extiende el GenericServlet y hereda las propiedades GenericServlet.
+2

Esta respuesta proviene de http://javapapers.com/servlet/difference-between-httpservlet-and-genericservlet/ –

+0

la mejor respuesta para mí –

9

javax.servlet.Servlet es la interfaz, define los métodos para todas las implementaciones, eso es lo que las interfaces suelen hacer.

javax.servlet.GenericServlet es independiente del protocolo. Es abstracto, por lo que no debe ser instanciado directamente. Se puede extender la clase útil si algún día tiene que escribir servlet para un protocolo que no sea HTTP.

javax.servlet.http.HttpServlet es la clase abstracta que se ampliará si desea comunicarse a través del protocolo HTTP. Lo más probable es que solo tengas que preocuparte por esto.

Más información exacta que puede encontrar detrás de los enlaces.

2

HttpServlet es específico para el protocolo HTTP y por lo tanto suministra métodos para los verbos HTTP: doGet, doPost, etc, y una versión del método genérico service que toma de petición y respuesta HTTP objetos específicos. Es un tipo especial de Servlet que en realidad es una interfaz bastante mínima.

GenericServlet es la implementación básica, de protocolo neutral de la interfaz Servlet. A menudo encontrará implementaciones básicas similares de interfaces en una API; en este caso, GenericServlet agrega un poco de funcionalidad al API Servlet: getServletName, getServletInfo, y métodos de paso para los parámetros init del servlet. HttpServlet se beneficia de estas adiciones extendiendo GenericServlet.

En general todo el mundo que programa usando esta API está utilizando HttpServlet para la implementación de servicios web HTTP, pero también se puede extender o utilizar GenericServlet para implementar la funcionalidad del servidor/servicio utilizando un protocolo personalizado, u otro protocolo existente, por ejemplo, FTP.

1

->GenericServlet puede procesar la solicitud de varios clientes desde un solo formulario. Mientras que, HttpServlet puede procesar clientes múltiples que soliciten desde múltiples formularios HTML.

->GenericServlet es Stateless y HttpServlet es Stateful.

3

Servlet: -

  1. los servlets se ejecuta como un hilo en un contenedor web en lugar de en un proceso separado del sistema operativo.
  2. Solo se crea un objeto por primera vez cuando llega la primera solicitud, mientras que otras solicitudes comparten el mismo objeto.
  3. Servlet es plataforma independiente.
  4. El servlet es rápido.

GenericServlet: -

  1. general para todos los protocolos.
  2. Implementa la interfaz del servlet.
  3. Utilice el método de servicio.

HttpServlet: -

  1. Sólo para el protocolo HTTP.
  2. Inherit GenericServlet class.
  3. Use el método doPost, doGet en lugar del método de servicio.
7

-> Una característica común es que estas dos clases son clases abstractas.

-> GenericServlet es una súper clase de la clase HttpServlet.

-> La principal diferencia es que, HttpServlet es un protocolo dependiente mientras que GenericServlet es independiente del protocolo. Así que GenericServlet puede manejar todos los tipos de protocolos, pero HttpServlet solo maneja protocolos específicos de HTTP.

-> GenericServlet pertenece al paquete javax.servlet. HttpServlet pertenece al paquete javax.servlet.http

-> GenericServlet es una clase abstracta que amplía Object e implementa las interfaces Servlet, ServletConfig y java.io.Serializable. HttpServlet es una clase abstracta que amplía GenericServlet e implementa la interfaz java.io.Serializable.

-> GenericServlet admite solo el método service() no contiene los métodos doGet() y doPost(). HttpServlet admite también los métodos doGet(), doPost(), doHead() (HTTP 1.0) más los métodos doPut(), doOptions(), doDelete(), doTrace() (HTTP 1.1).

0

Todas las clases, interfaces y métodos presentes en el paquete javax.servlet son el protocolo independiente (genérico para todos los protocolos).

Por el contrario, todas las clases, interfaces y métodos presentes en el paquete de javax.servlet.http son protocolo dependiente (específico para el protocolo HTTP)

2

Servlet es una interfaz que contiene cinco métodos abstractos en uso para servlet tenemos para proporcionar una implementación para todos estos cinco métodos, que es un dolor de cabeza. Para evitar esta complejidad, tenemos GenericServlet y HttpServlet para el próximo nivel.

GenericServlet es independiente del protocolo, significa que puede aceptar cualquier solicitud de protocolo. GenericServlet puede reenviar e incluir una solicitud, pero no podemos redirigir la solicitud. La gestión de sesión con cookies y HttpSession no es posible en GenericServlet. En GenericServlet no es posible definir una lógica separada para get y post request.

HttpServlet depende del protocolo. es decir, acepta solo solicitud de protocolo HTTP. HttpServlet puede reenviar e incluir y redirigir una solicitud. Gestión de sesiones con cookies y HttpSession es posible en HttpServlet. En HttpServlet es posible definir una lógica separada para get y post request.

+0

Me gusta su respuesta. Por favor, me gusta mi respuesta también. –

Cuestiones relacionadas