TEMA 6. Applets y servlets

38
1 TEMA 6. TEMA 6. Applets y servlets Applets y servlets 1. 1. Introducción Introducción 2. 2. Applets Applets 3. 3. Servlets Servlets

description

TEMA 6. Applets y servlets. Introducción Applets Servlets. Bibliografía. Bobadilla, J. y otros. Comunicaciones y Bases de Datos en Java. Capítulos 1 y 6. Sun. “Documentación de Java”. http://java.sun.com . Traducciones al castellano en http://www.programacion.com. 1 . Introducción. - PowerPoint PPT Presentation

Transcript of TEMA 6. Applets y servlets

Page 1: TEMA 6. Applets y servlets

11

TEMA 6.TEMA 6.Applets y servletsApplets y servlets

1.1. IntroducciónIntroducción

2.2. AppletsApplets

3.3. ServletsServlets

Page 2: TEMA 6. Applets y servlets

22

BibliografíaBibliografía

Bobadilla, J. y otros. Comunicaciones y Bobadilla, J. y otros. Comunicaciones y Bases de Datos en Java. Capítulos 1 Bases de Datos en Java. Capítulos 1 y 6.y 6.

Sun. “Documentación de Java”. Sun. “Documentación de Java”. http://java.sun.comhttp://java.sun.com . Traducciones al . Traducciones al castellano en castellano en http://http://www.programacion.comwww.programacion.com

Page 3: TEMA 6. Applets y servlets

33

Applet Applet – aplicación Java diseñada aplicación Java diseñada

específicamente para ser específicamente para ser ejecutada en el contexto de un ejecutada en el contexto de un navegador web.navegador web.

Servlet Servlet – aplicación Java diseñada para aplicación Java diseñada para

ser ejecutada en el contexto de ser ejecutada en el contexto de una servidor web.una servidor web.

1 . Introducción

Conceptos

Page 4: TEMA 6. Applets y servlets

44

1 . Introducción

Esquema

Navegador Servidor

APPLET SERVLET

Page 5: TEMA 6. Applets y servlets

55

Un servlet se ejecuta en el Un servlet se ejecuta en el entorno de un servidor web o entorno de un servidor web o programa contenedor de servlets. programa contenedor de servlets.

Por lo tanto podemos ver a losPor lo tanto podemos ver a los servlets comoservlets como módulos java que módulos java que nos sirven para extender las nos sirven para extender las capacidades del servidor web.capacidades del servidor web.

3 . Servlet

SERVLETS

Page 6: TEMA 6. Applets y servlets

66

los servlets no tienen interface los servlets no tienen interface gráfico de usuario. gráfico de usuario.

Los servelts pueden ser incluidos Los servelts pueden ser incluidos en muchos servidores diferentes en muchos servidores diferentes porque el API Servlet, no asume porque el API Servlet, no asume nada sobre el entorno o protocolo nada sobre el entorno o protocolo del servidor. del servidor.

3 . Servlet

SERVLETS

Page 7: TEMA 6. Applets y servlets

77

Los Servlets son un reemplazo efectivo Los Servlets son un reemplazo efectivo para los scripts CGI. Proporcionan una para los scripts CGI. Proporcionan una forma de generar documentos forma de generar documentos dinámicos que son fáciles de escribir y dinámicos que son fáciles de escribir y rápidos en ejecutarse. rápidos en ejecutarse.

los servlets se utilizan para manejar los servlets se utilizan para manejar peticiones de cliente HTTP. Por ejemplo, peticiones de cliente HTTP. Por ejemplo, tener un servlet procesando datos tener un servlet procesando datos POSTeados sobre HTTP utilizando un POSTeados sobre HTTP utilizando un formulario HTML, incluyendo datos del formulario HTML, incluyendo datos del pedido o de la tarjeta de crédito. pedido o de la tarjeta de crédito.

3 . Servlet

USOS DE LOS SERVLETS

Page 8: TEMA 6. Applets y servlets

88

