¿Qué es Java Servlet?

277

Leí muchos artículos para entender el servlet de Java, pero no tuve éxito.

¿Puede dar una breve introducción de los servlets de Java (en un lenguaje sencillo)? ¿Qué es el servlet? ¿Cuáles son las ventajas? Y todo eso.

No puedo entender la diferencia entre los lenguajes de programación del lado del servidor (PHP, ASP) y los servlets.

hardik
fuente
38
Coloque el cursor servletsdebajo de su pregunta hasta que aparezca un cuadro negro. Haga clic en el enlace de información .
BalusC
1
Servlets Puedes mirarlo. Creo que esto es detalles y auténtico.
shohan

Respuestas:

336

Un servlet es simplemente una clase que responde a un tipo particular de solicitud de red, más comúnmente una solicitud HTTP. Básicamente, los servlets se usan generalmente para implementar aplicaciones web, pero también hay varios marcos que operan encima de los servlets (por ejemplo, Struts) para proporcionar una abstracción de nivel superior que el nivel "aquí hay una solicitud HTTP, escriba en esta respuesta HTTP" que servlets proporcionar.

Los servlets se ejecutan en un contenedor de servlets que maneja el lado de la red (por ejemplo, analizar una solicitud HTTP, manejo de conexión, etc.). Uno de los contenedores de servlets de código abierto más conocidos es Tomcat .

Jon Skeet
fuente
16
Los servlets son fragmentos de código Java invocados por el servidor web dentro del propio servidor web. Si quieres algo parecido a PHP o ASP, necesitas JSP (que son un tipo especial de servlets)
Thorbjørn Ravn Andersen
3
Gracias por la respuesta, pero aún así no puedo obtener el uso real de los servlets, sería mejor si pudieras explicar con un ejemplo, como una solución, dónde podemos usar los servlets. No entendí el uso de servlet como lo que puede hacer servlet que otros lenguajes de programación del lado del servidor no pueden hacer.
hardik
44
@Hardik: no es que puedan hacer nada que no se pueda hacer de otra manera. Los servlets son solo una tecnología común para el trabajo Java del lado del servidor. Los servlets no son un lenguaje, y tampoco lo es ASPX. Ambas son plataformas que utiliza junto con otro lenguaje, generalmente Java en el caso de servlets.
Jon Skeet
77
@Hardik: Como escribí en mi publicación, los servlets son clases que operan dentro de un contenedor de servlets. El contenedor de servlets puede alojar varios servlets al mismo tiempo.
Jon Skeet
55
@Hardik: Sí, exactamente. El servlet puede proporcionar el HTML para mostrar el formulario y también actuar en el envío. Los servlets también se pueden usar para implementar servicios web. Se pueden usar para otros protocolos aparte de HTTP, pero HTTP es abrumadoramente el transporte más común manejado por servlets.
Jon Skeet
102

Un servlet en su núcleo es una clase java; que puede manejar solicitudes HTTP. Por lo general, los contenedores como Tomcat se ocupan de la esencia interna de leer una solicitud y respuesta HTTP a través del cable. Esto se hace para que, como desarrollador del lado del servidor, pueda concentrarse en qué hacer con la solicitud y las respuestas HTTP y no molestarse en tratar con el código que se ocupa de las redes, etc. El contenedor se ocupará de cosas como envolver todo en un Objeto de respuesta HTTP y envíelo al cliente (por ejemplo, un navegador).

Ahora la siguiente pregunta lógica es ¿quién decide qué debe hacer un contenedor? Y la respuesta es; En el mundo Java, al menos, está guiado (tenga en cuenta que no usé la palabra controlada) por especificaciones. Por ejemplo, las especificaciones de Servlet (Ver recurso 2) dicta lo que un servlet debe poder hacer. Entonces, si puede escribir una implementación para la especificación, felicidades, acaba de crear un contenedor (Técnicamente, los contenedores como Tomcat también implementan otras especificaciones y hacen cosas difíciles como cargadores de clases personalizados, etc., pero se entiende la idea).

