Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6

Página creada Sergio Fontana
 
SEGUIR LEYENDO
Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6
 

       Ejemplo	
  de	
  Programación	
  con	
  Java	
  EE	
  
                                                    	
  
                                       Una	
  Tienda	
  Online	
  
                                                    	
  
                                                                Juan	
  Díez-­‐Yanguas	
  Barber	
  

                                                              Programación	
  con	
  Java	
  EE	
  6	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
  
	
  
Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

                                                                         Índice	
  

1.-­‐	
  PREÁMBULO	
                                                                                       3	
  

2.-­‐	
  INTRODUCCIÓN	
                                                                                    4	
  

3.-­‐	
  DISEÑO	
  DEL	
  SISTEMA	
                                                                      10	
  
3.1.-­‐	
  HERRAMIENTAS	
  UTILIZADAS	
                                                                  10	
  
3.2.-­‐	
  PATRÓN	
  DE	
  DISEÑO	
  MVC	
                                                               11	
  
3.3.-­‐	
  DISEÑO	
  DE	
  LA	
  PERSISTENCIA.	
  PATRÓN	
  DAO	
                                        12	
  
3.4.-­‐	
  DISEÑO	
  DE	
  FILTROS	
                                                                     14	
  
3.5.-­‐	
  ACCESO	
  A	
  LOS	
  MECANISMOS	
  DE	
  PERSISTENCIA	
                                      14	
  
2.6.-­‐	
  SEGURIDAD	
  DE	
  LA	
  APLICACIÓN	
                                                         14	
  

4.-­‐	
  MODELOS	
  DE	
  DATOS	
  USADOS	
                                                              16	
  

4.1.-­‐	
  MODELO	
  DE	
  DATOS	
  DE	
  PRODUCTO	
                                                     16	
  
4.2.-­‐	
  MODELO	
  DE	
  DATOS	
  PARA	
  EL	
  USUARIO	
                                              17	
  
4.3.-­‐	
  MODELO	
  DE	
  DATOS	
  PARA	
  EL	
  LA	
  CESTA	
  DE	
  LA	
  COMPRA	
                    18	
  
4.4.-­‐	
  MODELO	
  DE	
  DATOS	
  PARA	
  LOS	
  COMENTARIOS	
                                         19	
  

5.-­‐	
  CONFIGURACIÓN	
  DE	
  LA	
  APLICACIÓN	
                                                       20	
  
5.1.-­‐	
  CONFIGURACIÓN	
  DE	
  PERSISTENCIA	
  EN	
  MODO	
  FICHERO	
                                20	
  
5.2.-­‐	
  CONFIGURACIÓN	
  DE	
  PERSISTENCIA	
  EN	
  MODO	
  DE	
  BASES	
  DE	
  DATOS	
             22	
  
5.3.-­‐	
  CONFIGURACIONES	
  MISCELÁNEAS	
  SOBRE	
  LA	
  APLICACIÓN	
                                 25	
  
5.4.-­‐	
  CONFIGURACIÓN	
  DEL	
  SERVIDOR	
  SMTP	
  PARA	
  EL	
  ENVÍO	
  DE	
  EMAILS	
             26	
  
5.5.-­‐	
  CONFIGURACIÓN	
  DE	
  LAS	
  PLANTILLAS	
  PARA	
  EL	
  ENVÍO	
  DE	
  EMAILS	
             28	
  
5.6.-­‐	
  LIBRERÍAS	
  NECESARIAS	
                                                                     29	
  

6.-­‐	
  FUNCIONAMIENTO	
  EN	
  DETALLE	
  DEL	
  SISTEMA	
                                             31	
  
6.1.-­‐	
  ESTRUCTURA	
  DE	
  LA	
  APLICACIÓN	
                                                        31	
  
6.2.-­‐	
  DIAGRAMAS	
  DE	
  NAVEGACIÓN	
  DE	
  FILTROS	
                                              36	
  
6.3.-­‐	
  DIAGRAMAS	
  DE	
  NAVEGACIÓN	
  DE	
  LISTENERS	
                                            38	
  
6.4.-­‐	
  FLUJO	
  DE	
  NAVEGACIÓN	
  DE	
  LAS	
  OPERACIONES	
  PÚBLICAS	
                           39	
  
6.5.-­‐	
  FLUJO	
  DE	
  NAVEGACIÓN	
  PARA	
  OPERACIONES	
  DE	
  USUARIO	
  REGISTRADO	
             46	
  
6.6.-­‐	
  FLUJO	
  DE	
  NAVEGACIÓN	
  DE	
  LAS	
  OPERACIONES	
  DEL	
  ADMINISTRADOR	
               49	
  
6.7.-­‐	
  SOBRE	
  EL	
  JAVASCRIPT	
  QUE	
  SE	
  HA	
  USADO	
                                       55	
  

7.-­‐	
  SISTEMA	
  DE	
  CONTROL	
  DE	
  VERSIONES	
                                                   58	
  

8.-­‐	
  ASPECTOS	
  A	
  MEJORAR	
                                                                      61	
  

	
                                                    	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                               2	
  
	
  
Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

             1.-­‐	
  Preámbulo	
  

       He	
   sido	
   siempre	
   un	
   apasionado	
   de	
   la	
   informática,	
   y	
   desde	
   que	
   comencé	
   mis	
  
estudios	
   de	
   Ingeniería	
   Informática	
   esta	
   afición	
   por	
   la	
   materia	
   ha	
   ido	
   creciendo	
  
progresivamente.	
  

      Actualmente	
   he	
   finalizado	
   mis	
   estudios	
   de	
   Ingeniería	
   Técnica	
   en	
   Informática	
   de	
  
Sistemas,	
  los	
  que	
  continuaré	
  el	
  próximo	
  año	
  para	
  proseguir	
  con	
  la	
  Ingeniería	
  Superior.	
  

       El	
   proyecto	
   que	
   aquí	
   les	
   presento	
   viene	
   a	
   ser	
   una	
   asignatura	
   completa,	
  
