API SERVLET


Servlet 3.0 y Java Filter

Cuando empezamos a trabajar un Java EE se nos presentan muchos conceptos nuevos ,a veces demasiados pero uno de los más clásicos es el concepto de java filter o filtro java .Practicamente todos los frameworks de capa de presentación los usan de una forma o de otra para aportar nuevas funcionalidad extendiendo de las ya disponibles . Ahora bien ¿como funcionan? y sobre todo para que sirven. Vamos a partir de la idea que tenemos una aplicación web con tres páginas.

Java Filter

Un filtro de java se encarga de añadir una nueva funcionalidad a la aplicación colocandose entre el usuario y las páginas .Por ejemplo en nuestro caso vamos a implementar un sencillo filtro que construye unas estadisticas sobre cuantas veces se ha visitado cada página


ServletContext

El ServletContext como su nombre indica permite acceder a un Servlet a la información de su Contexto o dicho de otra manera a la información asociada con la propia Aplicación y que es común a todos los Servlets que despleguemos dentro de esa aplicación.



Java Servlet

El servlet es una clase en el lenguaje de programación Java, utilizada para ampliar las capacidades de un servidor. Aunque los servlets pueden responder a cualquier tipo de solicitudes, éstos son utilizados comúnmente para extender las aplicaciones alojadas por servidores web, de tal manera que pueden ser vistos como applets de Java que se ejecutan en servidores en vez de navegadores web.

Este tipo de servlets son la contraparte Java de otras tecnologías de contenido dinámico Web, como PHP y ASP.NET.

La palabra servlet deriva de otra anterior, applet, que se refiere a pequeños programas que se ejecutan en el contexto de un navegador web.

El uso más común de los servlets es generar páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web.

Ciclo de vida

1. Inicializar el servlet
Cuando un servidor carga un servlet, ejecuta el método init del servlet. El proceso de inicialización debe completarse antes de poder manejar peticiones de los clientes, y antes de que el servlet sea destruido.
Aunque muchos servlets se ejecutan en servidores multi-thread, los servlets no tienen problemas de concurrencia durante su inicialización. El servidor llama sólo una vez al método init al crear la instancia del servlet, y no lo llamará de nuevo a menos que vuelva a recargar el servlet. El servidor no puede recargar un servlet sin primero haber destruido el servlet llamando al método destroy.
2. Interactuar con los clientes
Después de la inicialización, el servlet puede dar servicio a las peticiones de los clientes. Estas peticiones serán atendidas por la misma instancia del servlet, por lo que hay que tener cuidado al acceder a variables compartidas, ya que podrían darse problemas de sincronización entre requerimientos simultáneos.
3. Destruir el servlet
Los servlets se ejecutan hasta que el servidor los destruye, por cierre del servidor o bien a petición del administrador del sistema. Cuando un servidor destruye un servlet, ejecuta el método destroy del propio servlet. Este método sólo se ejecuta una vez y puede ser llamado cuando aún queden respuestas en proceso, por lo que hay que tener la atención de esperarlas. El servidor no ejecutará de nuevo el servlet hasta haberlo cargado e inicializado de nuevo.




Composición y sus Funciones.

A diferencia de un JSP un Servlet es un componente escrito puramente en Java, en términos Java esto equivale a una Clase y como cualquier otra Clase Java ésta se encuentra compuesta por diversos métodos|funciones.Los tres métodos que debe implementar un Servlet son:
  • service (Obligatorio): Este método es la parte medular de todo Servlet ya que dentro de él se incluyen las tareas principales de ejecución.
  • init (Opcional) : Es un método ejecutado antes del método service, su labor principal es adquirir/inicializar algún recurso que será empleado por service, estos recursos típicamente son conexiones hacia Bases de Datos.
  • destroy (Opcional) : Ejecutado una vez que ha terminado el método service, su labor es liberar los recursos utilizados/adquiridos en el proceso de ejecución los cuales generalmente son aquellos reservados por init.


interfaz HttpServletRequest

Amplía la  ServletRequest interfaz para proporcionar información de solicitud de servlets HTTP.
El contenedor de servlets crea un HttpServletRequest objeto y lo pasa como argumento a los métodos de servicio del servlet ( doGet, doPost, etc.)


interfaz HttpServletResponse

Amplía la   ServletResponse interfaz para proporcionar funcionalidad específica de HTTP al enviar una respuesta. Por ejemplo, tiene métodos para acceder a encabezados y cookies HTTP.
El contenedor de servlets crea un HttpServletRequestobjeto y lo pasa como argumento a los métodos de servicio del servlet ( doGet, doPost, etc.).














Comentarios