Suponiendo que tiene un contenedor, sus servlets ahora son clases java cuyo ciclo de vida será mantenido por el contenedor, pero usted decidirá su reacción a las solicitudes HTTP entrantes. Lo hace escribiendo lo que quiere hacer en los métodos predefinidos como init (), doGet (), doPost (), etc. Mire el Recurso 3.

Aquí hay un ejercicio divertido para ti. Cree un servlet simple como en el Recurso 3 y escriba algunas declaraciones System.out.println () en su método de constructor (Sí, puede tener un constructor de un servlet), init (), doGet (), doPost () métodos y ejecute el servlet en tomcat. Vea los registros de la consola y los registros de Tomcat.

Espero que esto ayude, feliz aprendizaje.

Recursos

  1. Mire cómo se ve el servlet HTTP aquí (ejemplo de Tomcat).

  2. Especificación de servlet .

  3. Ejemplo simple de servlet .

  4. Comience a leer el libro en línea / PDF También le proporciona la descarga de todo el libro. Tal vez esto ayude. Si recién está comenzando los servlets, puede ser una buena idea leer el material junto con la API del servlet. es un proceso de aprendizaje más lento, pero es mucho más útil para aclarar los conceptos básicos.

Ayusman
fuente
12
Las respuestas de solo enlace se desaconsejan en Stack Overflow, porque los recursos a los que se vinculan pueden no estar disponibles en el futuro o pueden cambiar. Considere resumir el contenido relevante del enlace en su respuesta para mejorarlo.
66
@Cupcake agradece tus comentarios constructivos. Traté de agregar un poco de carne a la respuesta. Gracias por mejorar la comunidad.
Ayusman
34

Además de lo anterior, y solo para señalar el sangrado obvio ...

Para muchos esto es muy obvio, pero para alguien acostumbrado a escribir aplicaciones que simplemente se ejecutan y luego finalizan: un servlet pasa la mayor parte del tiempo dando vueltas sin hacer nada ... esperando que se le envíe algo, una solicitud y luego respondiendo. . Por esta razón, un servlet tiene una vida útil: se inicializa y luego espera, respondiendo a cualquier cosa que se le arroje, y luego se destruye. Lo que implica que tiene que ser creado (y luego destruido) por otra cosa (un marco), que se ejecuta en su propio hilo o proceso, y que no hace nada a menos que se le solicite. Y también que, de una forma u otra, se debe implementar un mecanismo mediante el cual esta "entidad" pueda "escuchar" las solicitudes.

Sugiero que leer sobre hilos, procesos y sockets arrojará algo de luz sobre esto: es bastante diferente a la forma en que funciona una aplicación básica "hello world".

Se podría argumentar que el término "servidor" o "servlet" es un poco exagerado. Un nombre más racional y simple podría ser "respondedor". La razón para la elección del término "servidor" es histórica: los primeros arreglos fueron "servidores de archivos", donde múltiples terminales de usuario / cliente solicitarían un archivo específico de una máquina central, y este archivo sería "servido" "como un libro o un plato de pescado y papas fritas.