asignatura	
   dedicada	
   a	
   la	
   programación	
   de	
   aplicaciones	
   web,	
   y	
   esta	
   en	
   concreto	
   fue	
  
impartida	
  en	
  Java.	
  

          Cogí	
   desde	
   el	
   principio	
   con	
   mucho	
   ánimo	
   esta	
   asignatura	
   y	
   poco	
   a	
   poco	
   me	
   fue	
  
gustando	
   más.	
   Le	
   fui	
   dedicando	
   muchas	
   horas	
   a	
   este	
   proyecto	
   hasta	
   llegar	
   a	
   conseguir	
  
un	
  ejemplo	
  lo	
  más	
  realista	
  posible	
  de	
  lo	
  que	
  pudiera	
  ser	
  una	
  tienda	
  online.	
  

           He	
  disfrutado	
  muchísimo	
  realizando	
  este	
  proyecto	
  no	
  solo	
  porque	
  se	
  trataba	
  de	
  
algo	
   nuevo	
   sino	
   porque	
   he	
   adquirido	
   muchos	
   e	
   interesantes	
   conocimientos	
   sobre	
   el	
  
lenguaje,	
  si	
  bien	
  es	
  cierto	
  que	
  me	
  queda	
  mucho	
  por	
  aprender	
  de	
  este	
  lenguaje	
  he	
  de	
  
reconocer	
   que	
   esto	
   me	
   ha	
   ayudado	
   a	
   dar	
   un	
   paso	
   importante	
   en	
   este	
   continuo	
  
aprendizaje.	
  

           Una	
  vez	
  completado	
  el	
  curso	
  pensé	
  que	
  ya	
  que	
  había	
  dedicado	
  mucho	
  tiempo	
  a	
  
este	
   proyecto	
   podría	
   también	
   llegar	
   a	
   más	
   personas	
   y	
   ser	
   de	
   ayuda,	
   por	
   lo	
   que	
   he	
  
seguido	
  trabajando	
  en	
  el	
  mismo	
  para	
  publicarlo	
  con	
  una	
  documentación	
  completa.	
  

         No	
   puedo	
   terminar	
   este	
   texto	
   sin	
   agradecer	
   a	
   Abraham	
   Otero	
   Quintana	
   el	
  
interés	
   que	
   ha	
   despertado	
   en	
   mí	
   con	
   este	
   proyecto	
   y	
   los	
   ánimos	
   que	
   me	
   ha	
   dado	
   para	
  
continuar	
   con	
   ello	
   hasta	
   obtener	
   un	
   proyecto	
   perfeccionado	
   para	
   su	
   publicación.	
  
También	
  le	
  tengo	
  que	
  agradecer	
  la	
  ayuda	
  que	
  me	
  ha	
  prestado	
  de	
  manera	
  totalmente	
  
desinteresada	
  para	
  la	
  publicación	
  del	
  mismo.	
  

       Sin	
   más	
   me	
   despido	
   y	
   espero	
   que	
   os	
   sea	
   de	
   ayuda	
   este	
   documento	
   así	
   como	
   el	
  
proyecto	
  en	
  si.	
  

          Pueden	
   ponerse	
   en	
   contacto	
   conmigo	
   en	
   esta	
   dirección	
   de	
   correo	
   electrónico	
  
sin	
  problema	
  alguno:	
  jdyb04jdyb@gmail.com	
  

	
                                                	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                                       3	
  
	
  
Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

             2.-­‐	
  Introducción	
  

         En	
  este	
  proyecto	
  se	
  ha	
  tratado	
  de	
  llevar	
  a	
  cabo	
  el	
  diseño	
  de	
  una	
  aplicación	
  web	
  
que	
  cumpla	
  con	
  las	
  funcionabilidades	
  de	
  una	
  tienda	
  online	
  completa.	
  

      La	
  aplicación	
  debe	
  tener	
  una	
  interfaz	
  de	
  administración	
  la	
  cual	
  nos	
  permita	
  una	
  
administración	
   completa	
   de	
   los	
   productos	
   (añadir,	
   modificar,	
   borrar	
   y	
   consultar),	
  
también	
  es	
  posible	
  la	
  búsqueda	
  de	
  productos.	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                           4	
  
	
  
Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

       Para	
   acceder	
   a	
   la	
   zona	
   de	
   administración	
   es	
   necesario	
   estar	
   autentificado,	
   la	
  
autentificación	
  se	
  realiza	
  mediante	
  un	
  correo	
  electrónico	
  y	
  una	
  contraseña.	
  

          También	
   es	
   posible	
   que	
   los	
   usuarios	
   se	
   registren	
   en	
   la	
   aplicación	
   con	
   la	
   ventaja	
  
de	
   que	
   no	
   tendrán	
   que	
   introducir	
   los	
   datos	
   completos	
   para	
   realizar	
   la	
   compra.	
  
También	
  podrán	
  consultar	
  su	
  historial	
  de	
  compras	
  y	
  por	
  supuesto	
  modificar	
  sus	
  datos.	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                                    5	
  
	
  
Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

           La	
  parte	
  principal	
  de	
  la	
  aplicación	
  es	
  el	
  listado	
  de	
  productos	
  donde	
  el	
  usuarios	
  
puede	
   añadirlos	
   a	
   la	
   cesta	
   de	
   la	
   compra.	
   El	
   usuario	
   podrá	
   consultar	
   el	
   estado	
   de	
   su	
  
carrito	
  en	
  todo	
  momento	
  y	
  podrá	
  editar	
  la	
  cantidad	
  de	
  cada	
  producto	
  según	
  desee.	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                                     6	
  
	
  
Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

       Cuando	
  el	
  usuario	
  quiera	
  dar	
  por	
  terminada	
  su	
  compra	
  tendrá	
  que	
  rellenar	
  el	
  