GET: solicita el documento solicitadoGET: solicita el documento solicitado

HEAD: Solicita solo la información de HEAD: Solicita solo la información de cabecera del documento.cabecera del documento.

POST: solicita que el servidor acepte el POST: solicita que el servidor acepte el documento especificado como un ejecutable documento especificado como un ejecutable y le pase informacióny le pase información

PUT: sustituye los contenidos de un PUT: sustituye los contenidos de un documento del servidor con los datos documento del servidor con los datos aportados por el cliente.aportados por el cliente.

3 . Servlet

METODOS http

Page 9: TEMA 6. Applets y servlets

99

Permitir la colaboración entre la Permitir la colaboración entre la gente. Un servlet puede manejar gente. Un servlet puede manejar múltiples peticiones múltiples peticiones concurrentes, y puede concurrentes, y puede sincronizarlas. sincronizarlas.

Reenviar peticiones. Los Servlets Reenviar peticiones. Los Servlets pueden reenviar peticiones a pueden reenviar peticiones a otros servidores y servlets. otros servidores y servlets.

3 . Servlet

USOS DE LOS SERVLETS

Page 10: TEMA 6. Applets y servlets

1010

Para poder trabajar con servlets Para poder trabajar con servlets tendremos que instalar el J2EE, que tendremos que instalar el J2EE, que proporciona una serie de posibilidades proporciona una serie de posibilidades para escribir aplicaciones para escribir aplicaciones cliente/servidor. cliente/servidor.

Tiene entre otros soporte para:Tiene entre otros soporte para:– ServletsServlets– JSPJSP

Además para poder ejecutar los Además para poder ejecutar los servlets necesitamos un contenedor servlets necesitamos un contenedor de servlets, por ejemplo Tomcat, se de servlets, por ejemplo Tomcat, se puede bajar de la dirección puede bajar de la dirección http://http://jakarta.apache.orgjakarta.apache.org//TomcatTomcat//. .

3 . Servlet

J2EE y Tomcat

Page 11: TEMA 6. Applets y servlets

1111

El interface El interface ServletServlet declara los declara los métodos que manejan el Servlet y métodos que manejan el Servlet y su comunicación con los clientes. su comunicación con los clientes.

3 . Servlet

La interfaz servlet

Page 12: TEMA 6. Applets y servlets

1212

Cuando un servlet acepta una llamada de un Cuando un servlet acepta una llamada de un cliente, recibe dos objetos. cliente, recibe dos objetos.

– Un Un ServletRequestServletRequest, que encapsula la comunicación , que encapsula la comunicación desde el cliente al servidor. desde el cliente al servidor.

– Un Un ServletResponseServletResponse, que encapsula la , que encapsula la comunicación de vuelta desde el servlet hacia el comunicación de vuelta desde el servlet hacia el cliente.cliente.

– ServletRequestServletRequest y y ServletResponseServletResponse son son

interfaces definidos en el paquete interfaces definidos en el paquete javax.servletjavax.servlet. .

3 . Servlet

Interacción con el cliente

Page 13: TEMA 6. Applets y servlets

1313

Información como los nombres de los Información como los nombres de los parámetros pasados por el cliente, el protocolo parámetros pasados por el cliente, el protocolo (esquema) que está siendo utilizado por el (esquema) que está siendo utilizado por el cliente, y los nombres del host remote que ha cliente, y los nombres del host remote que ha realizado la petición y la del server que la ha realizado la petición y la del server que la ha recibido. recibido.

El stream de entrada, El stream de entrada, ServletInputStreamServletInputStream. Los . Los Servlets utilizan este stream para obtener los Servlets utilizan este stream para obtener los datos desde los clientes que utilizan protocolos datos desde los clientes que utilizan protocolos como los métodos POST y PUT del HTTP. como los métodos POST y PUT del HTTP.

el interface el interface HttpServletRequestHttpServletRequest es una es una extensión de ServletRequest y contiene extensión de ServletRequest y contiene métodos para acceder a información de métodos para acceder a información de cabecera específica HTTP. cabecera específica HTTP.