Mike roedor
fuente
1
¿Es incorrecto ver el servlet como análogo a un "controlador" en un marco MVC estándar?
user2490003
Personalmente no puedo ver cómo se mantiene esa analogía. También tiendo a pensar que su sugerencia podría confundir a las personas que piensan que mi respuesta es útil (ayuda a aclarar las cosas).
Mike roedor
Creo que esta respuesta es útil. Pero también me pregunté (independientemente de esta respuesta, y antes de leerla) la misma pregunta que @ user2490003 planteó anteriormente. ¿Cuál es la diferencia entre un Servlet y un controlador MVC-framework? ¿Por qué la analogía por user2490003 no es válida?
cellepo
Un arreglo MVC es más complicado y aún menos complicado. No necesariamente implica esperar la entrada. Al definir la idea básica de una configuración servidor-cliente, es esa simplicidad la que busco enfatizar. Mira el diagrama MVC básico aquí: en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller . En una configuración simple de cliente-servidor, el usuario interactúa solo con el cliente, no con dos objetos, a saber, una vista y un controlador. Con MVC también puede haber múltiples vistas, múltiples controladores y múltiples modelos. Y esperar la entrada no está (necesariamente) involucrado.
Mike roedor
Además de lo anterior, un servidor puede servir a múltiples usuarios, mientras que no existe tal requisito con una configuración MVC. Una configuración MVC pertenece al mundo de la informática clásica, es decir, aplicaciones independientes. Con los servidores, damos nuestro primer paso en el universo de la informática interactiva. No es que la analogía sea 100% errónea, más 90% errónea, y sobre todo que cualquier analogía sea simplemente inútil si en realidad no ayuda a nadie ni a nada de ninguna manera. Una disposición servidor-cliente es tan simple como una idea que nadie necesita analogías, de ningún tipo , para entender.
Mike roedor
10

¿Qué es un servlet?

  • Un servlet es simplemente una clase que responde a un tipo particular de solicitud de red, más comúnmente una solicitud HTTP.
  • Básicamente, los servlets se usan generalmente para implementar aplicaciones web, pero también hay varios marcos que operan encima de los servlets (por ejemplo, Struts) para proporcionar una abstracción de nivel superior que el nivel "aquí hay una solicitud HTTP, escriba en esta respuesta HTTP" que servlets proporcionar.
  • Los servlets se ejecutan en un contenedor de servlets que maneja el lado de la red (por ejemplo, analizar una solicitud HTTP, manejo de conexión, etc.). Uno de los contenedores de servlets de código abierto más conocidos es Tomcat.

  • En un paradigma de solicitud / respuesta, un servidor web solo puede servir páginas estáticas al cliente

  • Para servir páginas dinámicas, necesitamos Servlets.
  • Servlet no es más que un programa Java
  • Este programa Java no tiene un método principal. Solo tiene algunos métodos de devolución de llamada.
  • ¿Cómo se comunica el servidor web con el servlet? Mediante contenedor o motor Servlet.
  • Servlet vive y muere dentro de un contenedor web.
  • El contenedor web es responsable de invocar métodos en servlets. Sabe qué métodos de devolución de llamada tiene el Servlet.

Flujo de solicitud

  • El cliente envía una solicitud HTTP al servidor web
  • El servidor web reenvía esa solicitud HTTP al contenedor web.
  • Dado que Servlet no puede entender HTTP, es un programa Java, solo comprende objetos, por lo que el contenedor web convierte esa solicitud en un objeto de solicitud válido
  • El contenedor web gira un hilo para cada solicitud
  • Toda la lógica empresarial va dentro de los métodos de devolución de llamada doGet () o doPost () dentro de los servlets
  • Servlet construye un objeto de respuesta Java y lo envía al contenedor. Convierte eso en respuesta HTTP nuevamente para enviarlo al cliente

¿Cómo sabe el contenedor qué cliente de Servlet ha solicitado?

  • Hay un archivo llamado web.xml
  • Este es el archivo maestro para un contenedor web
  • Tiene información sobre servlet en este archivo

    • servlets
      • Nombre de servlet
      • Clase servlet
    • asignaciones de servlet : la ruta como / Iniciar sesión o / Notificaciones se asigna aquí en
      • Nombre de servlet
      • patrón de url
    • y así
  • Cada servlet en la aplicación web debe tener una entrada en este archivo

  • Entonces esta búsqueda ocurre como: url-pattern -> servlet-name -> servlet-class

¿Cómo "instalar" Servlets? * Bueno, los objetos de servlet se heredan de la biblioteca-javax.servlet. *. Tomcat y Spring se pueden utilizar para utilizar estos objetos para adaptarse al caso de uso.

