Espacio (Anterior) JSP's Espacio WAR's ("Web Archives") (Siguiente) Espacio

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.

HttpServlet y el Método service()

Para generar un Servlet es necesario que la Clase en cuestión herede ("inherit") el comportamiento de la clase llamada HttpServlet, a través de dicha Clase se tiene acceso a los métodos antes mencionados. También vale mencionar que es posible heredar ("inherit") de la clase GenericServlet , sin embargo, para efectos de este curso y generalmente todo proyecto en ambientes Web, se opta por emplear HttpServlet ya que es una clase más completa e idónea para ambientes HTTP (el protocolo utilizado en Internet), inclusive si observa la documentación de dichas Clases notará que HttpServlet desciende (hereda) precisamente de GenericServlet.

Para utilizar herencias ("inheritance") en Java se utiliza el vocablo extends; si no esta familiarizado con conceptos de lenguajes orientados a Objetos, a través de herencias es posible accesar el comportamiento de Clases base, esto es, para el caso de Servlets al heredar de la Clase Base HttpServlet nuestra propia Clase tendrá acceso a los métodos definidos en ella.

Asumiendo que desea crear un Servlet llamado Saludos.java, éste se declararía de la siguiente manera:

import javax.servlet.*;
import javax.servlet.http.*;

public class Saludos extends HttpServlet
  { 
      public void service(HttpServletRequest request, 
                  HttpServletResponse response)
		  throws IOException 
		  { 
		  // Lógica de Ejecución
		  }

}

El Método service()

En la declaración se puede notar que el denominado método service toma dos parámetros (Objetos): uno llamado request del tipo HttpServletRequest y otro por nombre response del tipo HttpServletResponse, ambos representan el objeto de entrada y salida del Servlet respectivamente.

Lo anterior significa que dentro de estos Objetos reside la información con que será atendida la solicitud así como la información que será enviada de respuesta, por decirlo de otra manera, son estos dos objetos con los que juega todo Servlet, y por ende un JSP también.

A continuación se ilustra el Servlet llamado Saludos.java con la respectiva lógica en el método service :

import javax.servlet.*;
import javax.servlet.http.*;

public class Saludos extends HttpServlet
  { 
      public void service(HttpServletRequest request, 
                  HttpServletResponse response)
		  throws IOException 
		  { 
		  response.setContentType("text/html");
		  
		  PrintWriter out = response.getWriter();
		  out.println("<HTML>");
		  out.println("<BODY>");
		  out.println("Pagina Basica");
		  out.println("</BODY>");
		  out.println("</HTML>");
		 }

}

La primer linea del método service invoca el método setContentType sobre el objeto response, en otras palabras, se esta indicando que la respuesta de este Servlet será en formato HTML. Posteriormente se indica que el objeto llamado out se formará del método getWriter del objeto response, en otros términos, todo valor asignado a out será enviado a la impresión del Servlet (llevada acabo por getWriter).

Al ejecutarse el Servlet anterior se produciría el mismo resultado del JSP presentado al inicio .

Para observar los diversos métodos/funciones disponibles en Servlets se recomienda observar su documentación, la cual se encuentra disponible en : http://localhost:8080/tomcat-docs/servletapi/index.html

Lo anterior ilustra el uso del objeto response, pero que sucede con request ? , este Objeto contiene información acerca de la requisición del Servlet, por lo que a través de ellos se uniformiza que entra y que sale de cada Servlet/JSP.

Además de los Objetos request y response disponibles en todo JSP y Servlet, existe otro tipo de Objeto accesible para estos mismos componentes que facilita mantener información a lo largo de determinado tiempo, conocido en términos computacionales como : sesión.

Sesiones en Java

El uso de sesiones cobra mayor importancia conforme empieza a crecer un diseño con JSP's y Servlets, mientras en los Objetos request y response puede ser colocada información para ser enviada entre un JSP y/o Servlet, una vez terminada dicha solicitud la información se pierde; para los casos en que es necesario emplear información común entre un grupo de JSP's/Servlets esta es colocada en el Objeto session.

Este mecanismo de sesiones es ideal para mantener información de visitas sobre determinado usuario, una vez reconocido el usuario se pueden mantener en la sesión datos de cualquier tipo tales como nombre, dirección o preferencias , esto sin la necesidad de estar constantemente realizando búsquedas en Bases de Datos y/o solicitando información vía HTML.

Objeto application para Sesiones Multiples.

El mecanismo de sesiones ofrece una solución para mantener el estado individual de diferentes usuarios, sin embargo, hay ocasiones en las que existen elementos/objetos que son ideales para compartirse entre diferentes sesiones/usuarios, para esto existe el Objeto application el cual permite compartir recursos entre diferentes sesiones/usuarios, su uso en JSP's es el siguiente:

application.setAttribute("poolDeMysql",pool);

La descripción anterior coloca el Objeto pool bajo el nombre poolDeMysql para que éste sea accesible de cualquier JSP/Servlet residente en la aplicación; para accesar el Objeto application dentro de un Servlet se utiliza la siguiente sintaxis:

 ServletContext application = getServletContext();
 IConexionPool pool = (IConexionPool) application.getAttribute("poolDeMysql");

En realidad el Objeto application es una instancia de ServletContext(), por lo que para usar el objeto application dentro de un Servlet es necesario realizarlo a través de esta Clase; en un JSP el Objeto application se encuentra disponible explícitamente como una facilidad, tal y como fue descrito en la sección de JSP's

Como se puede observar del código anterior el uso del Objeto application es utilizado para mantener un "Pool" de conexiones que es compartido por los diferentes JSP's/Servlets de una aplicación. Aún faltaría por responder: Cuales y cuantos JSP's/Servlets pertenecen a una aplicación ? La respuesta es: Todos aquellos que se encuentren dentro del mismo WAR ("Web-Archive").

Un WAR ("Web-Archive") es la manera en que son agrupados y distribuidos tanto JSP's como Servlets, sus detalles son descritos en la siguiente sección.

Terminos Legales de Contenido ©2000-2011 Osmosis Latina

Diseñado bajo estándares : XHTML   CSS  

webmaster@osmosislatina.com