3 . Servlet

El Interface El Interface ServletRequestServletRequest

Page 14: TEMA 6. Applets y servlets

1414

El Interface El Interface ServletResponseServletResponse le da al le da al servlet los métodos para responder al servlet los métodos para responder al cliente. cliente.

Permite al servlet seleccionar la Permite al servlet seleccionar la longitud del contenido y el tipo MIME longitud del contenido y el tipo MIME de la respuesta. de la respuesta.

Proporciona un stream de salida, Proporciona un stream de salida, ServletOutputStreamServletOutputStream, y un , y un WriterWriter a a través del cual el servlet puede través del cual el servlet puede responder datos. responder datos.

La extensión La extensión HttpServletResponseHttpServletResponse contiene métodos que permiten al contiene métodos que permiten al servlet manipular información de servlet manipular información de cabecera específica HTTP. cabecera específica HTTP.

3 . Servlet

El Interface El Interface ServletResponseServletResponse

Page 15: TEMA 6. Applets y servlets

1515

Las clases e interfaces descritos Las clases e interfaces descritos anteriormente construyen un servlet básico. anteriormente construyen un servlet básico.

Los servlets HTTP tienen algunos objetos Los servlets HTTP tienen algunos objetos adicionales que proporcionan capacidades de adicionales que proporcionan capacidades de seguimiento de sesión. De forma que se seguimiento de sesión. De forma que se puede mantener el estado entre el servlet y puede mantener el estado entre el servlet y el cliente a través de múltiples conexiones el cliente a través de múltiples conexiones durante un periodo de tiempo. durante un periodo de tiempo.

Los servlets HTTP también tienen objetos que Los servlets HTTP también tienen objetos que proporcionan cookies. El API cookie se utiliza proporcionan cookies. El API cookie se utiliza para guardar datos dentro del cliente y para guardar datos dentro del cliente y recuperar esos datos. recuperar esos datos.

3 . Servlet

Servlets HTTPServlets HTTP

Page 16: TEMA 6. Applets y servlets

1616

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

public class Hola Mundo extends HttpServlet {public class Hola Mundo extends HttpServlet {

public void doGet (HttpServletRequest req, public void doGet (HttpServletRequest req, HttpServletResponse res) HttpServletResponse res) throws ServletException, throws ServletException,

IOExceptionIOException {{PrintWriter out = res.getWriter();PrintWriter out = res.getWriter();res.setContentType("text/html");res.setContentType("text/html");out.println("<html>"); out.println("<html>"); out.println("<head><title>Hola out.println("<head><title>Hola

Mundo</title></head>");Mundo</title></head>");out.println("<body>);out.println("<body>);out.println("<h1>Hola Mundo</h1>");out.println("<h1>Hola Mundo</h1>");out.println("</body></html>");out.println("</body></html>"); }}} }}}

3 . Servlet

EjemploEjemplo

Page 17: TEMA 6. Applets y servlets

1717

Es independiente de la plataforma Es independiente de la plataforma en la que se este ejecutando. en la que se este ejecutando.

Ejecución multihilo. Cada una de Ejecución multihilo. Cada una de las peticiones sobre el servlet las peticiones sobre el servlet creará una hilo que se ejecutará creará una hilo que se ejecutará de manera independiente. El de manera independiente. El servlet permanece cargado en servlet permanece cargado en memoria por lo que atiende memoria por lo que atiende rápidamente las peticiones.rápidamente las peticiones.

3 . Servlet

Características generalesCaracterísticas generales

Page 18: TEMA 6. Applets y servlets

1818

El servlet puede obtener información El servlet puede obtener información acerca de la máquina que ha acerca de la máquina que ha realizado la petición (IP, puerto, tipo realizado la petición (IP, puerto, tipo de método de envío: get o post,...).de método de envío: get o post,...).