Ref- Mire esto en 1.5x- https://www.youtube.com/watch?v=tkFRGdUgCsE . Esto tiene una explicación asombrosa.

Sankalp
fuente
1
Un enlace a una solución es bienvenido, pero asegúrese de que su respuesta sea útil sin él: agregue contexto alrededor del enlace para que sus otros usuarios tengan una idea de qué es y por qué está allí, luego cite la parte más relevante de la página volver a vincular en caso de que la página de destino no esté disponible. Se pueden eliminar las respuestas que son poco más que un enlace.
Mogsdad
1
Tenga en cuenta que el mundo ha avanzado. En 2020 usamos anotaciones en el código en lugar del archivo de configuraciones basadas en cadenas centrales en XML.
Thorbjørn Ravn Andersen
5

Servlet es una tecnología del lado del servidor que se utiliza para crear una página web dinámica en la aplicación web. En realidad, el servlet es una API que consiste en un grupo de clases e interfaces, que tiene alguna funcionalidad. Cuando usamos la API de Servlet, podemos usar la funcionalidad predefinida de las clases e interfaces de servlet.

Ciclo de vida del servlet:

El contenedor web mantiene el ciclo de vida de la instancia de servlet.

1) Clase de servlet cargada

2) Instancia de servlet creada

3) Se invoca el método init ()

4) Se invoca el método service ()

5) Se invoca el método destroy ()

Cuando la solicitud aumenta por el cliente (navegador), el contenedor web comprueba si el servlet se está ejecutando o no, en caso afirmativo, invoca el método service () y da la respuesta al navegador.

Cuando el servlet no se está ejecutando, el contenedor web sigue los siguientes pasos.

1. cargador de clases cargar la clase de servlet

2. Instancia el servlet

3. Inicializa el servlet

4. invocar el método service ()

después de servir el contenedor web de solicitud, espere un tiempo específico, en este momento, si la solicitud llega, solo llama al método service (); de lo contrario, llama al método destroy ().

Navnath Adsul
fuente
5

Si eres principiante, creo que este tutorial puede darte una idea básica sobre qué es Servlet ...

Algunos puntos valiosos están debajo del enlace dado.

La tecnología de servlet se utiliza para crear aplicaciones web que residen en el lado del servidor y generan una página web dinámica.

El servlet se puede describir de muchas maneras, según el contexto.

  • Servlet es una tecnología, es decir, se utiliza para crear aplicaciones web.
  • Servlet es una API que proporciona muchas interfaces y clases, incluida la documentación.
  • Servlet es una interfaz que debe implementarse para crear cualquier servlet.
  • Servlet es una clase que amplía las capacidades de los servidores y responde a la solicitud entrante. Puede responder a cualquier tipo de solicitud.
  • Servlet es un componente web que se implementa en el servidor para crear una página web dinámica. Referencia: aquí .
Sandun Madola
fuente
1
Ese es un tutorial realmente bueno que explica los conceptos básicos
Nikhil Sahu
3

Los Servlets Java son módulos de programa Java del lado del servidor que procesan y responden a las demandas del cliente y actualizan la interfaz del servlet. Ayuda a mejorar la utilidad del servidor web con gastos indirectos, mantenimiento y soporte insignificantes.

Un servlet funciona como mediador entre el cliente y el servidor. A medida que los módulos de servlet continúan ejecutándose en el servidor, pueden obtener y reaccionar a las demandas hechas por el cliente. Los objetos de demanda y reacción del servlet ofrecen un método útil para tratar las solicitudes HTTP y enviar información de contenido al cliente.

Dado que un servlet se coordina con el dialecto de Java, también tiene todos los aspectos destacados de Java, por ejemplo, alta movilidad, autonomía de escenario, seguridad y disponibilidad de la base de datos Java.

Poorna Senani Gamage
fuente
2

