43 servlets
Aplicaciones Web/Sistemas Web
Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Facultad de Informática
Universidad Complutense Madrid
Material bajo licencia Creative Commons
Java EE Servlets y JSPs
Servlet
Clase Java que implementa un modelo de programación peticiónrespuesta
• Puede usarse para procesar cualquier tipo de petición
• ClaseGenericServlet
• Definido en el paquete javax.servlet
• Hay subclases específicas para HTTP: paquete javax.servlet.http
• Clase HttpServlet
Tiene un ciclo de vida concreto controlado por el contenedor en el que
se despliega
Cada servlet se ejecuta como un thread independiente
JSP (JavaServer Page)
Fichero con código (X)HTML que incluye scripts codificados en Java
Se compila y seconvierte en un servlet
Utiliza etiquetas especializadas (Custom Tags) que amplían la sintaxis
de HTML
Juan Pavón - UCM 2012-13
Servlets
2
Ciclo de vida de un servlet
Lo controla el contenedor en el que se ha desplegado
Al llegar una petición correspondiente a un servlet, el contenedor
1. Comprueba si existe una instancia del servlet
• Si no existe
• Carga la clase del servlet
• Crea unainstancia del servlet
• Inicializa la instancia del servlet llamando al método init()
2. Se invoca al método de servicio, pasándole objetos de tipo request
y response
• El servlet usa estos objetos para inspeccionar la petición y generar la
respuesta
3. Si hay que eliminar el servlet, el contenedor llama al método destroy()
del servlet
Juan Pavón - UCM 2012-13
Servlets
3
Servlet
Cualquierclase que implemente la interfaz
javax.servlet.Servlet
También suele ser necesaria la interfaz
javax.servlet.ServletConfig
Métodos para gestionar el ciclo de vida del servlet
Tiene los parámetros de arranque e inicialización para el servlet que le
pasa el contenedor
Normalmente los servlets se implementan a partir de una de las
dos subclases siguientes que implementan ambas interfaces:
javax.servlet.GenericServlet
• Clase que define un servlet independiente del protocolo
javax.servlet.http.HttpServlet
• Para servlets en aplicaciones web, que procesan las peticiones con el
protocolo HTTP
Juan Pavón - UCM 2012-13
Servlets
4
Métodos de la interfaz javax.servlet.Servlet
init(ServletConfig config)
Al arrancar un servlet, solo se ejecuta una vez
Inicializa atributos yrecursos del servlet
getServletConfig()
Devuelve el objeto ServletConfig que contiene parámetros de arranque e
inicialización para el servlet que le pasa el contenedor
service(ServletRequest request, ServletResponse response)
Cada vez que se invoca un servicio al servlet
Dependiendo del tipo de servicio, invoca el método correspondiente al
servicio solicitado
Normalmente no sereescribe este método, solo los correspondientes a
los servicios específicos
Pueden invocarse concurrentemente los métodos de servicio, por ello
deben ser thread safe
destroy()
Al eliminar un servlet, solo se ejecuta una vez
Tiene que ser thread-safe porque puede haber otros threads en
ejecución
Juan Pavón - UCM 2012-13
Servlets
5
Métodos de la clase javax.servlet.HTTPServlet
El método service trata las siguientes peticiones:
Los más usados:
DELETE, GET, HEAD, OPTIONS, POST, PUT, y TRACE
Invoca el método correspondiente doXXX
doGet(HttpServletRequest request, HttpServletResponse response)
doPost(HttpServletRequest request, HttpServletResponse response)
Estos dos métodos son los que normalmente se tienen que
reescribir
El objeto request tieneinformación enviada en la petición
El objeto response permite crear la respuesta
• setContentType() – permite indicar el tipo MIME de lo que se va a
generar (por ejemplo, "text/html")
• getWriter() – devuelve el PrintWriter donde escribir lo que se genere
Pueden producir dos excepciones:
• IOException, porque usan operaciones de E/S
• ServletException, cualquier otra excepción que se quiera...
Regístrate para leer el documento completo.