formulario	
   con	
   los	
   datos	
   de	
   la	
   compra	
   en	
   el	
   caso	
   de	
   no	
   estar	
   registrado.	
   En	
   caso	
  
contrario	
  lo	
  único	
  que	
  tendrá	
  que	
  hacer	
  es	
  seleccionar	
  la	
  forma	
  de	
  pago.	
  

              Posteriormente	
   un	
   correo	
   electrónico	
   será	
   enviado	
   al	
   usuario	
   con	
   los	
   detalles	
  
de	
  la	
  compra.	
  

          La	
  aplicación	
  tiene	
  otras	
  funcionabilidades	
  extra	
  a	
  parte	
  de	
  las	
  básicas	
  de	
  una	
  
tienda	
  online.	
  

             Es	
  posible	
  añadir	
  comentarios	
  a	
  los	
  productos	
  siendo	
  un	
  usuario	
  registrado.	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                                  7	
  
	
  
Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

	
        Es	
  posible	
  también	
  asignar	
  imágenes	
  a	
  los	
  productos,	
  el	
  sistema	
  está	
  capacitado	
  
para	
  enviar	
  emails	
  a	
  los	
  usuarios	
  cuando	
  se	
  registran,	
  cuando	
  realizan	
  una	
  compra,	
  y	
  
también	
   tienen	
   la	
   opción	
   de	
   recuperar	
   la	
   contraseña	
   en	
   caso	
   de	
   pérdida;	
   el	
   sistema	
  
genera	
  una	
  nueva	
  contraseña	
  y	
  es	
  enviada	
  por	
  correo	
  electrónico	
  al	
  usuario.	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                            8	
  
	
  
Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

	
     Cuenta	
   con	
   la	
   opción	
   de	
   usar	
   persistencia	
   contra	
   bases	
   de	
   datos	
   así	
   como	
  
persistencia	
  contra	
  ficheros	
  en	
  formato	
  binario	
  de	
  objetos	
  serializados.	
  

	
        Como	
   ayuda	
   a	
   los	
   administradores	
   cuenta	
   con	
   un	
   registro	
   de	
   peticiones	
  
realizadas	
   al	
   servidor	
   que	
   son	
   guardados	
   en	
   una	
   base	
   de	
   datos	
   o	
   en	
   fichero	
   (según	
   sea	
  
el	
  método	
  de	
  persistencia);	
  este	
  registro	
  ayudará	
  a	
  realizar	
  un	
  seguimiento	
  detallado	
  
para	
  los	
  administradores.	
  

	
     Es	
   posible	
   la	
   visualización	
   de	
   estadísticas	
   de	
   ventas,	
   esta	
   opción	
   estará	
  
disponible	
  para	
  aquellos	
  usuarios	
  que	
  sean	
  administradores	
  de	
  la	
  tienda.	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                                         9	
  
	
  
Ejemplo de Programación con Java EE Una Tienda Online - Juan Díez-Yanguas Barber Programación con Java EE 6
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

             3.-­‐	
  Diseño	
  del	
  sistema	
  

             3.1.-­‐	
  Herramientas	
  utilizadas	
  

          Como	
  lenguaje	
  de	
  programación	
  para	
  la	
  aplicación	
  en	
  el	
  servidor	
  se	
  ha	
  usado	
  
Java	
  EE	
  6,	
  el	
  servidor	
  de	
  aplicaciones	
  usado	
  es	
  GlassFish	
  Server	
  3.1	
  

             Como	
  entorno	
  de	
  desarrollo	
  se	
  ha	
  usado	
  NetBeans	
  7.0.	
  

      Para	
   la	
   presentación	
   de	
   cara	
   al	
   usuario	
   se	
   han	
   empleado	
   páginas	
   JSP	
   para	
   la	
  
generación	
   del	
   código	
   HTML	
   que	
   finalmente	
   será	
   mostrado	
   al	
   usuario	
   mediante	
   el	
  
navegador	
  web	
  que	
  será	
  el	
  que	
  renderice	
  dicho	
  código.	
  

          Gracias	
   a	
   este	
   diseño	
   se	
   podría	
   decir	
   que	
   el	
   trabajo	
   que	
   hemos	
   tenido	
   que	
  
dedicar	
  a	
  la	
  aplicación	
  del	
  cliente	
  es	
  insignificante	
  debido	
  a	
  que	
  no	
  hemos	
  tenido	
  que	
  
encargarnos	
  nosotros	
  del	
  desarrollo	
  del	
  navegador,	
  únicamente	
  de	
  generar	
  el	
  código	
  
que	
  este	
  renderizará.	
  

      Esta	
   es	
   la	
   principal	
   ventaja	
   de	
   usar	
   este	
   modelo	
   de	
   diseño	
   unido	
   a	
   que	
   se	
   están	
  
usando	
  tecnologías	
  estandarizadas.	
  

	
                                                	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                                      10	
  
	
  
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

             3.2.-­‐	
  Patrón	
  de	
  diseño	
  MVC	
  

          Para	
  el	
  desarrollo	
  del	
  sistema	
  se	
  ha	
  usado	
  un	
  patrón	
  de	
  diseño	
  en	
  el	
  cual	
  hay	
  
claramente	
   diferenciadas	
   tres	
   partes.	
   Por	
   una	
   parte	
   nos	
   podemos	
   encontrar	
   con	
   los	
  
modelos	
   de	
   datos	
   que	
   en	
   nuestro	
   caso	
   serían	
   los	
   objetos	
   java	
   que	
   necesitamos	
   para	
  
representar	
   la	
   información	
   de	
   nuestra	
   aplicación,	
   la	
   cual	
   estaría	
   almacenada	
   en	
   una	
  
base	
  de	
  datos,	
  en	
  ficheros	
  o	
  en	
  cualquier	
  otro	
  modo	
  de	
  persistencia.	
  

         Por	
  otra	
  parte	
  tenemos	
  las	
  vistas	
  que	
  serían	
  las	
  páginas	
  que	
  se	
  encargan	
  de	
  la	
  