Servlet es una clase de Java para responder una solicitud HTTP y producir una respuesta HTTP ... cuando hacemos una página con el uso de HTML, entonces sería una página estática, por lo que para que sea dinámica usamos SERVLET {en palabras simples uno puede entender} Para hacer uso de servlet es superado por JSP, utiliza el código y la etiqueta HTML tanto en sí mismo.

Roopam
fuente
2

Los servlets son clases de Java que ejecutan ciertas funciones cuando un usuario del sitio web solicita una URL de un servidor. Estas funciones pueden completar tareas como guardar datos en una base de datos, ejecutar lógica y devolver información (como datos JSON) necesaria para cargar una página.

La mayoría de los programas Java utilizan un main()método que ejecuta código cuando se ejecuta el programa. Servlets Java contienen doGet()y doPost()métodos que actúan igual que el main()método. Estas funciones se ejecutan cuando el usuario realiza GETo POSTsolicita una URL asignada a ese servlet. Por lo tanto, el usuario puede cargar una página para una GETsolicitud o almacenar datos de una POSTsolicitud.

Cuando el usuario envía una GETo una POSTsolicitud, el servidor lee @WebServleten la parte superior de cada clase de servlet en su directorio para decidir a qué clase de servlet llamar. Por ejemplo, supongamos que tiene una clase de ChatBox y hay esto en la parte superior:

@WebServlet("/chat")
public class ChatBox extends HttpServlet {

Cuando un usuario solicita la /chatURL, su ChatBoxclase se ejecutará.

Kundus
fuente
0

Como se describe en este artículo , un Servlet es una forma estandarizada de extender un servidor Java y acceder a sus capacidades.

Cada Servlet puede verse como un pequeño servidor (de ahí el nombre), que obtiene acceso a la solicitud y la respuesta modelada en código Java, junto con otros datos de contexto, como la Sesión.

Con esto en mano, el código Java del servlet puede interactuar con lo que sea necesario para generar una respuesta, incluida la entrega a una página JSP para generar una vista HTML.

mtyson
fuente
-1

Creo que el servlet es básicamente una clase java que actúa como un medio entre la solicitud HTTP y la respuesta HTTP. El servlet también se usa para hacer que su página web sea dinámica. Supongamos, por ejemplo, si desea redirigir a otra página web en el servidor, entonces debe usar servlets. Otra cosa importante es que el servlet puede ejecutarse tanto en localhost como en un navegador web.

Roopam
fuente
-2

Acabas de recibir la respuesta para un servlet normalmente. Sin embargo, quiero compartirles algo sobre Servlet 3.0

¿Qué es primero un servlet?

Un servlet es un componente web administrado por un contenedor y genera contenido dinámico. Los servlets son clases de Java compiladas en código de bytes que pueden cargarse dinámicamente y ejecutarse en un servidor web habilitado con tecnología Java o un contenedor de servlets.

Servlet 3.0 es una actualización de la especificación de Servlet 2.5 existente. Servlet 3.0 requiere API de la Plataforma Java, Enterprise Edition 6. Servlet 3.0 se centra en la extensibilidad y la capacidad de conexión del marco web. Servlet 3.0 le ofrece algunas extensiones, como la facilidad de desarrollo (EoD), la capacidad de conexión, el soporte asíncrono y las mejoras de seguridad

Facilidad de desarrollo

Puede declarar servlets, filtros, oyentes, parámetros de inicio y casi todo se puede configurar mediante anotaciones

Pluggability

Puede crear un subproyecto o un módulo con un web-fragment.xml. Significa que permite implementar requisitos funcionales conectables de forma independiente.

Soporte asíncrono

Servlet 3.0 proporciona la capacidad de procesamiento asincrónico, por ejemplo: Esperando a que un recurso esté disponible, Generando respuesta asincrónicamente.

Mejoras de seguridad

Soporte para los métodos de seguridad de servlet de autenticación, inicio y cierre de sesión

Lo encontré en Java Servlet Tutorial

David Pham
fuente