Conexión a Bases de Datos. A través Conexión a Bases de Datos. A través de los servlets podemos establecer de los servlets podemos establecer conexiones a diferentes tipos de conexiones a diferentes tipos de bases de datos. bases de datos.

Proxy para applets. De forma que el Proxy para applets. De forma que el applet se comunique con el servlet. applet se comunique con el servlet.

3 . Servlet

Características generalesCaracterísticas generales

Page 19: TEMA 6. Applets y servlets

1919

Uno de los problemas del protocolo HTTP Uno de los problemas del protocolo HTTP es que es un protocolo sin estado. En los es que es un protocolo sin estado. En los servlets podemos utilizar las sesiones y servlets podemos utilizar las sesiones y cookies para poder llevar a acabo esto. cookies para poder llevar a acabo esto.

Generación dinámica de código. Esta es Generación dinámica de código. Esta es una de las características más utilizadas una de las características más utilizadas en los servlets, la generación dinámica en los servlets, la generación dinámica de HTML. de HTML.

Recursos compartidos entre usuarios. Los Recursos compartidos entre usuarios. Los servlets pueden definir estructuras o servlets pueden definir estructuras o información que va a ser compartida por información que va a ser compartida por diferentes usuarios que utilicen el servlet. diferentes usuarios que utilicen el servlet.

3 . Servlet

Características generalesCaracterísticas generales

Page 20: TEMA 6. Applets y servlets

2020

A la hora de enviar parámetros A la hora de enviar parámetros desde la página html, tenemos desde la página html, tenemos dos formas: mediante el dos formas: mediante el método método get get y mediante el y mediante el método postmétodo post. .

Método Post. Método Post. – Este método solo esta accesible Este método solo esta accesible

desde los formularios. Se envían los desde los formularios. Se envían los parámetros de forma implícita. parámetros de forma implícita.

3 . Servlet

Recibir parámetrosRecibir parámetros

Page 21: TEMA 6. Applets y servlets

2121

Método Get. Método Get. Este método envía los Este método envía los parámetros de parámetros de forma explícita forma explícita junto a la página, mostrando en la junto a la página, mostrando en la barra de navegación los parámetros y sus valores. barra de navegación los parámetros y sus valores.

Ejemplo: buscar?Ejemplo: buscar?id=189006&valor=0987&texto='todo'&.......id=189006&valor=0987&texto='todo'&.......

Las cadenas toman el aspecto Las cadenas toman el aspecto parametro1=valor1&....&parametroN=valorNparametro1=valor1&....&parametroN=valorN. .

Es decir es una concatenación a través de & de pares Es decir es una concatenación a través de & de pares parámetro-valor.parámetro-valor.

Para enviar mediante este método tenemos dos Para enviar mediante este método tenemos dos posibilidades. O bien lo hacemos mediante el formulario posibilidades. O bien lo hacemos mediante el formulario indicando que utilizamos el método get o bien a través indicando que utilizamos el método get o bien a través de un enlace con la etiqueta de un enlace con la etiqueta <A HREF=...><A HREF=...>

3 . Servlet

Recibir parámetrosRecibir parámetros

Page 22: TEMA 6. Applets y servlets

2222

Un objeto Un objeto HttpServletRequestHttpServletRequest proporciona acceso a proporciona acceso a los datos de cabecera HTTP, también permite obtener los datos de cabecera HTTP, también permite obtener los argumentos que el cliente envía como parte de la los argumentos que el cliente envía como parte de la petición. petición.

Para acceder a los datos del cliente:Para acceder a los datos del cliente:

El método El método getParametergetParameter devuelve el valor de un devuelve el valor de un parámetro nombrado. Si nuestro parámetro pudiera parámetro nombrado. Si nuestro parámetro pudiera tener más de un valor, deberíamos utilizar tener más de un valor, deberíamos utilizar getParameterValuesgetParameterValues en su lugar. en su lugar.

El método El método getParameterValuesgetParameterValues devuelve un array devuelve un array de valores del parámetro nombrado. de valores del parámetro nombrado.

