GenericServlet frente a HttpServlet

Genericservlet Vs Httpservlet

1>>>>>>>>

Diferencia entre HttpServlet vs Generic Severlet



|_+_| |_+_| |_+_||_+_| es una interfaz que define lo que debe implementar un servlet. Define métodos para todas las implementaciones; eso es lo que suelen hacer las interfaces.



javax.servlet.GenericServlet ------ es solo eso, un servlet genérico e independiente del protocolo. Es abstracto, por lo que no debe instanciarse directamente. Es la clase utilizable para extender si algún día tiene que escribir servlet para un protocolo que no sea HTTP.



javax.servlet.http.HttpServlet ------- es una clase abstracta que se ampliará si desea comunicarse a través del protocolo HTTP. Lo más probable es que solo tenga que preocuparse por este.

Servlet: -

  1. Los Servlets se ejecutan como un hilo en un contenedor web en lugar de en un proceso de sistema operativo separado.
  2. Solo se crea un objeto la primera vez cuando llega la primera solicitud, otra solicitud comparte el mismo objeto.
  3. Servlet es independiente de la plataforma.
  4. Servlet es rápido.

GenericServlet: -



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

HttpServlet: -

  1. Solo para Protocolo HTTP.
  2. Heredar la clase GenericServlet.
  3. Utilice el método doPost, doGet en lugar del método de servicio.

2>>>>>>>>

HttpServlet

clase abstracta pública HttpServlet
se extiende GenericServlet
implementa java.io.Serializable

Proporciona una clase abstracta que se subclasifica para crear un servlet HTTP adecuado para un sitio web. Una subclase de j debe anular al menos un método, generalmente uno de estos:

  • avax.servlet. , si el servlet admite solicitudes HTTP GET
  • Servlet , para solicitudes HTTP POST
  • ----, para solicitudes HTTP PUT
  • HttpServlet, para solicitudes HTTP DELETE
  • doGet y doPost, para administrar los recursos que se mantienen durante la vida útil del servlet
  • doPut, que el servlet utiliza para proporcionar información sobre sí mismo
Resumen del constructor
|_+_|
No hace nada, porque esta es una clase abstracta.
Resumen del método
|_+_| |_+_|
Lo llama el servidor (a través del método doDelete) para permitir que un servlet maneje una solicitud DELETE.
|_+_| |_+_|
Lo llama el servidor (a través del método init) para permitir que un servlet maneje una solicitud GET.
|_+_| |_+_|
Recibe una solicitud HTTP HEAD del protegido destroy método y maneja la solicitud.
|_+_| |_+_|
Lo llama el servidor (a través del método getServletInfo) para permitir que un servlet maneje una solicitud de OPCIONES.
|_+_| |_+_|
Lo llama el servidor (a través del método HttpServlet ()) para permitir que un servlet maneje una solicitud POST.
|_+_| |_+_|
Lo llama el servidor (a través del método protected void) para permitir que un servlet maneje una solicitud PUT.
|_+_| |_+_|
Lo llama el servidor (a través del método doDelete ( HttpServletRequest req, HttpServletResponse resp)) para permitir que un servlet maneje una solicitud TRACE.
|_+_| |_+_|
Devuelve la hora en que service El objeto se modificó por última vez, en milisegundos desde la medianoche del 1 de enero de 1970 GMT.
|_+_| |_+_|
Recibe solicitudes HTTP estándar del público protected void y los envía al doGet ( HttpServletRequest req, HttpServletResponse resp) XXX métodos definidos en esta clase.
|_+_| |_+_|
Envía solicitudes de clientes a los protegidos service método.

¿Por qué httpservlet es abstracto?

Si extiende la clase httpservlet sin anular ningún método, obtendrá un servlet inútil

GenericServlet

clase abstracta pública GenericServlet

extiende java.lang.Object

implementos Servlet , ServletConfig , java.io.Serializable

Resumen del constructor
|_+_|
No hace nada.
Resumen del método
|_+_| |_+_|
Lo llama el contenedor de servlet para indicar a un servlet que el servlet está fuera de servicio.
|_+_| |_+_|
Devuelve un protected void que contiene el valor del parámetro de inicialización nombrado, o doHead ( HttpServletRequest req, HttpServletResponse resp) si el parámetro no existe.
|_+_| |_+_|
Devuelve los nombres de los parámetros de inicialización del servlet como service de protected void objetos, o un vacío doOptions ( HttpServletRequest req, HttpServletResponse resp) si el servlet no tiene parámetros de inicialización.
|_+_| |_+_|
Devuelve este servlet |_+_| objeto.
|_+_| |_+_|
Devuelve una referencia al |_+_| en el que se ejecuta este servlet.
|_+_| |_+_|
Devuelve información sobre el servlet, como autor, versión y copyright.
|_+_| |_+_|
Devuelve el nombre de esta instancia de servlet.
|_+_| |_+_|
Un método de conveniencia que se puede anular para que no sea necesario llamar a service.
|_+_| |_+_|
Lo llama el contenedor de servlets para indicar a un servlet que el servlet se está poniendo en servicio.
|_+_| |_+_|
Escribe el mensaje especificado en un archivo de registro de servlet, precedido por el nombre del servlet.
|_+_| |_+_|
Escribe un mensaje explicativo y un seguimiento de pila para un protected void dado | excepción al archivo de registro del servlet, precedido por el nombre del servlet.
|_+_| |_+_|
Lo llama el contenedor de servlet para permitir que el servlet responda a una solicitud.

3>>>>>>>>

¿Cuándo debemos usar Service () o toGet (), toPost ()?

Las diferencias entre doPost ( HttpServletRequest req, HttpServletResponse resp) y service métodos son que se llaman en el protected void que su servlet extiende por su doPut ( HttpServletRequest req, HttpServletResponse resp) método cuando recibe una solicitud GET o POST de una solicitud de protocolo HTTP.

Una solicitud GET es una solicitud para obtener un recurso del servidor. Este es el caso de un navegador que solicita una página web. También es posible especificar parámetros en la solicitud, pero la longitud de los parámetros en general es limitada . Este es el caso de un formulario en una página web así declarado en html: o.

Una solicitud POST es una solicitud para correo (enviar) datos de formulario a un recurso en el servidor. Este es el caso de un formulario en una página web así declarado en html:. En este caso, el tamaño de los parámetros puede ser mucho mayor.

El service tiene un protected void método que se llama cuando se realiza una solicitud de cliente. Esto significa que las solicitudes entrantes lo llaman y las solicitudes HTTP se entregan al servlet tal como están (debe realizar el análisis usted mismo).

El doTrace ( HttpServletRequest req, HttpServletResponse resp) en su lugar tiene service y protected long métodos que se llaman cuando la solicitud de un cliente es GET o POST. Esto significa que el servlet realiza el análisis de la solicitud: tiene el método apropiado llamado y tiene métodos convenientes para leer los parámetros de la solicitud.

NOTA: el getLastModified ( HttpServletRequest req) y HttpServletRequest los métodos (así como otros protected void métodos) son llamados por el service ( HttpServletRequest req, HttpServletResponse resp) método.

Concluyendo,

si debe responder a solicitudes GET o POST realizadas por un cliente de protocolo HTTP (generalmente un navegador), no dude en extender service y utilice sus métodos de conveniencia.
Si debe responder a las solicitudes realizadas por un cliente que no utiliza el protocolo HTTP, debe utilizar do.

voto a favor 22 voto en contra

Así es como void se implementa típicamente ( muy simplificado ):

|_+_|