Académique Documents
Professionnel Documents
Culture Documents
Temario
3. Servlets
Qu es un Servlet?
La jerarqua de Servlets
HttpServletRequest y HttpServletResponse
Mapping de Servlets
Ciclo de vida de un Servlet
Inicializacin de Servlets
Manejo de parmetros
Manejo de sesiones
Manejo de threads
Redireccionamiento
Eventos y listeners
Filtros
Servlets
Servlet Container
De acuerdo a la especificacin:
Servlets
Tareas de un Servlet
Ventajas de Servlets
Eficiente
Conveniente
Portable
Poderoso
Seguro
La Jerarqua de Servlets
javax.servlet
javax.servlet.http
8
Servlet
interface javax.servlet.Servlet
Servlet
10
GenericServlet
class javax.servlet.GenericServlet
11
HttpServlet
class javax.servlet.http.HttpServlet
12
HttpServlet
13
HttpServlet
14
15
Ejemplo
16
HttpServletRequest
interface javax.servlet.http.HttpServletRequest
17
HttpServletRequest
La interfaz javax.servlet.http.HttpServletRequest
provee mtodos para:
HttpServletResponse
interface javax.servlet.http.HttpServletResponse
19
HttpServletResponse
La interfaz javax.servlet.http.HttpServletResponse
provee mtodos para:
20
Mapping de Servlets
21
Mapping de Servlets
22
El Deployment Descriptor
Archivo <webapp>/WEB-INF/web.xml
</web-app>
23
24
init
service
destroy
Inicializacin de Servlets
26
Inicializacin de Servlets
27
Inicializacin de Servlets
28
Inicializacin de Servlets
29
Resultado ServletInicializacion
30
Manejo de Parmetros
Envo de parmetros:
En un URL:
Form data:
http://www.discos.cl/discos/busqueda?
autor=Les+Luthiers&desde=1995&hasta=2000
<form action="http://www.discos.cl/discos/buscar">
<input type="text" name="tipo" size="20"
maxlength="40">
<input type="submit" name="Aceptar"
value="Aceptar">
</form>
En un link:
<a href=
"http://java.sun.com/j2ee/1.4/download.html#samples"
>BluePrints in the J2EE 1.4 SDK Samples bundle</a>
31
Envo de Parmetros
32
Envo de Parmetros
33
Envo de Parmetros
34
Recepcin de Parmetros
request.getParameter("parametro")
request.getParameterValues("parametro")
request.getParameterNames()
35
Recepcin de Parmetros
36
Resultado ServletParametros
37
Manejo de Sesin
38
39
HttpSession
javax.servlet.http.HttpSession
40
Identificacin de Sesiones
42
43
Threads
Threads
45
Threads
46
Redireccionamiento
HttpServletResponse.sendRedirect:
HttpServletResponse.sendRedirect retorna una respuesta de
tipo redirect al cliente, lo que genera un nuevo request
request.sendRedirect("reportes/reporte1");
RequestDispatcher.forward:
RequestDispatcher.forward no involucra interaccin con el
cliente, el forward generado forma parte del mismo request
RequestDispatcher dispatcher =
request.getRequestDispatcher("reportes/reporte1");
dispatcher.forward(request, response);
47
Compartiendo Informacin
request.setAttribute("nombre", valor);
session.setAttribute("nombre", valor);
servletContext.setAttribute("nombre", valor);
48
ServletContext
49
Listeners
ServletContextListener:
ServletContextListener recibe notificaciones de cambios de
estado en el ServletContext de la aplicacin Web
ServletContextAttributeListener:
ServletContextAttributeListener recibe notificaciones de
cambios en la lista de atributos del ServletContext de la
aplicacin Web
ServletRequestListener:
ServletRequestListener recibe notificaciones de cambios de
estado en un ServletRequest
ServletRequestAttributeListener:
ServletRequestAttributeListener recibe notificaciones de
cambios en la lista de atributos de un ServletRequest
50
ServletContextListener
Configuracin de un ServletContextListener en archivo web.xml
Implementacin de un ServletContextListener
51
ServletContextListener
52
ServletContextListener
53
Filtros
Consultar el request
Bloquear el acceso al recurso
Modificar el encabezado y la data del request
(mediante un wrapper)
Modificar el encabezado y la data del response
(mediante un wrapper)
54
Encadenamiento de Filtros
55
Aplicaciones de Filtros
Autenticacin
Log
Conversin de imgenes
Compresin de datos
Encriptacin
Transformaciones XML
...
56
La Interfaz Filter
chain.doFilter(request, response);
57
La Interfaz FilterChain
58
59
Un Filtro Sencillo
60
Mapping de un Filtro
61
Modificaciones
Customizacin de un Request
63
El Wrapper
public class MyWrapper extends HttpServletRequestWrapper {
public MyWrapper(HttpServletRequest request) {
super(request);
}
// agrega el parmetro version="1.1"
public String getParameter(String name) {
return name.equals("version") ? "1.1" : super.getParameter(name);
}
}
El Filtro
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException
{
chain.doFilter(new MyWrapper((HttpServletRequest)req), res);
}
64
Customizacin de un Response
65
Ejemplo: Compresin
GZipResponseStream:
GZipResponseStream una especializacin de
ServletOutputStream que comprime al escribir,
para lo cual redefine los mtodos write()
GZipResponseWrapper:
GZipResponseWrapper una especializacin de
HttpServletResponseWrapper,
HttpServletResponseWrapper cuyos mtodos
getWriter() y getOutputStream() generan un
objeto GZipResponseStream
GZipFilter:
GZipFilter una implementacin de Filter,
Filter cuyo
mtodo doFilter() enmascara la respuesta en un
objeto GZipResponseWrapper
66
Diseo de GZipFilter
67
Clase GZipResponseStream
68
Clase GZipResponseWrapper
69
Clase GZipFilter
70
Resumen
Resumen
72