El método El método getParameterNamesgetParameterNames proporciona los proporciona los nombres de los parámetros. nombres de los parámetros.

3 . Servlet

Objetos Objetos HttpServletRequestHttpServletRequest

Page 23: TEMA 6. Applets y servlets

2323

La respuesta del servlet al servidor se realizará La respuesta del servlet al servidor se realizará mediante el objeto HttpServletResponse.mediante el objeto HttpServletResponse.

Un objeto Un objeto HttpServletResponseHttpServletResponse proporciona dos proporciona dos formas de devolver datos al usuario. formas de devolver datos al usuario. – El método El método getWritergetWriter devuelve un devuelve un WriterWriter – El método El método getOutputStreamgetOutputStream devuelve un devuelve un

ServletOutputStreamServletOutputStream El método El método getWritergetWriter se utiliza para devolver datos se utiliza para devolver datos

en formato texto al usuario y el método en formato texto al usuario y el método getOutputStreamgetOutputStream para devolver datos binarios. para devolver datos binarios.

Si cerramos el Si cerramos el WriterWriter o el o el ServletOutputStreamServletOutputStream después de haber enviado la respuesta, permitimos al después de haber enviado la respuesta, permitimos al servidor saber cuando la respuesta se ha completado. servidor saber cuando la respuesta se ha completado.

3 . Servlet

Enviar resultadosEnviar resultados

Page 24: TEMA 6. Applets y servlets

2424

Debemos seleccionar la cabecera Debemos seleccionar la cabecera de datos HTTP antes de acceder a de datos HTTP antes de acceder a WriterWriter o a o a OutputStreamOutputStream. .

La clase La clase HttpServletResponseHttpServletResponse proporciona métodos para acceder proporciona métodos para acceder a los datos de la cabecera. Por a los datos de la cabecera. Por ejemplo, el método ejemplo, el método setContentTypesetContentType selecciona el selecciona el tipo de contenido.tipo de contenido.

3 . Servlet

Cabecera de resultadosCabecera de resultados

Page 25: TEMA 6. Applets y servlets

2525

