|
Home /Docencia /Ing. Técnico de Telecomunicación Esp. Telemática /Laboratorio de Aplicaciones Telemáticas /FotoWeb | |
Práctica: FotoWebFecha: 6, 7, 20, 21, 27 y 28 de noviembre de 2003Conceptos: servlets, JSP, JavaBeans, bases de datos Plazo de entrega: 11 de diciembre de 2003 Profesores: Jesús Arias Fisteus |
|
|
IntroducciónEsta práctica consiste en el desarrollo de una aplicación web de gestión de fotografías personales de usuarios. La aplicación debe permitir a un usuario gestionar sus fotografías en el servidor, agrupadas en carpetas. La aplicación debe ser multiusuario. Arquitectura de la aplicaciónLa arquitectura de la aplicación estará compuesta por tres sistemas:
Descripción de la aplicaciónEl usuario dispondrá de un conjunto de carpetas. Si lo desea, puede tanto crear nuevas carpetas como borrarlas. Una carpeta sólo puede contener fotografías. En ningún caso se puede anidar una carpeta dentro de otra. Toda la información relativa a usuarios, carpetas y fotografías reside en la base de datos. Sin embargo, los ficheros que contienen las fotografías se almacenarán en el sistema de ficheros del servidor web. Se recomienda que este sea un subdirectorio dentro del directorio que contiene la aplicación web. De esta forma, los ficheros tendrán una URL asociada. La aplicación sólo necesita escribir las URLs de las fotografías en los elementos img de las páginas que genere, y el cliente las descargará. UsuariosLa aplicación debe ser capaz de gestionar carpetas y fotografías de cualquier número de usuarios. Para ello, debe almacenar por lo menos la siguiente información de cada usuario. Puede almacenar datos adicionales que creas adecuados:
CarpetasLas fotografías de un usuario se organizan mediante carpetas. La aplicación debe permitir sólo un nivel de carpetas. Cada carpeta debe tener como mínimo la siguiente información, aunque puede tener información adicional que creas conveniente:
FotografíasEl servidor debe almacenar, como mínimo, la siguiente información para cada fotografía, aunque puede tener más, si lo crees conveniente:
RequisitosLa aplicación debe cumplir, además de los explicitados en el resto de este documento, los siguientes requisitos:
Recomendaciones de diseñoSe valorará la elegancia y sencillez del diseño de la aplicación. Por ejemplo, es recomendable:
|
|
Se pide:Desarrollar un conjunto de páginas JSP, JavaBeans y servlets que proporcionen las siguientes operaciones:
|
|
Control de cuotas de usuarioEsta funcionalidad permite limitar el espacio ocupado por las fotografías de un usuario. A cada usuario se le asignará una cuota cuando se le da de alta. En todo momento, la suma del espacio ocupado por sus fotografías debe ser inferior a su cuota. Por tanto, la aplicación debe rechazar la creación de fotografías cuando dicha creación suponga que se sobrepase la cuota del usuario. La aplicación no puede suponer una cuota igual para todos los usuarios, sino que debe permitir que a distintos usuarios se les asignen distintas cuotas. El usuario debe disponer, en las vistas de carpetas y fotografías, de información acerca de su cuota y espacio total utilizado. Creación de mini-fotografíasLos atributos width y height del elemento img indican al navegador el tamaño con el que debe mostrar las imágenes. Sin embargo, la imagen se transmite a tamaño completo por la red, y es el navegador el que realiza el escalado. Para reducir el tráfico generado por la aplicación, cada vez que el usuario suba una fotografía al servidor se debe almacenar en disco dos versiones de dicha imagen:
La imagen de tamaño real debe utilizarse sólo para la visualización de la fotografía completa. En el modo de visualización de todas las fotografías de una carpeta, la aplicación debe transmitir por la red sólo las fotografías de tamaño reducido. |
|
Para el desarrollo de esta práctica, debe utilizarse el gestor de bases de datos MySQL instalado en alumnos.lab.it.uc3m.es.
|
|
La API de Servlet 2.3 no permite gestionar los parámetros recibidos con codificación multipart/form-data. Dado que esta codificación es la más conveniente para subir ficheros al servidor, debes utilizar alguna API añadida que sí lo permita. A continuación se presentan dos alternativas:
El siguiente código ilustra la recepción de ficheros utilizando com.oreilly.servlet. Dado que la biblioteca almacena los ficheros en el directorio temporal especificado por la aplicación, podría ser útil moverlos a un directorio y nombre distintos: // crea una instancia MultipartRequest multipart = new MultipartRequest(request, directorioTemporal); // obtiene el valor de otros parámetros del formulario String nombre = multipart.getParameter("nombre"); String descripcion = multipart.getParameter("descripcion"); // obtiene el fichero File ficheroTemp = multipart.getFile("foto"); // crea un nuevo nombre para el fichero y lo renombra String nuevaRuta = ...; File fichero = new File(nuevaRuta); ficheroTemp.renameTo(fichero); |
|
División en módulos:FUNCIONALIDAD OBLIGATORIA (MÓDULO 1) 1.- Control de acceso 2.- Vista de carpetas 3.- Vista de fotografías FUNCIONALIDAD OPCIONAL (MÓDULO 1) 4.- Añadir nueva carpeta 5.- Eliminar carpeta 6.- Añadir nueva fotografía 7.- Eliminar fotografía 8.- Cerrar sesión FUNCIONALIDAD OPCIONAL (MÓDULO 2) A.- Control de cuotas de usuario B.- Creación de mini-fotografías Criterios de corrección:Toda entrega que implemente correctamente la funcionalidad obligatoria (1,2 y 3) se considera aprobada con una calificación de 5. Si la aplicación implementa la funcionalidad obligatoria, se obtendrá mayor calificación implementando funcionalidades opcionales del módulo 1 (hasta un 8). Si la aplicación implementa todas las funcionalidades obligatorias y opcionales del módulo 1, se obtendrá mayor calificación implementando funcionalidades opcionales del módulo 2 (hasta un 10). Además se valorarán positivamente (incrementando la calificación con respecto a los máximos anteriores) aquellas prácticas con un buen diseño y estilo de programación, y una buena gestión de errores. No se valorará ni positiva ni negativamente el aspecto visual (diseño gráfico) de la aplicación. |
|
Especificaciones:
Otros:
Software: |
Última actualización: |
|