3. HTTPRequest y HTTPResponse
Ciclo de vida de una solicitud
El usuario invoca un servlet
directamente por URL, haciendo click
en un enlace o enviando un formulario
html.
El contenedor identifica que laEl contenedor identifica que la
Solicitud es para un servlet y en
esa medida crea un objeto
HTTPServletRequest y uno
HTTPServletResponse.
4. HTTPRequest y HTTPResponse
Ciclo de vida de una solicitud
El contenedor encuentra el servlet con
base en la url proporcionada, inicia un
hilo para el servlet e invoca el método
service() con el request y response como
argumentos.
El método service() identifica el métodoEl método service() identifica el método
HTTP del request, y con base en esto
invoca el respectivo método en el servlet.
5. HTTPRequest y HTTPResponse
Ciclo de vida de una solicitud
El servlet toma los parametros del request
y utliza el response para generar una
respuesta al cliente. El response vuelve
al contenedor.
Los objetos request y response quedanLos objetos request y response quedan
ruera del alcance y son marcados para
ser limpiados por el Garbage Collector.
9. Parámetros del request
Los valores que se ingresan en campos de tipo input de un
formulario son parametros del request que llega al servlet.formulario son parametros del request que llega al servlet.
El objeto HTTPServletRequest tiene dos métodos para acceder
a los parametros:
String param = request.getParameter("<nombre del parámetro> ");
String[] params = request.getParameterValues("<nombre del parámetro> ");
12. HTTServletRequest
Proporciona métodos para acceder a la siguiente información:
Información del browserInformación del browser
String client = request.getHeader(“User-Agent”);
Cookies asociadas con el request
Cookie[] cookies = request.getCookies();
Sesión asociada con el cliente
HttpSession session = request.getSession();
Método HTTP
String theMethod = request.getMethod();
InputStream del request
InputStream input = request.getInputStream();
13. HTTServletResponse
Se utiliza para generar la respuesta al cliente, mediante la
generación directa de contenido usando un Writer o mediante lageneración directa de contenido usando un Writer o mediante la
redirección del flujo de respuesta hacia una página JSP, un
servlet, o una URL.
15. HTTServletResponse
De acuerdo con el tipo de contenido que se va a generar para el
response, en el método setContentType se puede utilizarresponse, en el método setContentType se puede utilizar
cualquiera de los tipos MIME:
text/html
application/pdf
video/quicktime
application/java
Un listado de todos los mime types se puede
encontrar enapplication/java
image/jpeg
application/jar
application/octect-stream
application/x-zip
encontrar en
http://www.iana.org/assignments/media-types/
16. HTTServletResponse
En el caso de una redirección de flujo se utiliza el método
sendRedirect(url)sendRedirect(url)
response.sendRedirect("http://www.mipagina.com");
response.sendRedirect(“directorio/index.jsp");
response.sendRedirect(“/index.jsp");
Relativa al contexto
Raíz del contenedor
Absoluta
response.sendRedirect(“/index.jsp"); Raíz del contenedor
17. Envío de atributos a JSPs
En su labor de controladores, los servlets pueden enviar datos
(en formato de VO/DTO) a las JSPs.(en formato de VO/DTO) a las JSPs.
request.setAttribute(“key”, attribute);
request.getRequestDispatcher("main.jsp").forward(request, response);
En el caso de envío de atributos a una jsp no se puede hacerEn el caso de envío de atributos a una jsp no se puede hacer
con el metodo sendRedirect del response, porque en este caso
el request ya es otro objeto.
18. Scopes
Los scopes proporcionan marcos de acceso a atributos de acuerdo
con la cobertura del scope. Los atributos son objetos , a diferencia
de los parámetros que son String.de los parámetros que son String.
En las aplicaciones JEE hay cuatro scopes: Context, Request, Session,
Page. En los scopes se pueden colocar y consultar atributos,
mediante los métodos setAttribute(String name, Object value) y
getAttribute(String name)
Scope Cobertura
Session Solo los componentes involucrados en la sesión
Request Los componentes involucrados en el request
Context Todo el mundo en la aplicación tiene acceso
Page Solo la página JSP que crea el objeto
20. ServletContext
Proporciona un scope de información que aplica para toda la
aplicación. Es decir por cada aplicación web existe un
ServletContext.ServletContext.
Se usa para acceder a parámetros que aplican para toda la
aplicación web, como por ejemplo los parámetros de inicio que se
configuran en el deployment descriptor (web.xml).
Se usa para agregar atributos que cualquier componente de la
aplicación puede consultar.aplicación puede consultar.
Permite acceder a información como el nombre y versión del
contenedor, y la versión del API soportada.
21. Sesiones
Permiten la ejecución de aplicaciones bajo un modelo
conversacional, es decir el algunos objetos seleccionadosconversacional, es decir el algunos objetos seleccionados
mantienen su estado durante la el tiempo de vida de la sesión.
En las aplicaciones JEE el objeto HTTPSession permite
mantener objetos a través de múltiples requests.
Debido a que el modelo de http es stateless, es necesario
asignar un identificador unico que defina la sesión, para que
los request se mantengan en un marco conversacional.
22. Sesiones
Dos aproximaciones se tienen para el manejo del id de sesión:
Autenticación y cookies.Autenticación y cookies.
En el caso de las cookies, con el
primer request se genera un id en
el contenedor; este id se regresa
al cliente para que en un próximo
request pueda ser enviado al
contenedor.contenedor.
Para generar todo el proceso
solo es necesaria la siguiente
línea:
request.getSession()
23. Sesiones
En el caso que el cliente tenga deshabilitadas las cookies es
necesario que el id de sesión este codificado en las urls. En estenecesario que el id de sesión este codificado en las urls. En este
caso se deben usar los métodos:
response.encodeURL(String url)
response.encodeRediretURL(String url)
24. HTTPSession
Método Descripción
getCreationTime() Retorna el tiempo en el cual la
sesión fue creada por primera vez.
getLastAccesedTime() Retorna en ms el tiempo del ultimo
request con un session id.
setMaxInactiveInterval() Máximo tiempo en segs entre
request de la misma sesión.request de la misma sesión.
getMaxInactiveInterval() Retorna el máximo tiempo de
inactividad de la sesión.
invalidate() Finaliza la sesión.
25. JSP
Las páginas JSP pueden tener código Java para la generación
de contenido dinámico. El código Java puede presentar ade contenido dinámico. El código Java puede presentar a
manera de scriplets o como una expresión.
Scriplet Expresión
27. JSP - Tags
Tag Descripción Ejemplo
<%@ %> Directiva: se usa para
importar librerías de objetos.
<%@ import=“java.util.*” %>
<%! %> Declaración: se usa para la
declaración de variables.
<%! int index = 1; %>
<% %> Scriplet: se usa para ingresar
porciones de código java.
<% for(int i=1; i<10;i++)….%>
<%= %> Expresion: se usa para la <%= request.getAttribute(” pepe”)%><%= %> Expresion: se usa para la
impresion directa de valores.
<%= request.getAttribute(” pepe”)%>
${ } Expresion EL: expresión para
acceso rápido
${applicationScope.mail}
28. JSP- Expression Language
Permite la evaluación inmediata de expresiones que usan el operador
. (punto) para acceder a propiedades atributos en algunos en los
scopes.scopes.
Por ejemplo ${person.name} imprime directamente el valor del
atributo name de un atributo person, que reside en alguno de scopes.
El lado derecho del operator . (punto) puede ser cualquiera de los
objetivos implicitos en los jsp:
pageScope, requestScope, sessionScope, applicationScope, param,
header, pageContext.
29. Bibliografía
B. Basham. Head First Servlets and JSP. Oreilly,
2008.2008.
The Java EE 5 Tutorial.
http://java.sun.com/javaee/5/docs/tutorial/doc/ind
ex.html