import java.io.*;import java.io.*;import javax.servlet.*;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.http.*;public class DirectorioRaiz extends HttpServlet {public class DirectorioRaiz extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse public void doGet(HttpServletRequest request, HttpServletResponse

response)response) throws IOException, ServletExceptionthrows IOException, ServletException {{ response.setContentType("text/html");response.setContentType("text/html"); PrintWriter ACliente = response.getWriter();PrintWriter ACliente = response.getWriter(); File Fichero = new File("c:/");File Fichero = new File("c:/"); String[] Contenido = Fichero.list();String[] Contenido = Fichero.list(); ACliente.println("<html>");ACliente.println("<html>"); ACliente.println("<body>");ACliente.println("<body>"); ACliente.println("<table border=1 ACliente.println("<table border=1 bgcolor='Salmon'>");bgcolor='Salmon'>"); for (int Fich=0;Fich<Contenido.length;Fich++) {for (int Fich=0;Fich<Contenido.length;Fich++) { ACliente.println("<tr><td>");ACliente.println("<tr><td>"); ACliente.println("<font size=1>");ACliente.println("<font size=1>"); ACliente.println(Contenido[Fich]);ACliente.println(Contenido[Fich]); ACliente.println("</font>");ACliente.println("</font>"); ACliente.println("</td></tr>");ACliente.println("</td></tr>"); … …..

3 . Servlet EjemploEjemplo

Page 26: TEMA 6. Applets y servlets

2626

Un servidor carga e inicializa el servlet. Un servidor carga e inicializa el servlet. El servlet maneja cero o más peticiones El servlet maneja cero o más peticiones

de cliente. de cliente. El servidor elimina el servlet. (Algunos El servidor elimina el servlet. (Algunos

servidores sólo cumplen este paso servidores sólo cumplen este paso cuando se desconectan). cuando se desconectan).

3 .Servlet

Ciclo de vida

Page 27: TEMA 6. Applets y servlets

2727

Cuando un servidor carga un servlet, ejecuta el Cuando un servidor carga un servlet, ejecuta el método método initinit del servlet. Al igual que en las applets del servlet. Al igual que en las applets este método se puede reescribir. Al sobreescibir lo este método se puede reescribir. Al sobreescibir lo más aconsejable es que se invoque a super.init(conf).más aconsejable es que se invoque a super.init(conf).

La inicialización se completa antes de manejar La inicialización se completa antes de manejar peticiones de clientes y antes de que el servlet sea peticiones de clientes y antes de que el servlet sea destruido. destruido.

El servidor llama sólo una vez al método El servidor llama sólo una vez al método initinit, cuando , cuando carga el servlet, y no lo llamará de nuevo a menos carga el servlet, y no lo llamará de nuevo a menos que vuelva a recargar el servlet. El servidor no puede que vuelva a recargar el servlet. El servidor no puede recargar un servlet sin primero haber destruido el recargar un servlet sin primero haber destruido el servlet llamando al método servlet llamando al método destroydestroy. .

3 . Servlet

Inicializar el servletInicializar el servlet

Page 28: TEMA 6. Applets y servlets

2828

Los servlets se ejecutan hasta que el Los servlets se ejecutan hasta que el servidor los destruye, por ejemplo, a servidor los destruye, por ejemplo, a petición del administrador del sistema. petición del administrador del sistema.

Cuando un servidor destruye un Cuando un servidor destruye un servlet, ejecuta el método servlet, ejecuta el método destroydestroy del del propio servlet. Este método sólo se propio servlet. Este método sólo se ejecuta una vez. El servidor no ejecuta una vez. El servidor no ejecutará de nuevo el servlet, hasta ejecutará de nuevo el servlet, hasta haberlo cargado e inicializado de haberlo cargado e inicializado de nuevo. nuevo.

3 . Servlet

Destruir un servletDestruir un servlet

Page 29: TEMA 6. Applets y servlets

2929

A la hora de obtener la IP y el A la hora de obtener la IP y el nombre del host del cliente que nombre del host del cliente que invoca un servlet deberemos de invoca un servlet deberemos de utilizar los métodos utilizar los métodos getRemoteHost()getRemoteHost() y y getRemoteAddr()getRemoteAddr() sobre la sobre la variables variables HttpServletRequestHttpServletRequest que que se les pasa como parámetro tanto al se les pasa como parámetro tanto al método doGet, como al método método doGet, como al método doPost.doPost.

3 . Servlet

Obtener IP en el ServletObtener IP en el Servlet

Page 30: TEMA 6. Applets y servlets

3030

Si repasamos el ciclo de vida de un servlet vemos que este está Si repasamos el ciclo de vida de un servlet vemos que este está controlado por el contenedor en el que ha sido desarrollado. Cuando controlado por el contenedor en el que ha sido desarrollado. Cuando el servlet recibe una petición pueden pasar dos cosas: el servlet recibe una petición pueden pasar dos cosas:

Si no existe una instancia del servlet en el contenedor Web Si no existe una instancia del servlet en el contenedor Web – Se carga la clase Servlet Se carga la clase Servlet – Se crea una instancia de la clase servlet Se crea una instancia de la clase servlet – Se inicializa el servlet mediante su método init. Se inicializa el servlet mediante su método init. – Invoca el método service que pasa los objetos request y response. Invoca el método service que pasa los objetos request y response.

   Si ya existe una instancia Si ya existe una instancia

– Crea un nuevo hiloCrea un nuevo hilo– Invoca el método service que pasa a los objetos request y response. Invoca el método service que pasa a los objetos request y response.

Es decir, que en el segundo caso no invocamos el método init. Si Es decir, que en el segundo caso no invocamos el método init. Si bien se crean tantos hilos como peticiones se realizen sobre el bien se crean tantos hilos como peticiones se realizen sobre el servlet. servlet.

Si queremos evitar que el servlet cree un nuevo hilo por cada Si queremos evitar que el servlet cree un nuevo hilo por cada petición que a el se haga deberemos de indicar que nuestro servlet petición que a el se haga deberemos de indicar que nuestro servlet implementa un patrón Singleton. Este patrón singleton esta implementa un patrón Singleton. Este patrón singleton esta implícito en la interface implícito en la interface SingleThreadModeSingleThreadModel. A si que simplemente l. A si que simplemente deberemos de implementar dicho interface.deberemos de implementar dicho interface.

3 . Servlet

Servlet de una sola instancia

Page 31: TEMA 6. Applets y servlets

3131

     Seguimiento de Sesión. Seguimiento de Sesión. El El

seguimiento de sesión es un mecanismo seguimiento de sesión es un mecanismo que los servlets utilizan para mantener el que los servlets utilizan para mantener el estado sobre la serie de peticiones desde estado sobre la serie de peticiones desde un mismo usuario (esto es, peticiones un mismo usuario (esto es, peticiones originadas desde el mismo navegador) originadas desde el mismo navegador) durante algún periodo de tiempo,. durante algún periodo de tiempo,.

    Cookies. Cookies. Las Cookies son un Las Cookies son un mecanismo que el servlet utiliza para mecanismo que el servlet utiliza para mantener en el cliente una pequeña mantener en el cliente una pequeña cantidad de información asociada con el cantidad de información asociada con el usuario. usuario.

3 . Servlet

Guardar el estado del cliente

Page 32: TEMA 6. Applets y servlets

3232

   Obtener una sesión (un objeto

HttpSession) para un usuario.

Almacenar u obtener datos desde el objeto HttpSession.

Invalidar la sesión (opcional).

3 . Servlet

Seguimiento de una sesión

Page 33: TEMA 6. Applets y servlets

3333

  public class CatalogServlet extends

HttpServlet {public void doGet (HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{// Obtener la sesiónHttpSession session =

request.getSession(true);

3 . Servlet

Obtener una sesión

Page 34: TEMA 6. Applets y servlets

3434

  HttpSession session = request.getSession(true);Objeto1 cart =(Objeto1)

session.getValue(session.getId());// Sino se ha dejado nada en cart, crear nuevaif (cart == null) {cart = new Objeto1();session.putValue(session.getId(), cart);session.invalidate();

3 . Servlet

Almacenar y recuperar datos e invalidar

Page 35: TEMA 6. Applets y servlets

3535

   Por defecto, el seguimiento de

sesión utiliza cookies para asociar un identificador de sesión con un usuario.

Para soportar también a los

usuarios que acceden al servlet con un navegador que no soporta cookies, debemos utilizar reescritura de URL en su lugar.

3 . Servlet

Seguimiento de una sesión

Page 36: TEMA 6. Applets y servlets

3636

   Para enviar una cookie:

– Crear un objeto Cookie.– Seleccionar cualquier atributo.– Enviar el cookie

Para obtener información de un cookie:– Recuperar todos los cookies de la petición

del usuario.– Buscar el cookie o cookies por nombre.– Obtener los valores de las cookies.

3 . Servlet

Cookies

Page 37: TEMA 6. Applets y servlets

3737

  public void doGet (HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{...//crear una cookieCookie getBook = new Cookie("Buy", bookId);

//añadir un comentariogetBook.setComment(“comentario");

// enviar la cookieresponse.addCookie(getBook);

//caducidad de la cookie, 0 eliminarla, valor negativo cuando acabe el navegador

getBook.setMaxAge(tiempo);

3 . Servlet

Enviar una Cookie

Page 38: TEMA 6. Applets y servlets

3838

  public void doGet (HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{...// recuperar las cookiesCookie[] cookies = request.getCookies();

for(i=0; i < cookies.length; i++) {Cookie thisCookie = cookie[i];if (thisCookie.getName().equals("Buy") &&thisCookie.getValue().equals(bookId)) {

3 . Servlet

Recuperar una Cookie