Hola y bienvenidos a esta elección.
A continuación vamos a realizar un ejercicio para crear un carrito de compras utilizando el manejo de
sesiones de la pídelo servlets.
Están listos.
Vamos bien vamos a cerrar este proyecto y vamos a crear uno nuevo.
Estamos sin derecho Clowes y vamos a crear nuestro nuevo proyecto danos y enfile.
Mi proyecto seleccionamos Yávar Wild Maiden Weda application.
Damos clic en Next y el nombre del proyecto va a ser ejemplo
carrito compras lo depositamos en curso servlet dejamos el grupo Heydi como está la versión 1.0 y quitamos
el nombre del paquete damos clic en Next dejamos los valores por default y damos clic en Finalizar
bien vamos a modificar el nombre damos clic derecho arruiné guardamos cambios
quitamos este código y nos lo ha agregado
y ahora vamos a modificar nuestro archivo índex HTML el título va a ser carrito
compras
y de igual manera el título H1 va a ser ejemplo
ejemplo carrito compras y vamos a agregar un formulario para mandar a llamar al servlet y lo que vamos
a hacer es que vamos a ir agregando varios artículos al carrito de compras así que vamos a lo siguiente
declaramos un elemento de tipo form posteriormente el Action donde vamos a poner el contextual ejemplo
carrito de compras el cual debe de ser igual al nombre de nuestra aplicación.
Y posteriormente se va a llamar carrito servlet agregamos el método el tipo de método que vamos a utilizar
que va a ser de tipo post y el nombre del formulario que se va a llamar Form 1 este valor del nombre
del formulario es opcional y posteriormente vamos a llegar lo siguiente Artículo a agregar agregamos
esta leyenda y posteriormente agregamos un imput un elemento de tipo imput el tipo va a ser de tipo
texto el nombre va a ser artículo y nos va a servir para agregar un nuevo elemento un nuevo artículo
a nuestro carrito de compras.
Posteriormente agregamos un salto de línea
y agregamos el botón de Enviar que va a ser también un input pero el tipo va a ser submit
agregamos el valio con el botón de enviar y hasta aquí lo que estamos haciendo es definir el formulario
que va a enviar un nuevo artículo a nuestro servlet al carrito servlet y una vez que enviemos este artículo
se va a agregar a la sesión y el servlet va a empezar a desplegar los artículos que sean agregados a
este carrito de compras.
Eso es todo por el Archivo de Indias HTML y ahora vamos a crear nuestro servlet derecho nio y a la clase
y el sable se va a llamar carrito servlet y lo depositamos en el paquete web damos clic en Finalizar
quitamos los comentarios y agregamos el pack a nuestro servlet utilizando la notación web servlet
recordemos que debe ser diagonal posteriormente el nombre de nuestro servlet el par carrito servlet
extendemos de http: servlet e importamos estas clases
sobre escribimos el método
en este caso va a ser el método POST ya que si lo definimos en el formulario
definimos los atributos
importamos todas las claves de este paquete y con esto ya estamos escribiendo correctamente nuestro
método de post.
Ahora establecemos nuestra respuesta con ayuda del objeto respondés mandamos a llamar el método se contenta.
La respuesta va a ser de tipo texto HTML y Achar charged boite f 8 bien ahora lo que vamos a hacer es
procesar el nuevo artículo que nos está enviando el formulario.
Recordemos que nos está enviando el parámetro de artículo con su valor respectivo así que vamos a procesar
este parámetro
procesamos el nuevo artículo definimos una variable artículo nuevo posteriormente con ayuda del objeto
recuesto mandamos a llamar el método GET parametro y el nombre del parámetro es exactamente este mismo
el que tengamos en el atributo de Henaine así que solicitamos este parámetro y con esto ya tenemos el
nuevo valor del artículo que se está enviando del formulario ahora creamos o recuperamos el objeto https:
ya que si es la primera vez que estamos solicitando este objeto se va a crear de manera automática lo
va a crear el contenedor.
El servidor de aplicaciones y por otro lado si ya existe entonces se va a recuperar.
Pero todo esto lo va a hacer en automático nosotros simplemente tenemos escribir el siguiente código
declaramos una variable de tipo HTTPS con la variable se va a llamar sesión y con ayuda del objeto recuesto
mandamos a llamar.
El método GET section y esto va a ser todo el trabajo por nosotros bien ahora lo que vamos a hacer es
que vamos a recuperar la lista de artículos previos si es que ya existen
así que recuperamos la lista de artículos agregados previamente si es que existen para esto vamos a
definir una lista de objetos de tipo string se va a llamar artículos y a la sesión le vamos a solicitar
esta lista por medio del método GET atributo le vamos a solicitar la lista de artículos que hayamos
agregado a la sesión si es que ya hemos agregado.
De lo contrario este objeto va a ser nulo importamos la clase de List de Java y útil.
Debemos tener cuidado que sea del paquete Java punto y útil y posteriormente tenemos que hacer un cast
debido a que este método de atributo no regresa un hobbie.
Por lo tanto tenemos que convertirlo a una lista de tipo string a una lista genérica bien con eso ya
estamos recuperando nuestra lista de artículos si es que existe y si aún no existe ese atributo en la
sesión entonces el valor de esta variable va a ser nulo.
Así que vamos a revisar lo siguiente verificamos si la lista de artículos existe así que preguntamos
y artículos es igual a Nul esto quiere decir que todavía no se ha agregado la lista de artículos al
carrito de compras y lo que tenemos que hacer entonces es inicializar esta lista de artículos así que
utilizamos nuestra variedad de artículos
inicializar los
nuestra lista utilizando la clase y listo importamos esta clase de IAVA punto y útil y con esto estamos
inicializar no
la lista.
De artículos y posteriormente lo que vamos a hacer es agregar esta lista a la sesión así que por medio
del objeto Saison mandamos a llamar el método Zet atributo el atributo se va a llamar según lo hemos
buscado artículos.
Así es como lo vamos a agregar y también así lo vamos a buscar así que agregamos en este caso el atributo
de artículos y se está agregando una lista vacía a la sesión.
Pero como estamos manejando referencias de objetos cualquiera de estos cambios lo va a haber en automático
la sesión así que va a ser muy simple.
Una vez que hemos agregado esta lista a la sesión.
Entonces cualquier cambio lo va a haber reflejado de manera automática.
Bien así que con esto ya estamos agregando a la lista de artículos al objeto de tipo HTTPS.
Ahora vamos a revisar el artículo nuevo
vamos a revisar si la variable de artículo nuevo que es el parámetro que hemos obtenido si recordamos
este fue el parámetro que solicitamos el cual se ha enviado del formulario la variable artículo nuevo.
Así que revisamos si este valor es diferente de Nul y además no contiene el valor vacío hacemos un trueque
para quitar espacios en blanco a la izquierda y a la derecha y lo comparamos con la cadena vacía así
que si es diferente de nulo y además no es cadena vacía entonces vamos a agregar este artículo a la
lista de artículos artículos punto at y agregamos el nuevo artículo Cómo hemos comentado esto en automático
va a modificar también la lista que hemos agregado a la sesión ya que estamos manejando referencias
de objetos y por lo tanto cualquier cambio que hagamos sobre la lista.
Por ejemplo en este caso agregar un nuevo artículo entonces también lo va a haber reflejado el atributo
Stetson llamado artículos bien de hecho podríamos mover esta línea en la cual estamos procesando el
parámetro
para ponerla antes de revisar este nuevo artículo y así tengamos todo el código mejor organizado tenemos
el objeto sesión revisamos y tenemos artículos de lo contrario inicializar la lista de artículos y agregamos
este artículo a la sesión.
Posteriormente recuperamos el nuevo artículo y lo agregamos a la lista de artículos.
Esto en automático por manejar referencias de objetos también va a modificar la lista de artículos que
hemos agregado a la sesión.
Ya no tenemos que volver a agregar la lista de artículos a la sesión nuevamente.
Y por último lo que vamos a hacer es mandar a imprimir la lista de artículos
así escribimos lo siguiente creamos nuestro objeto print Reiter
mandamos a llamar el método de Twitter
importamos esta clase reportamos la posible excepción y mandamos a llamar el método print e imprimimos
lo siguiente primero un título
lista de artículos
posteriormente un salto
un B.R. y ahora lo que vamos a hacer es iterar todos los artículos y ya se debe de haber incluido el
nuevo así que queramos todos los artículos que utilizamos.
For each definimos la variable que va a almacenar cada uno de estos elementos y proporcionamos la lista
e imprimimos
cada uno de los elementos de esta lista
utilizando la etiqueta de List Haytham de HTML
bien con eso ya estamos imprimiendo el artículo dentro del elemento del de Haytham y por último vamos
a agregar un link para regresar al inicio.
Así escribimos lo siguiente a otro punto print agregamos un salto
y posteriormente definimos un HR-V
un link para regresar al inicio.
Sin embargo debido a que ya es una cadena doble comilla ahora para definir el valor de Link vamos a
utilizar comilla simple utilizamos el context Path ejemplo carrito de compras y esto en automático nos
va a regresar al Index de nuestra aplicación cerramos este Chérrez
y agregamos el texto regresar al inicio y cerramos esta etiqueta el link que estamos utilizando para
regresar al inicio.
Y cerramos nuestro flujo debido a que esta variable Reiter está abriendo un flujo y estamos cerrando
al final este flujo élide también nos recomienda utilizar el concepto de try with resources.
Esto quiere decir que va a abrir primero el recurso pero en automático al terminar de utilizar este
recurso lo va a cerrar vamos a utilizar esta opción vamos a dar clic en Ver distribuir Resources y podemos
observar que abre el bloque try vamos a dar un formato y dentro de ese bloque trim lo que está haciendo
es abrir el objeto primero either y esto quiere decir que en automático al terminar este bloque de código
entonces va a mandar a llamar.
El método Claws por ello es que nos quitó incluso la línea de Kloss así que aquí podemos utilizar este
concepto.
De hecho hoy web Resources para que en automático cierre el flujo bien aunque esto es opcional podemos
seguir manejando la misma sintaxis anterior o utilizar esta sintaxis que nos recomienda el líder.
En ambos casos es exactamente lo mismo.
Bien con eso ya tenemos todo nuestro código.
Vamos a hacer clic cambio
y vamos a ejecutar nuestra aplicación.
Click derecho root y podemos ver que ya nos muestra la pantalla.
Ejemplo carrito compras.
Artículo agregar nos muestra el formulario y el botón de Enviar.
Vamos a agregar un nuevo artículo por ejemplo el artículo de camisa y la música en enviar y podemos
llevar la lista de artículos.
En este caso debido a que es la primera vez se ha agregado apenas la lista de artículos a nuestra sesión
y este nuevo artículo se está agregando a la sesión.
Por lo tanto se va a mantener este objeto en la lista de artículos.
Si regresamos al inicio podemos agregar otro artículo por ejemplo pantalon damos siguen enviar y podemos
observar que se mantiene la información de camisa.
Ya no tenemos que volver a repetirla y ahora se ha agregado el nuevo elemento de pantalón y así cualquier
producto que agreguemos por ejemplo calcetines
damos siguen enviar y ahora ya tenemos tres elementos.
Así que el objeto de sesión está manteniendo estos tres elementos si abrimos un nuevo navegador abrimos
un nuevo tabulador en este caso debido a que estamos haciendo una petición GET.
Esto no es posible tenemos que ir a la página de Index y agregar un nuevo elemento pero por ejemplo
si no proporcionamos ningún valor recordemos que hemos agregado una validación para que en este caso
no lo agregue al carrito.
Si damos clic en Enviar podemos observar que tenemos la validación no se agregó un nuevo elemento al
carrito pero si tenemos los tres elementos que ya habíamos agregado y si abrimos un nuevo navegador
pero el modo incógnito pegamos la R.L vamos a la página de inicio y si damos clic en Enviar sin agregar
ningún nuevo elemento podemos observar que la lista está vacía ya que en este momento está abriendo
una nueva sesión.
Por lo tanto la sesión está vacía y tenemos que empezar a agregar nuevos elementos.
Por ejemplo el elemento de gorra si damos si quiera enviar entonces ese primer elemento que se está
agregando a nuestra lista y así podemos empezar a agregar más elementos a nuestra lista al carrito de
compras y ahora si se está respetando los elementos que ya hemos agregado los mantiene y agrega el nuevo
elemento.
Ahora como hemos comentado estos elementos únicamente van a estar disponibles por 30 minutos a menos
que estemos interactuando con nuestra aplicación constantemente.
Pero si pasan 30 minutos de inactividad entonces esta información se va a eliminar del servidor de aplicaciones
y por lo tanto el cliente ya no va a poder acceder a esta información así que la sesión por default
tiene un tiempo de expiración de 30 minutos.
Esto lo podemos modificar pero si no lo hacemos entonces el tiempo de expiración es de 30 minutos así
que como conclusión de este ejercicio hemos simulado un carrito de compras por internet en el cual hemos
agregado varios objetos a una sesión y estos objetos se asocian con un usuario el cual está agregando
elementos al objeto de tipo sesión.
Más adelante iremos mejorando ese tipo de ejemplos cuando trabajemos también y combinemos el tema de
ya va a ser pellas de JSP.
Sin embargo de momento estamos conociendo la pídelo servlets y por ello es que no nos estamos enfocando
en el código HTML sino que nos estamos enfocando en saber cómo procesar la información del lado del
servidor utilizando el API de los servlets.
Así que con eso espero que quede más claro el uso de manejo de sesiones utilizando el concepto de HTTPS.
Eso solo por esta elección y nos vemos en los siguientes vídeos.
Saludos.