presentación	
   al	
   usuario.	
   Estas	
   páginas	
   estarían	
   formadas	
   por	
   las	
   páginas	
   estáticas	
  
HTML	
  y	
  las	
  páginas	
  dinámicas	
  JSP.	
  

          Por	
   último	
   tendríamos	
   la	
   parte	
   del	
   controlador	
   que	
   sería	
   la	
   encargada	
   de	
  
realizar	
   las	
   acciones	
   necesarias	
   para	
   nuestro	
   modelo	
   de	
   negocio.	
   Esta	
   parte	
   realizará	
  
unas	
   acciones	
   y	
   de	
   manera	
   general	
   posteriormente	
   decidirá	
   la	
   vista	
   que	
   se	
   desea	
  
presentar	
   al	
   usuario,	
   como	
   ya	
   se	
   ha	
   dicho	
   esta	
   parte	
   se	
   encarga	
   de	
   las	
   operaciones	
  
necesarias	
   por	
   el	
   modelo	
   de	
   negocio	
   y	
   por	
   lo	
   tanto	
   será	
   esta	
   parte	
   la	
   que	
   reciba	
   las	
  
acciones	
  por	
  parte	
  del	
  usuario.	
  

                                                                                                                    Base de datos

                                                                                                                          VB

                                                                              Actualizar                             Objetos Java
                                                                               modelo
                          Acciones del
                            usuario

                                              Controlador

        Usuario
                                                                                                                             Consultas al
                                                 if(conn
                                                   SELEC                                                                       modelo
                                                   WHERE
                                                   print
                                       Java
                                              Servlet Java               Seleccionar
                                                  EE                        vista

                                                                                                        Modelos de vista

                                                                                                       HTML                   JSP
                                                                                                                                                    	
  
	
                                                 	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                                         11	
  
	
  
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

             3.3.-­‐	
  Diseño	
  de	
  la	
  persistencia.	
  Patrón	
  DAO	
  

      A	
   continuación	
   usaremos	
   el	
   patrón	
   de	
   diseño	
   que	
   se	
   ha	
   usado	
   para	
   el	
  
mecanismo	
  de	
  persistencia	
  de	
  la	
  aplicación.	
  

             Este	
   patrón	
   trata	
   de	
   independizar	
   el	
   tipo	
   de	
   persistencia	
   del	
   resto	
   de	
   la	
  
aplicación,	
  de	
  esta	
  manera	
  la	
  aplicación	
  no	
  tiene	
  dependencia	
  del	
  tipo	
  de	
  persistencia	
  
que	
  se	
  este	
  llevando	
  a	
  cabo.	
  

          Por	
   poner	
   un	
   ejemplo,	
   podemos	
   estar	
   desarrollando	
   la	
   aplicación	
   con	
  
persistencia	
   contra	
   ficheros	
   y	
   posteriormente	
   decidir	
   que	
   lo	
   queremos	
   hacer	
   contra	
  
base	
  de	
  datos	
  y	
  no	
  habría	
  que	
  cambiar	
  nada	
  de	
  la	
  lógica	
  de	
  negocio	
  de	
  la	
  aplicación,	
  
únicamente	
   habría	
   que	
   implementar	
   los	
   métodos	
   necesarios	
   para	
   persistir	
   contra	
   la	
  
base	
  de	
  datos.	
  

             Explicamos	
  a	
  continuación	
  en	
  que	
  consiste	
  este	
  patrón	
  de	
  diseño.	
  

              En	
   primer	
   lugar	
   tendríamos	
   una	
   interfaz	
   que	
   indicaría	
   los	
   métodos	
   que	
   son	
  
necesarios	
   en	
   la	
   persistencia	
   (los	
   métodos	
   a	
   los	
   que	
   se	
   llamarán	
   después	
   para	
   acceder	
  
a	
  la	
  persistencia).	
  	
  

           Por	
  cada	
  método	
  de	
  persistencia	
  tendríamos	
  una	
  clase	
  que	
  implementa	
  todos	
  y	
  
cada	
   uno	
   de	
   los	
   métodos	
   de	
   la	
   interfaz.	
   Para	
   asegurarnos	
   de	
   que	
   no	
   se	
   crea	
   más	
   de	
  
una	
  de	
  estas	
  clases	
  durante	
  el	
  desarrollo	
  de	
  la	
  aplicación	
  deberíamos	
  hacer	
  que	
  estas	
  
clases	
  sigan	
  un	
  patrón	
  de	
  diseño	
  singleton	
  (explicado	
  posteriormente).	
  

           Por	
   último	
   tendríamos	
   una	
   factoría	
   que	
   dependiendo	
   de	
   los	
   argumentos,	
   en	
  
nuestro	
  caso	
  parámetros	
  del	
  descriptor	
  de	
  despliegue,	
  nos	
  devolvería	
  una	
  instancia	
  de	
  
la	
  clase	
  encargada	
  de	
  la	
  persistencia	
  (dependiendo	
  de	
  los	
  argumentos	
  para	
  el	
  tipo	
  de	
  
persistencia).	
  

        Para	
   acceder	
   a	
   la	
   persistencia	
   no	
   tendríamos	
   mas	
   que	
   acceder	
   mediante	
   la	
  
interfaz	
   a	
   los	
   métodos	
   y	
   de	
   esta	
   manera	
   el	
   modelo	
   de	
   negocio	
   de	
   la	
   aplicación	
   es	
  
totalmente	
  independiente	
  del	
  tipo	
  de	
  persistencia.	
  

           El	
  patrón	
  de	
  diseño	
  singleton	
  consiste	
  en	
  crear	
  un	
  constructor	
  para	
  la	
  clase	
  que	
  
solo	
   permita	
   que	
   haya	
   una	
   única	
   instancia	
   de	
   la	
   clase	
   en	
   la	
   aplicación.	
   Esto	
   se	
   haría	
  
haciendo	
   un	
   constructor	
   que	
   compruebe	
   si	
   hay	
   o	
   no	
   una	
   instancia	
   de	
   la	
   clase	
   en	
   la	
  
aplicación,	
   si	
   la	
   hay	
   devolvería	
   es	
   misma	
   instancia,	
   en	
   caso	
   contrario	
   se	
   crearía	
   una	
  
nueva	
  instancia.	
  

      La	
   forma	
   de	
   controlar	
   las	
   instancias	
   existentes	
   es	
   hacer	
   que	
   la	
   propia	
   clase	
  
contenga	
  en	
  sus	
  atributos	
  una	
  instancia	
  de	
  ella	
  misma.	
  

      Mostramos	
   a	
   continuación	
   un	
   diagrama	
   de	
   clases	
   en	
   el	
   que	
   se	
   muestran	
   las	
  
dependencias	
  de	
  cada	
  una	
  de	
  estas	
  clases.	
  
©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                                      12	
  
	
  
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

                                                        Modelo de persistencia. Patrón DAO

                                              StartListener                                                             persistencia.PersistenceFactory

                                private persistence: PersistenceInterface                                                public static PersistenceInterface
                                                                                                                             getInstance (String type)
                          public void contextInitialized(ServletContextEvent sce)

                          public void contextDestroyed(ServletContextEvent sce)

                           private boolean startValidate(ServletContext context)

        beans.Producto                                     persistencia.PersistenceInterface

                                                      public boolean init (String locationUser, String    persistencia.PersistenceFile                        persistencia.PersistenceBD
        beans.Usuario                                               locationProduct);
                                                                                                           persistence: PersistenceFile                         instance: PersistenceBD
                                                                       public boolean exit ()
       beans.Comentario                                                                                        fileNameUser: String
                                                                                                                                                                   pool: DataSource
                                                         public boolean addUser (Usuario user)               fileNameProduct: String
         beans.Carrito                                                                                   productos: Map                           nameBD: String
                                                       public boolean addProduct (Producto prod)
                                                                                                          usuarios: Map
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

             3.4.-­‐	
  Diseño	
  de	
  filtros	
  

       En	
   este	
   apartado	
   veremos	
   algunos	
   aspectos	
   del	
   diseño	
   de	
   la	
   aplicación	
   que	
  
considero	
  de	
  interés	
  aparte	
  de	
  los	
  ya	
  explicados	
  en	
  los	
  apartados	
  anteriores.	
  

               Hay	
  un	
  filtro	
  que	
  recoge	
  todas	
  las	
  peticiones	
  y	
  se	
  encarga	
  de	
  registrar	
  cada	
  una	
  
de	
   las	
   peticiones,	
   en	
   este	
   filtro	
   de	
   setean	
   tanto	
   la	
   respuesta	
   como	
   la	
   petición	
   con	
   la	
  
codificación	
  que	
  usa	
  toda	
  la	
  aplicación;	
  de	
  esta	
  manera	
  nos	
  aseguramos	
  de	
  que	
  toda	
  la	
  
aplicación	
   este	
   funcionando	
   en	
   la	
   misma	
   codificación	
   para	
   evitar	
   problemas.	
   Ahora	
  
bien,	
   esto	
   no	
   nos	
   asegura	
   de	
   que	
   el	
   resto	
   de	
   cosas	
   externas	
   sigan	
   en	
   la	
   misma	
  
codificación	
   (UTF-­‐8),	
   como	
   pueden	
   ser	
   las	
   bases	
   de	
   datos	
   u	
   otros	
   recursos	
   externos	
  
que	
  se	
  usen	
  en	
  la	
  aplicación.	
  

         La	
   autentificación	
   de	
   la	
   aplicación	
   está	
   basada	
   en	
   el	
   uso	
   de	
   filtros.	
   Hay	
   un	
   filtro	
  
que	
   nos	
   permite	
   acceder	
   a	
   la	
   zona	
   de	
   usuarios	
   registrados	
   de	
   la	
   aplicación	
  
(dependiendo	
   de	
   los	
   atributos	
   de	
   la	
   sesión)	
   y	
   un	
   filtro	
   posterior	
   que	
   verifica	
   que	
  
podamos	
   acceder	
   a	
   la	
   zona	
   de	
   administración,	
   zona	
   a	
   la	
   que	
   solo	
   deben	
   acceder	
   los	
  
usuarios	
  con	
  suficientes	
  permisos.	
  

             3.5.-­‐	
  Acceso	
  a	
  los	
  mecanismos	
  de	
  persistencia	
  

          Respecto	
  al	
  modelo	
  de	
  persistencia	
  que	
  se	
  ha	
  comentado	
  se	
  podría	
  añadir	
  que	
  
para	
  acceder	
  a	
  las	
  funciones	
  de	
  la	
  persistencia	
  lo	
  que	
  se	
  realiza	
  es	
  obtener	
  siempre	
  la	
  
interfaz	
   que	
   se	
   guardó	
   en	
   el	
   contexto	
   de	
   la	
   aplicación	
   al	
   inicio	
   de	
   la	
   misma	
   con	
   un	
  
listener	
  de	
  inicio	
  de	
  contexto.	
  

             2.6.-­‐	
  Seguridad	
  de	
  la	
  aplicación	
  

          La	
   aplicación	
   ha	
   sido	
   diseñada	
   prestando	
   mucha	
   atención	
   a	
   los	
   aspectos	
   de	
  
seguridad	
  de	
  la	
  misma,	
  no	
  se	
  ha	
  tenido	
  absolutamente	
  ninguna	
  idea	
  preconcebida	
  a	
  la	
  
hora	
   del	
   diseño	
   de	
   la	
   misma,	
   se	
   ha	
   partido	
   del	
   pensamiento	
   de	
   que	
   todo	
   ha	
   de	
   ser	
  
validado.	
  

           En	
  primer	
  lugar	
  se	
  ha	
  optado	
  por	
  la	
  opción	
  de	
  eliminar	
  las	
  contraseñas	
  de	
  las	
  
bases	
  de	
  datos,	
  la	
  aplicación	
  no	
  contiene	
  ninguna	
  contraseña,	
  en	
  ningún	
  momento	
  son	
  
guardadas.	
   Lo	
   que	
   se	
   almacena	
   es	
   una	
   huella	
   de	
   la	
   contraseña	
   mas	
   una	
   pequeña	
  
cadena	
  fija	
  para	
  que	
  sea	
  resistente	
  también	
  a	
  los	
  ataques	
  por	
  diccionario	
  a	
  la	
  base	
  de	
  
datos	
  en	
  busca	
  de	
  huellas	
  conocidas.	
  Cuando	
  el	
  usuario	
  introduce	
  una	
  contraseña	
  se	
  
seguiría	
  se	
  obtendría	
  la	
  huella	
  de	
  la	
  misma	
  y	
  lo	
  que	
  se	
  compara	
  serían	
  las	
  dos	
  huellas.	
  
Sin	
   asegurarlo	
   totalmente	
   podría	
   afirmar	
   que	
   la	
   única	
   forma	
   de	
   que	
   un	
   usuario	
   se	
  
hiciera	
   con	
   la	
   contraseña	
   de	
   otro	
   sería	
   teniendo	
   un	
   sniffer	
   en	
   la	
   red	
   de	
   la	
   víctima	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                                         14	
  
	
  
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

(puesto	
  que	
  la	
  aplicación	
  no	
  funciona	
  sobre	
  https),	
  otra	
  opción	
  sería	
  intentar	
  robar	
  la	
  
sesión	
   de	
   alguna	
   manera,	
   pero	
   así	
   no	
   se	
   conseguiría	
   la	
   contraseña	
   del	
   usuario,	
   sino	
  
acceso	
  a	
  su	
  sesión	
  por	
  un	
  periodo	
  limitado	
  de	
  tiempo.	
  

           Otro	
  aspecto	
  importante	
  en	
  la	
  seguridad	
  son	
  todas	
  las	
  entradas	
  de	
  datos	
  que	
  
ser	
   reciben	
   del	
   usuario	
   tanto	
   de	
   formularios	
   como	
   de	
   cualquier	
   tipo	
   de	
   petición	
   que	
  
tenga	
  que	
  atender	
  el	
  servidor,	
  no	
  se	
  debe	
  dar	
  por	
  supuesto	
  nada.	
  

             En	
   todos	
   los	
   formularios	
   que	
   recibe	
   la	
   aplicación	
   lo	
   primero	
   que	
   se	
   hace	
   con	
  
ellos	
   es	
   verificar	
   que	
   contengan	
   los	
   parámetros	
   que	
   deseamos	
   (dependiendo	
   del	
  
formulario	
   concreto),	
   y	
   posteriormente	
   todos	
   los	
   parámetros	
   recibidos	
   son	
   validados	
  
con	
   la	
   librería	
   ESAPI	
   mediante	
   expresiones	
   regulares,	
   evitando	
   de	
   esta	
   manera	
  
intentos	
   de	
   Cross	
   Site	
   Scripting	
   o	
   de	
   inyección	
   SQL.	
   También	
   son	
   validados	
   todos	
  
aquellos	
   campos	
   que	
   deben	
   permitir	
   cualquier	
   texto	
   (como	
   puede	
   ser	
   el	
   caso	
   de	
   los	
  
comentarios)	
   en	
   busca	
   de	
   cualquier	
   etiqueta	
   HTML	
   sospechosa	
   y	
   también	
   se	
  
contemplan	
  los	
  ataques	
  usando	
  codificaciones	
  diferentes.	
  

          Posteriormente	
  una	
  vez	
  validados	
  cada	
  uno	
  de	
  los	
  parámetros	
  se	
  analiza	
  cada	
  
uno	
  de	
  ellos	
  para	
  verificar	
  que	
  tengan	
  sentido,	
  no	
  se	
  permiten	
  números	
  negativos,	
  no	
  
se	
  permite	
  eliminar	
  al	
  último	
  administrador,	
  no	
  se	
  permite	
  subir	
  un	
  archivo	
  que	
  no	
  sea	
  
una	
  imagen	
  y	
  como	
  tamaño	
  máximo	
  8mb.	
  

              A	
  la	
  hora	
  de	
  construir	
  el	
  sistema	
  se	
  ha	
  construido	
  con	
  una	
  idea	
  final	
  en	
  mente	
  
que	
   es	
   procurar	
   en	
   la	
   medida	
   de	
   lo	
   posible	
   o	
   en	
   todos	
   los	
   casos	
   si	
   es	
   posible	
   que	
   la	
  
aplicación	
  fallase	
  por	
  el	
  uso	
  incorrecto	
  de	
  los	
  usuarios	
  o	
  el	
  intento	
  de	
  introducción	
  de	
  
datos	
  erróneos	
  en	
  formularios	
  o	
  intento	
  de	
  “jugar”	
  con	
  las	
  URLs	
  de	
  la	
  aplicación.	
  Con	
  
esto	
  quiero	
  decir	
  que	
  para	
  cada	
  acción	
  que	
  realiza	
  la	
  aplicación	
  primero	
  se	
  comprueba	
  
si	
  es	
  posible	
  realizarla.	
  Por	
  ejemplo,	
  no	
  se	
  puede	
  borrar	
  un	
  administrador	
  si	
  es	
  el	
  único	
  
que	
   hay,	
   no	
   se	
   pueden	
   comprar	
   mas	
   unidades	
   de	
   las	
   que	
   tiene	
   un	
   producto,	
   no	
   se	
  
puede	
  borrar	
  o	
  editar	
  un	
  producto	
  o	
  usuario	
  que	
  no	
  existe.	
  

	
                                                   	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                                                15	
  
	
  
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

             4.-­‐	
  Modelos	
  de	
  datos	
  usados	
  

       En	
  este	
  apartado	
  se	
  explicarán	
  los	
  modelos	
  de	
  datos	
  que	
  han	
  sido	
  usados	
  para	
  
representar	
  todos	
  los	
  datos	
  con	
  los	
  que	
  trabaja	
  la	
  aplicación.	
  

             4.1.-­‐	
  Modelo	
  de	
  datos	
  de	
  Producto	
  

       Con	
   esta	
   clase	
   se	
   pretender	
   representar	
   un	
   producto	
   de	
   la	
   tienda	
   con	
   todos	
   los	
  
atributos	
  que	
  contiene,	
  estos	
  atributos	
  serán	
  los	
  requeridos	
  por	
  el	
  enunciado.	
  

                    •      Código	
  (Creado	
  de	
  manera	
  automática	
  usando	
  UUIDs)	
  

                    •      Nombre	
  

                    •      Precio	
  

                    •      Stock	
  

                    •      Descripción	
  corta	
  

                    •      Detalles	
  

             Se	
  presenta	
  a	
  continuación	
  un	
  diagrama	
  UML	
  representando	
  la	
  clase.	
  

                                                               Producto

                                                                 Producto

                                              codigo: String               public String getDesc()

                                             nombre: String              public String getDetalles()

                                              precio: double             public String getNombre()

                                                stock: int                public double getPrecio()

                                               desc: String                  public int getStock()

                                             detalles:String              public String getCodigo()

                                            public Producto ()                   public String
                                                                              getDisponibilidad ()
                                         public Producto(String
                                        codigo, String nombre,
                                        double precio, int stock)
                                          public Producto(String
                                         codigo, String nombre,
                                         double precio, int stock,
                                       String desc, String detalles)

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                               16	
  
	
  
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

	
         Como	
   se	
   puede	
   observar	
   en	
   el	
   diagrama	
   UML	
   no	
   hay	
   ningún	
   método	
   en	
   esta	
  
clase	
  que	
  permita	
  modificar	
  el	
  producto	
  por	
  lo	
  que	
  se	
  puede	
  decir	
  que	
  las	
  instancias	
  de	
  
esta	
  clase	
  serán	
  inmutables,	
  una	
  vez	
  creados	
  los	
  objetos	
  no	
  será	
  posible	
  modificar	
  los	
  
mismos.	
  Se	
  ha	
  hecho	
  de	
  esta	
  manera	
  para	
  evitar	
  problemas	
  de	
  concurrencia.	
  

	
        Si	
  los	
  objetos	
  no	
  son	
  inmutables	
  sería	
  posible	
  por	
  ejemplo	
  que	
  un	
  usuario	
  que	
  
esta	
  comprando	
  cambiara	
  las	
  unidades	
  de	
  un	
  producto	
  mientras	
  que	
  el	
  administrador	
  
cambie	
  las	
  unidades	
  del	
  mismo	
  producto.	
  

             4.2.-­‐	
  Modelo	
  de	
  datos	
  para	
  el	
  usuario	
  

         Con	
  esta	
  clase	
  se	
  pretende	
  representar	
  un	
  usuario	
  dentro	
  de	
  la	
  tienda	
  online.	
  
Cada	
  objeto	
  de	
  la	
  clase	
  tendrá	
  los	
  siguientes	
  siguientes	
  atributos.	
  

                    •      Nombre	
  

                    •      Dirección	
  

                    •      Email	
  (identificador	
  único)	
  

                    •      Contraseña	
  (MD5	
  de	
  la	
  contraseña)	
  

                    •      Permisos	
  (‘a’	
  Administrador,	
  ‘c’	
  Cliente	
  normal)	
  

             A	
  continuación	
  de	
  puede	
  observar	
  un	
  diagrama	
  UML	
  representando	
  la	
  clase.	
  

                                                             Usuario

                                                                  Usuario

                                            nombre: String                     public String getDir()

                                              dir: String                      public String getMail()

                                              mail: String                   public String getNombre()

                                             pass: String                     public String getPass()

                                            permisos: char                   public char getPermisos()

                                           public Usuario ()                        public String
                                                                             getPrintablePermissions ()
                                         public Usuario(String
                                       nombre, String dir, String
                                        mail, String pass, char
                                               permisos)
                                                                                                                                        	
  
©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                           17	
  
	
  
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

             4.3.-­‐	
  Modelo	
  de	
  datos	
  para	
  el	
  la	
  cesta	
  de	
  la	
  compra	
  

           Con	
  esta	
  clase	
  se	
  pretende	
  representar	
  la	
  cesta	
  de	
  la	
  compra	
  de	
  un	
  usuario.	
  El	
  
carrito	
  de	
  la	
  compra	
  tiene	
  los	
  siguientes	
  atributos.	
  

                    •      Código	
  del	
  carrito	
  

                    •      Email	
  del	
  usuario	
  

                    •      Mapa	
  de	
  productos	
  que	
  contiene	
  los	
  productos	
  añadidos	
  al	
  carro	
  

                    •      Precio	
  del	
  carro	
  completo	
  

                    •      Fecha	
  de	
  la	
  compra	
  

                    •      Hora	
  de	
  la	
  compra	
  

                    •      Forma	
  de	
  pago	
  de	
  la	
  compra	
  

                                                                Carrito

                                                                       Carrito

                                              codigo: String                           public Carrito ()

                                               user: String                   public Carrito(String codigo,
                                                                                        String user)
                                         articulos: Map                      public Carrito(String codigo,
                                                                               String user, double precio)
                                              precio: double
                                                                              public Carrito(String codigo,
                                               fecha: String                   String user, double precio,
                                                                               String fecha, String hora,
                                               hora: String                         String formaPago)
                                                                                public boolean editCant
                                            formPago: String                   (String prod, int cantidad,
                                       public Map                  double prodPrice)
                                              getArticulos ()                    public void delProduct
                                                                                       (String prod)
                                          public int getLenght ()
                                                                                  public String getUser()
                                        public double getPrecio ()               public void setArticulos
                                                                                 (Map
                                        public String getCodigo()
                                                                                        articulos)
                                          public void setPrecio
                                                                                  public String getHora()
                                             (double price
                                         public String getFecha()               public void setUser(String
                                                                                           user)
                                       public String getFormaPago
                                                     ()
                                                                                 public void removeProd
                                         public void addProduct                   (String prod, double
                                          (String newProd, int                          prodPrice)
                                       cantidad, double prodPrice)

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                          18	
  
	
  
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

             4.4.-­‐	
  Modelo	
  de	
  datos	
  para	
  los	
  comentarios	
  

          Con	
  esta	
  clase	
  se	
  pretende	
  representar	
  un	
  comentario	
  añadido	
  por	
  un	
  usuario	
  a	
  
un	
   producto	
   del	
   catálogo	
   de	
   la	
   tienda.	
   Un	
   comentario	
   se	
   representa	
   con	
   los	
   siguientes	
  
atributos.	
  

                    •      Código	
  del	
  comentario	
  

                    •      Fecha	
  

                    •      Hora	
  

                    •      Código	
  del	
  producto	
  

                    •      Email	
  del	
  usuario	
  

                    •      Nombre	
  del	
  usuario	
  

                    •      Texto	
  del	
  comentario	
  

                                                          Comentario

                                                                Comentario

                                        codigoComentario: String           public String getEmail()

                                              fecha: String                     public String
                                                                          getCodigoComentario()
                                               hora: String                     public String
                                                                           getCodigoProducto()
                                         codigoProducto: String         public String getComentario
                                                                                      ()
                                              Email: String
                                                                           public String getFecha()
                                             nombre: String
                                                                           public String getHora()
                                           comentario: String
                                                                         public String getNombre()
                                        public Comentario(String        public String getFechaHora
                                        codigoComentario, String                      ()
                                        fecha, String hora, String
                                         codigoProducto, String
                                       Email, String nombre, String
                                               comentario)

	
                                                 	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                               19	
  
	
  
Juan	
  Díez-­‐Yanguas	
  Barber	
   Programación	
  con	
  Java	
  EE	
   Tienda	
  Online	
  
_____________________________________________________________________________	
  

             5.-­‐	
  Configuración	
  de	
  la	
  aplicación	
  

        En	
   este	
   capítulo	
   se	
   van	
   a	
   describir	
   diferentes	
   aspectos	
   de	
   configuración	
   de	
   la	
  
aplicación	
  necesarios	
  para	
  poder	
  desplegar	
  la	
  aplicación	
  correctamente.	
  

             5.1.-­‐	
  Configuración	
  de	
  persistencia	
  en	
  modo	
  fichero	
  

       Es	
   posible	
   que	
   la	
   aplicación	
   funcione	
   con	
   persistencia	
   contra	
   ficheros.	
   Para	
   que	
  
funcione	
   correctamente	
   es	
   necesario	
   configurar	
   una	
   serie	
   de	
   parámetros	
   en	
   el	
  
descriptor	
  de	
  despliegue	
  de	
  la	
  aplicación.	
  

        Lo	
   primero	
   que	
   tenemos	
   que	
   hacer	
   es	
   indicar	
   que	
   la	
   persistencia	
   de	
   la	
  
aplicación	
   va	
   a	
   funcionar	
   contra	
   ficheros.	
   Para	
   ello	
   tenemos	
   que	
   configurar	
   el	
  
parámetro	
   de	
   contexto	
   persistenceMethod.	
   El	
   valor	
   que	
   debe	
   tener	
   este	
  
parámetro	
  para	
  que	
  funcione	
  con	
  ficheros	
  es	
  file.	
  

	
     Posteriormente	
   lo	
   que	
   tendremos	
   que	
   hacer	
   es	
   configurar	
   la	
   ruta	
   de	
   los	
  
ficheros,	
   si	
   únicamente	
   pone	
   el	
   nombre	
   del	
   fichero	
   se	
   guardaran	
   en	
   el	
   directorio	
   del	
  
dominio	
   del	
   servidor	
   de	
   aplicaciones.	
   Los	
   archivos	
   van	
   a	
   ser	
   cargados	
   usando	
  
directorios	
  del	
  sistema,	
  no	
  se	
  van	
  a	
  emplear	
  métodos	
  de	
  contexto	
  o	
  del	
  classpath	
  para	
  
cargarlos.	
  

              La	
  ruta	
  del	
  fichero	
  que	
  contiene	
  los	
  datos	
  de	
  productos	
  y	
  usuarios	
  viene	
  dado	
  
por	
  el	
  parámetro	
  de	
  contexto	
  archivoDatos.	
  Es	
  un	
  fichero	
  de	
  tipo	
  binario.	
  

	
    La	
   ruta	
   del	
   fichero	
   que	
   contiene	
   el	
   historial	
   de	
   carritos	
   viene	
   dada	
   por	
   el	
  
parámetro	
  de	
  contexto	
  archivoHistoriales.	
  Es	
  un	
  fichero	
  de	
  tipo	
  binario	
  

	
        La	
  ruta	
  del	
  fichero	
  que	
  contiene	
  carritos	
  sin	
  comprar	
  que	
  son	
  guardados	
  para	
  
ser	
  recuperados	
  al	
  inicio	
  de	
  la	
  sesión	
  de	
  los	
  usuarios	
  viene	
  dada	
  por	
  el	
  parámetro	
  de	
  
contexto	
  archivoRecuperacion.	
  Es	
  un	
  fichero	
  de	
  tipo	
  binario.	
  

©	
  Jdyb	
  -­‐	
  Mayo	
  2011	
                                                                                              20	
  
	
  
También puede leer