Hoy en día todos somos conscientes de la necesidad de crear páginas web dinámicas, es decir, que tengan la capacidad de cambiar los contenidos del sitio según el tiempo o sean capaces de generar los contenidos según la solicitud que reciba el cliente. Si te gusta programar en Java, entonces te alegrará saber que usando Java también existe una forma de generar páginas web dinámicas y esa forma es Java Servlet. Pero antes de seguir adelante con nuestro tema, primero comprendamos la necesidad de extensiones del lado del servidor.
Los servlets son los programas Java que se ejecutan en el servidor web o en el servidor de aplicaciones habilitado para Java. Se utilizan para manejar la solicitud obtenida del servidor web, procesar la solicitud, producir la respuesta y luego enviar una respuesta al servidor web.
Las propiedades de los servlets son las siguientes:
- Los servlets funcionan del lado del servidor.
- Los servlets son capaces de manejar requests complejas obtenidas del servidor web.
La arquitectura de servlet se puede representar a partir de la imagen misma como se proporciona a continuación de la siguiente manera:
La ejecución de Servlets implica básicamente seis pasos básicos:
- Los clientes envían la solicitud al servidor web.
- El servidor web recibe la solicitud.
- El servidor web pasa la solicitud al servlet correspondiente.
- El servlet procesa la solicitud y genera la respuesta en forma de salida.
- El servlet devuelve la respuesta al servidor web.
- El servidor web envía la respuesta al cliente y el navegador del cliente la muestra en la pantalla.
Ahora analicemos el punto excéntrico de por qué necesitamos extensiones del lado del servidor.
Las extensiones del lado del servidor no son más que las tecnologías que se utilizan para crear páginas web dinámicas. En realidad, para proporcionar la facilidad de las páginas web dinámicas, las páginas web necesitan un contenedor o servidor web. Para cumplir con este requisito, los proveedores de servidores web independientes ofrecen algunas soluciones patentadas en forma de API (interfaz de programación de aplicaciones).
Estas API nos permiten crear programas que pueden ejecutarse con un servidor web. En este caso, Java Servlet también es uno de los componentes API de Java Platform Enterprise Edition , que establece estándares para crear aplicaciones web dinámicas en Java.
Antes de aprender sobre algo, es importante saber la necesidad de ese algo, no es que esta sea la única tecnología disponible para crear páginas web dinámicas. La tecnología Servlet es similar a otras extensiones de servidor web, como los scripts de interfaz de puerta de enlace común (CGI) y el preprocesador de hipertexto (PHP). Sin embargo, los Java Servlets son más aceptables ya que resuelven las limitaciones de CGI , como el bajo rendimiento y la escalabilidad de bajo grado.
¿Qué es CGI?
CGI es en realidad una aplicación externa que se escribe utilizando cualquiera de los lenguajes de programación como C o C++ y es responsable de procesar las requests de los clientes y generar contenido dinámico.
En la aplicación CGI, cuando un cliente realiza una solicitud para acceder a páginas web dinámicas, el servidor web realiza las siguientes operaciones:
- Primero localiza la página web solicitada, es decir , la aplicación CGI requerida mediante la URL.
- Luego crea un nuevo proceso para atender la solicitud del cliente.
- Invoca la aplicación CGI dentro del proceso y pasa la información de la solicitud a la aplicación.
- Recopila la respuesta de la aplicación CGI.
- Destruye el proceso, prepara la respuesta HTTP y la envía al cliente.
Entonces, en el servidor CGI tiene que crear y destruir el proceso para cada solicitud. Es fácil entender que este enfoque es aplicable para manejar pocos clientes, pero a medida que aumenta la cantidad de clientes, aumenta la carga de trabajo en el servidor y, por lo tanto, aumenta el tiempo que se tarda en procesar las requests.
Diferencia entre Servlet y CGI
servlet | CGI (interfaz de puerta de enlace común) |
---|---|
Los servlets son portátiles y eficientes. | CGI no es portátil |
En Servlets, es posible compartir datos. | En CGI, no es posible compartir datos. |
Los servlets pueden comunicarse directamente con el servidor web. | CGI no puede comunicarse directamente con el servidor web. |
Los servlets son menos costosos que CGI. | CGI es más caro que Servlets. |
Los servlets pueden manejar las cookies. | CGI no puede manejar las cookies. |
API de servlets: los
servlets se construyen a partir de dos paquetes:
- javax.servlet(Básico)
- javax.servlet.http (Avanzado)
Varias clases e interfaces presentes en estos paquetes son:
Componente | Escribe | Paquete |
---|---|---|
servlet | Interfaz | javax.servlet.* |
ServletRequest | Interfaz | javax.servlet.* |
ServletRespuesta | Interfaz | javax.servlet.* |
GenéricoServlet | Clase | javax.servlet.* |
HttpServlet | Clase | javax.servlet.http.* |
HttpServletRequest | Interfaz | javax.servlet.http.* |
HttpServletRespuesta | Interfaz | javax.servlet.http.* |
Filtrar | Interfaz | javax.servlet.* |
ServletConfig | Interfaz | javax.servlet.* |
Ventajas de un servlet de Java
- Servlet es más rápido que CGI ya que no implica la creación de un nuevo proceso para cada nueva solicitud recibida.
- Los servlets, tal como están escritos en Java, son independientes de la plataforma.
- Elimina la sobrecarga de crear un nuevo proceso para cada solicitud, ya que Servlet no se ejecuta en un proceso separado. Solo hay una única instancia que maneja todas las requests al mismo tiempo. Esto también ahorra memoria y permite que un Servlet administre fácilmente el estado del cliente.
- Es un componente del lado del servidor, por lo que Servlet hereda la seguridad proporcionada por el servidor web.
- La API diseñada para Java Servlet adquiere automáticamente las ventajas de las plataformas Java, como la independencia de la plataforma y la portabilidad. Además, obviamente puede utilizar la amplia gama de API creadas en plataformas Java como JDBC para acceder a la base de datos.
El contenedor de servlets
El contenedor de Servlet , también conocido como motor de Servlet, es un conjunto integrado de objetos que proporciona un entorno de tiempo de ejecución para los componentes de Java Servlet.
En palabras simples, es un sistema que administra los componentes de Java Servlet sobre el servidor web para manejar las requests de los clientes web.
Servicios proporcionados por el contenedor Servlet:
- Servicios de Red: Carga una clase de Servlet. La carga puede ser desde un sistema de archivos local, un sistema de archivos remoto u otros servicios de red. El contenedor Servlet proporciona los servicios de red a través de los cuales se envían la solicitud y la respuesta.
- Decodificar y codificar mensajes basados en MIME: proporciona el servicio de decodificación y codificación de mensajes basados en MIME.
- Administrar contenedor de servlets: administra el ciclo de vida de un servlet.
- Gestión de recursos Gestiona los recursos estáticos y dinámicos, como archivos HTML, servlets y páginas JSP.
- Servicio de seguridad: maneja la autorización y autenticación del acceso a los recursos.
- Gestión de sesiones: Mantiene una sesión agregando un ID de sesión a la ruta URL.
Coautor: Kartik Thakral
Publicación traducida automáticamente
Artículo escrito por AniketSingh1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA