Mostrando entradas con la etiqueta servlets. Mostrar todas las entradas
Mostrando entradas con la etiqueta servlets. Mostrar todas las entradas

miércoles, 11 de febrero de 2009

Proyecto Biblioteca MVC

El proyecto biblioteca tendrá los mismos casos de uso que el anterior desarrollado con servlets

El proyecto se desarrollará con las siguientes tecnologías
  • Patrón de desarrollo MVC (Modelo Vista Controlador)
  • Servlets: Listener, Filters, Servlets
  • JSP
  • JSTL (tags implicitos en JSP, tags de JSTL y tags personalizados)
  • Pruebas


Especial atención a:
  • modularización de la vista con uso de la etiqueta jsp:include
  • paquetes separando aspectos/finalidades/roles de las clases java
  • aislamiento de acceso a datos en una sola clase con una interfaz
  • nomenclatura
  • características standars de proyecto web java.

Plazo y forma de desarrollo:
Forma de desarrollo: equipo
Inicio: 12 febrero
Fin: 20febrero (ambos días incluidos!)

Publicación en el mismo repositorio svn de equipo

Total horas por persona: 24 Horas
Total horas por equipo: 24x4= 96 Horas

miércoles, 4 de febrero de 2009

POO y Servlets

Programación Orientada a Objetos y Servlets...

  • ¿en que objetos nos apoyamos para realizar el desarrollo de las funcionalidades (a parte de los objetos implicitos del framework y del modelo)?
  • ¿quien invoca los news filters, servlets, listeners?

Proyecto Final Conclusiones:
  • ¿qué logica se ha implementado en los listeners?
  • ¿qué logica se ha implementado en los servlets?
  • ¿qué logica se ha implementado en los filtros?
  • ¿qué tienen en común los objetos almacenados en el SevletContext (setAttribute y getAttribute)?
  • ¿qué tienen en común los objetos almacenados en el Session(setAttribute y getAttribute)?
  • ¿qué tienen en común los objetos almacenados en el Request (setAttribute y getAttribute)?

Refactorizacion:
  • eliminar redundancia
  • mejorar nombres de clases y metodos y parametros
  • encapsular objetos

lunes, 26 de enero de 2009

Proyecto Final Servlet elaboracion en equipo

se utilizará Google code y subversion (SVN y subclipse: plugin de eclipse para SVN)

Proyecto Final Servlet elaboracion en equipo

Cada grupo realizará un proyecto (fecha limite: 3 febrero - 12 Horas) y entregará una memoria (fecha limite: viernes 6 febrero ) en el que se explicará las decisiones adoptadas en el diseño de clases y rol elegido. Se valorará la puesta en practica de los diferentes recursos disponibles. En el desarrollo del proyecto puede intervenir el profesor como tester-cliente y redefinición de usabilidad.
*** La aplicación debe estar preparada en los casos que el usuario intente hacer algo mal a proposito: pedir un libro que no existe, realizar un prestamo sin permiso, modificar un autor sin ser administrador ...

Servicio Préstamo de Biblioteca:

Programa de gestión de servicio de préstamo de una biblioteca.
  • El usuario anónimo podrá consultar el catálogo de la biblioteca el cual podrá estar ordenado/clasificado en géneros (ensayo, policíaco, aventuras...) y/o autores.
  • Cada libro tiene: referencia, autor, fecha publicación, genero, titulo.
  • Cada autor tiene: nombre y una lista de libros.
  • Cada genero tiene: nombre y una lista de libros. Cada usuario de la biblioteca tiene: nombre, clave, mail y lista de libros en prestamo.
  • La aplicacion/biblioteca tiene: lista de libros, lista de generos, lista de autores y lista de usuarios y un administrador (usuario especial que al registrarse tiene permisos especiales)
  • El usuario podrá ver los detalles de libro y proceder a su préstamo.
  • Para realizar un préstamo el usuario tiene que estar registrado.
  • Para registrarse el usuario debe antes existir en la lista de usuarios de la aplicación. El registro consiste en un formulario donde el usuario inserta su mail y clave y estos deben coincidir con un usuario de la lista de usuarios de la aplicacion.
  • Un usuario podrá tener un máximo de 3 libros en préstamo.
  • Un usuario no podrá tener dos libros iguales en prestamo
  • Un usuario registrado puede consultar los libros que tiene en prestamo.
  • Para realizar un préstamo de libro el usuario indica el dia de inicio y fin de prestamo que no puede ser superior a 5 dias.
  • Un usuario que no existe en la biblioteca puede solicitar a el administrador mediante un formulario el ingreso en la aplicacion para posteriormente poder registrarse
  • El administrador del programa se registra con usuario: admin, clave:admin.
  • El administrador no puede realizar prestamos pero hace tareas de administacion.
  • El administrador del programa puede aceptar las solicitudes de usuarios pendientes y convertirlos en usuarios que pueden realizar prestamos
  • El administrador del programa puede crear/modificar/borrar libros, autores y generos
  • El administrador del programa puede consultar todos los libros reservados (fecha inicio y fin y usuario que realizó el préstamo) desde que se inicio la aplicación.
  • El administrador del programa puede prohibir a un usuario el préstamo

EXTRAS OPCIONALES:
  • aplicar estilos CSS
  • separar la capa de datos (DAO) y conectar con MYSQL

Aplicacion carrito de la compra

aplicacion carrito de la compra paso a paso en:
http://groups.google.com/group/curso-j2ee/web/aplicacion-tienda-con-servlets

miércoles, 21 de enero de 2009

Ejercicios: contador visitas, cronometro, chat

Proyecto contador:
  • El Contador contabilizara todas las peticiones de todos los usuarios!
  • ContadorUsuarios contabilizará los usuarios que se han conectado a la aplicación desde que se inicia la app
  • ContadorUsuriosConectados contabilizará los usuarios conectados en el momento actual a la aplicación.




pdf: filtros en la practica


filtros project
damos de alta un servlet para el registro de usuario (formulario de registro)
activacion de seguridad con filtro de registro de usuario


algunos ejemplos sobre filtros...


martes, 20 de enero de 2009

Listeners en el api de servlet y colecciones en java.util

Listeners en servlets
  • application - ServletContext
  • javax.servlet.ServletContextListener
  • javax.servlet.ServletContextAttributeListener
  • session
  • javax.servlet.http.HttpSessionListener
  • javax.servlet.http.HttpSessionAttributeListener
  • javax.servlet.http.HttpSessionActivationListener
  • javax.servlet.http.HttpSessionBindingListener
  • request - event
  • javax.servlet.ServletRequestListener
  • javax.servlet.ServletRequestAtributeListener

Ejemplos de creacion de listeners y activacion en web.xml

¿para qué sirve escuchar (y hacer algo en ese momento) cuando arranca la aplicacion o cuando se conecta por primera vez un usuario nuevo a la aplicación ?
Cuando arranca la aplicación es el momento oportuno para iniciar los recursos comunes a los componentes de la aplicación o situar en un estado concreto la información. Ejemplos de esto pueden ser: conectar con la base de datos, comenzar con una información especifica (zoo con algunos animales dentro...)...
Igualmente es interesante poder limpiar o cambiar recursos al parar o desactivar la aplicación, por ejemplo: desconectar de la base de datos, escribir mail de desactivación, escribir un registro en un fichero ...

Cuando se conecta un usuario es muy util saberlo para inicializar aquellos objetos que el usuario puede utilizar, por ejemplo: el carrito de la compra, servicios, colecciones de objetos ...
Igualmente cuando se desconecta el usuario es util para limpiar recursos asociados con su uso (session)






Ejercicio continuacion de zoo: implementacion de listener de session y de aplicacion

Iniciar la session de usuario con las colecciones iniciadas.
Finalizar la session de usuario añadiendo sus colecciones a un atributo de aplicacion que se llamara "todosLosAnimales" y que será una coleccion de animales de todos los usuarios
session
al iniciar la aplicacion...
arg0.getSession().getServletContext().setAttribute("todosLosAnimales", coleccion);
al finalizar la aplicacion...
List coleccion=arg0.getSession().getServletContext().getAttribute("todosLosAnimales");
coleccion.addAll(arg0.getSession().getAttribute("animales"));





viernes, 16 de enero de 2009

Ejercicios Servlets

¿Qué es una aplicación web y que archivos y configuración son necesarios?

aplicacion/
_______/archivo.html
_______/archivo.jsp
_______/imgs/...
_______/css/...
_______/masjsps/archivo.jsp
_______/mashtmls/archivo.jsp
_______/WEB-INF/
web.xml
_______
/WEB-INF/classes/es.cea...
_______
/WEB-INF/lib/librerias.jar

Ejemplos

¿Cómo crear un servlet?
  1. Se crea una clase java que herede (extienda) de HttpServlet (javax.servlet.http.HttpServlet)
  2. se sobreescriben los dos metodos encargados de procesar las solicitudes via GET y via POST
  3. public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
  4. public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
  5. Se reenvia todo lo que pase por doPost a doGet incluyendo en la implementacion del metodo doPost la siguiente linea: doGet(req,res);
  6. Se escribe la respuesta en el metodo doGet utilizando el objeto Writer a traves del objeto response: res.getWriter()
  7. Se da de alta el servlet en el archivo de configuración de la aplicación web: web.xml
  8. Se despliega la aplicación
  9. Consultamos el servlet en la dirección http://localhost:8090/nombreAplicacion/bienvenida


¿cómo imprimimos los resultados del servlet en la pagina web?
  1. Accedemos al objeto PrintWriter para imprimir los resultados: PrintWriter pw = res.getWriter();
  2. Imprimimos lineas con el metodo println("mensaje"): pw.println("

    HOLA SOY UN SERVLET

    ");
  3. Cerramos el objeto de impresion pw.close();

Ejercicios
  1. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/ciudad y que imprima la palabra SEVILLA
  2. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/academia y que imprima la palabra CEA
  3. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/enlaces y que imprima los enlaces del blog del curso
  4. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/formulario y que imprima este formulario
  5. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/calculadora y que imprima este otro formulario
  6. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/registro y que imprima un formulario con los campos usuario y clave y se envie(atributo action) a la direcion /registrar



¿cómo recuperamos los parametros que el usuario nos envia a traves de URLs?
  1. Accedemos al objeto request y utilizamos su metodo getParameter("nombreParametroEsperado")
  2. El valor que retorna se lo asignamos a una variable
  3. si la variable es diferente de null entonces lo imprimios en el resultado
Ejercicios
  1. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/envioFormulario y que imprima los valores nombre y apellidos
  2. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/calcular y que imprima el resultado de los parametros sumando1 y sumando2
  3. crear otro servlet que responda a la peticion http://localhost:8090/nombreAplicacion/registro y que imprima el resultado de los parametros usuario y clave.