- ¿cómo resolver el problema de aplicar un RequestDispatcher y seguir pasando por los filtros?
- eticom-chat-servlet en repo proyecto completo chat
lunes, 23 de junio de 2008
Martes 24 Junio
viernes, 20 de junio de 2008
Lunes 23 Junio
probar tomcat6 como servidor alternativo... compilar y empaquetar con maven y con ant enviar a servidor o a través del manager
servlets generando imagenes
un servlet puede devolver contenido de tipo text/html como estamos comprobando o también puede devolver documentos de tipo pdf, word, o de tipo imagen. Con el siguiente ejercicio vamos a devolver una imagen a partir de un servlet que recibe como parametro la imagen que solicita.
De la siguiente forma: http://localhost:8080/visorImagen?imagen=retrato.jpg
Si lo ejecutamos directamente en el navegador comprobaremos que nos devuelve la imagen correspondiente, pero también podemos realizar la petición dentro de una etiqueta html de imagen

De esta forma demostramos que una misma página puede solicitar información de diferentes servlets.
Como mejora a este ejercicio podemos crear un sistema de seguridad consistente en que según el registro de usuario pueda consultar o no ciertas imágenes que se solicitan al anterior servlet. Y aquí hay que tomar la decisión de implementarlo en el mismo servlet o implementarlo en un filtro. Con la primera solución nuestro servlet ya no solo genera imagenes sino que debe conocer la lógica de negocio relacionada con registro... con la segunda solución cada clase tiene una responsabilidad en nuestro programa, siendo ambas reutilizables por otras
servlet url pattern * ó /chat/*
servlet modelo 2
jsp http://es.wikipedia.org/wiki/Java_Server_Pages
Java Server Pages es una extensión de servlet
JSP puede considerarse como una manera alternativa, y simplificada, de construir servlets. Es por esto que una página puede hacer todo lo que un servlet puede hacer, y viceversa.
El funcionamiento general de la tecnología JSP es que el Servidor de Aplicaciones (en nuestro caso jetty o tomcat son contenedores de servlets y contenedores de jsps) interpreta el código contenido en la página JSP para construir el código Java del servlet a generar. Este servlet será el que genere el documento (típicamente HTML) que se presentará en la pantalla del Navegador del usuario.
variables implicitas, ... ejemplo conexion a datos desde jsp
Hibernate: para conectar a la base de datos necesita crear un objeto "pesado" que luego se puede reutilizar siempre, el objeto en cuestión se llama SessionFactory y contiene toda la información de persistencia: mapeos (anotaciones y sus atributos) y datos de conexion a la base de datos (url conexion, usuario, clave, nombre de base de datos). Con el objeto SessionFactory podemos crear una conexion (que en hibernate se utiliza la palabra session para referirse al tiempo de una conexion a la base de datos) a la base de datos. SessionFactory.getSession(), con lo cual ya podemos realizar comunicaciones con la base de datos (selects, updates, deletes, creates).
La preguntas...
- ¿si el objeto a crear es pesado y es reutilizable en qué ambito de una aplicación web lo guardamos? ¿ServletContext, HttpSession, HttpRequest?
- ¿dónde, cuándo y cómo lo creamos?
La respuestas...
- ?
- ?
POE¿cómo se hace un programa utilizando eventos (orientado a eventos...)?
generación de las clases necesarias para que cuando añadamos un nuevo Producto al CarritoCompra se lance un CarritoCompraIncluirEvento y lo escuche un ComprobadorStockCarrito (será del tipo CarritoCompraListener)
POA¿qué se consigue haciendo un programa con eventos?
Separación de aspectos del programa y con ello se consigue modularización, reutilización e independencia
jueves, 19 de junio de 2008
Viernes 20 Junio - Listener en javax.servlet
- Listeners
- carrito compra lanza eventos y objetos escuchan los eventos del carrito compra es decir CarritoCompraLanzador CarritoCompraEscuchador CarritoCompraIncluyeProducto
- Listener patron singleton
- HttpServlets vs Services ---- Controladores vs Servicios --- lifecycle - rendimiento - IOC - reflection:
- ¿en una aplicación multiusuario (200-2000) cuantos objetos (incluyendo su navegacion por propiedades) tiene que crear nuestro programa para dar respuesta a estas solicitudes?
- ¿cómo se puede aumentar el rendimiento o reducir los objetos?
- ¿cómo podemos crear un programa robusto, es decir cambiar de implementación sin modificar el código....?
RequestDispatcher disp = request.getRequestDispatcher("/servlet/RecursoInvocado?item1=valor&item2=valor&...");
disp.foward(request, response);
disp.include(request, response);
mas info sobre colaboración de servlets
Jueves 19 Junio - Servlet Lifecycle y Listeners
- ServletContext, Session, Request diferencias de estado
- Listeners en javax/servlet
- enlace a repo con ejemplos de listeners http://code.google.com/p/eticom-master-java/source/detail?r=156
- ServletContextListener
ServletContextListener será ejecutado dos veces al arrancar la app en el servidor y al remover la aplicación del servidor, por lo tanto se utiliza para inicializar y finalizar recursoso de la app.
Utilizar ServletContextListener para arrancar hibernate con las clases persistentes adecuadas
- ServletContextAttributeListener
- HttpSessionListener
- escucha cuando se crea y destruye la session de usuario
- utilizar HttpSessionListener para grabar estadisticas de ip
- HttpSessionActivationListener
- HttpSessionBindingListener
- HttpSessionAttributeListener
- escucha cuando se cambian los atributos de session
- utilizar carrito y escuchar cuando se completa el pedido para actualizar algún detalle de la página
- Desarrollo de Modulo Chat con Listener
- utilizar ServletContextListener para implementar un chat http://en.wikipedia.org/wiki/Meta_refresh
martes, 17 de junio de 2008
Miercoles 18 Junio
- continuamos con la funcionalidad de registro
- utilizamos request.getSession().setAtribute(key, value) para guardar el usuarioEticom en la sesion de usuario
- filtramos nuestra aplicación para que compruebe en todas las peticiones el registro de usuario y en su defecto envie la petición a registro
- MAVEN
- estructura de directorios de una aplicación/módulo con MAVEN
- source folders
- estructura de directorios de una aplicación web con MAVEN
- source folders
- acrhivos de aplicación
- dependencias
- lanzar en servidor
- ¿qué hace falta para utilizar (crear pruebas y lanzar pruebas) testng en un proyecto MAVEN?
- ¿qué hace falta para utilizar log en nuestro proyecto MAVEN?
- convertir un modulo jar a modulo war para utilizarlo como dependencia
- pasar todo lo relacionado con registro a modulo de registro y convertirlo en war
lunes, 16 de junio de 2008
Martes 17 Junio
- cambiar la configuración de MYSQL y update de modulos
- reconfigurar instancia MYSQL
- entender el arranque de hibernate
- create + import.sql
- update
- las pruebas con datos controlados
- desarrollo de modulo de envío de mails con cuenta de gmail
- implementar el registro de usuario
- escribir formulario de registro
- enviar datos a través de un formulario
- insertar usuario en base de datos y ...
- mantener info de usuario en session
- escribir formulario de logging
- registrar usuario
- escribir formulario de olvido de contraseña
- instalar modulo mailing para envío de contraseña a usuario
- entender el diseño de excepciones por capas
- entender la gestión de excepciones
- FiltroSolicitud entender la diferencia entre...
- ServletRequest vs HttpServletRequest
domingo, 15 de junio de 2008
Lunes 16 Junio
- filtros en webapps
- separación de aspectos al interceptar una solicitud web para:
- loggin de petición(request) por consola
- aplicar estadisticas de acceso
- aplicar seguridad
- javax.servlet.Filter
- utilizar diferentes módulos (diseño de aplicación en capas) en nuestra aplicación con MAVEN
- eticom-hibernate-core
- eticom-registro-hibernate
- eticom-stats-hibernate