Home
/ Docencia
/ Ingeniería
Técnica de Telecomunicación - Telemática
/ Laboratorio de Aplicaciones Telemáticas
Práctica 8: Noticias Web
Datos de la práctica
| Fecha |
21 de diciembre de 2007; 11, 17, 18, 24 y 25 de enero de 2008 |
| Conceptos |
Aplicaciones Web, Servlets, JSP, bases de datos |
| Plazo de entrega |
28 de enero de 2008 a las 19:00 |
| Forma de entrega |
Formulario Web de entregas |
Condiciones generales
-
Es necesario aprobar esta práctica para aprobar la asignatura.
-
La práctica debe ser entregada estrictamente en el plazo
estipulado. No se
ampliará el plazo de entrega de la práctica.
- La práctica debe realizarse y entregarse por parejas. Aquellos
alumnos que no tengan pareja, o cuya pareja renuncie a
trabajar en la práctica, deben hablar con los profesores de
la asignatura. Sólo se admitirán entregas individuales en aquellos
casos que hayan sido autorizados previamente por los profesores.
-
Las parejas deben ser las mismas que en la práctica de Swing,
salvo en situaciones excepcionales (por ejemplo, abandono de la asignatura
o falta de colaboración de alguno de los alumnos), que deben
ser comunicadas a los profesores con la mayor antelación posible.
- Cada pareja utilizará la misma base de datos que en la
práctica de Swing.
-
Las entregas deben funcionar en los ordenadores del Depto. de
Ingeniería Telemática (sistema operativo Linux) de los laboratorios en que se
imparten las clases prácticas, con las bases de datos proporcionadas.
-
Para que la práctica sea evaluada, es imprescindible que sus autores se
presenten a la entrevista de evaluación de la misma en la
fecha y la hora
convenidas. Dado que la evaluación tendrá lugar durante el
período de exámenes, se pactarán las fechas más convenientes
con los alumnos.
-
La calificación de esta práctica se conserva, si el alumno lo desea, para la
convocatoria de septiembre.
-
Las prácticas a entregar en la convocatoria de septiembre serán las mismas que
en la convocatoria de febrero.
Introducción
En esta práctica se desarrollará el portal Web del sistema de
gestión de noticias. Fundamentalmente, este portal permitirá a
los usuarios del sistema ver las noticias, escribir y leer
comentarios y votar en aquellas noticias que tengan una votación asociada.
Modelo de datos
El modelo de datos de la aplicación es el mismo que se ha
publicado en el enunciado de la Práctica 3
(Noticias Swing).
Almacén de noticias
El directorio del almacén de noticias estará integrado dentro
del espacio de la aplicación Web (por ejemplo, en un
subdirectorio del directorio principal de la aplicación).
De esta forma, los ficheros guardados en el almacén tendrán una
URI asociada dentro de la aplicación.
La colocación de noticias en el almacén, así como de sus fotos y
demás recursos asociados, se realizará manualmente. Cuando se
inserten noticias en la base de datos, basta con proporcionar la
ruta relativa dentro del almacén del fichero XHTML con el texto
de la noticia. Las imágenes y otros recursos podrán enlazarse
desde el texto de la noticia con URLs relativas.
El texto de la noticia se guardará en formato XHTML 1.1, pero sin
incluir ni el título ni los elementos de estructura del
lenguaje (html, head, body, etc.),
sino simplemente los párrafos, tablas, listas, etc.
con el texto de la noticia. De esta forma, será suficiente con
incluir el fichero con la directiva de JSP adecuada
desde el JSP que genere la vista de noticia.
Nota: para simplificar la inclusión de las noticias desde
páginas JSP con <jsp:include>,
las rutas de los enlaces de una noticia (por ejemplo, a
una imagen) deben ser relativas a la URI de la página JSP, y no
a la URI del documento de la noticia dentro del almacén.
Un ejemplo de fichero de noticia es el siguiente:
<p>
Ya está disponible el enunciado de la segunda práctica global de
Laboratorio de Aplicaciones Telemáticas. En esta práctica los
alumnos deben desarrollar un portal Web de gestión de noticias
que complemente el sistema desarrollado en la primera práctica.
</p>
<p>
Al igual que el año pasado, los alumnos dispondrán de seis de las
siete últimas clases de la asignatura para trabajar en la práctica
en el laboratorio. La entrega se realizará a finales de enero,
y la corrección de las entregas tendrá lugar poco después, en fechas
que todavía no se han concretado.
</p>
<p>
<img src="almacen/uc3m/foto.jpg" alt="Una foto del laboratorio" />
</p>
Funcionalidad mínima de la aplicación
El portal Web debe proporcionar, como mínimo, las siguientes
vistas y funciones:
-
Control de acceso y cierre de sesión:
algunas de las funciones del portal requieren que el usuario
esté autenticado. El sistema debe permitir, a los usuarios que
lo deseen, autenticarse con su alias y contraseña.
La autenticación debe ser válida hasta que se cierre o caduque
la sesión. Los usuarios que se hayan autenticado deben poder
cerrar su sesión.
-
Portada: la portada es el recurso inicial que
se encuentra un usuario al acceder al portal. Debe mostrar, al
menos, lo siguiente:
- Últimas noticias del sistema (por ejemplo, la(s) última(s) de
cada categoría). Es suficiente con mostrar el título de cada
una de las últimas noticias, enlazando a la vista de la noticia.
- Enlaces a la portada de cada categoría.
- Gestión de autenticación: desde la portada debe ser
posible autenticarse en el sistema. También se debe
mostrar, si el usuario está autenticado, su alias o nombre
completo.
-
Portada de categoría:
cada categoría dispondrá de una portada en la cual, como
mínimo, se debe mostrar el título de las últimas noticias de
dicha categoría, así como alguna forma de acceso al archivo de
noticias (sólo para usuarios autenticados).
-
Vista de noticia:
muestra el texto completo de una noticia, así como sus
metadatos (fecha, autor, título) y sus comentarios ordenados
cronológicamente.
- Debe permitir a los usuarios autenticados introducir un
nuevo comentario.
-
Si la noticia tiene una votación asociada, y la fecha es
compatible con el intervalo en que se puede votar, debe permitir a
los usuarios autenticados votar. Por sencillez, no es necesario controlar
que cada usuario sólo vote una vez.
-
Vista de archivo de noticias:
muestra un listado completo de las noticias del sistema,
clasificadas por categoría. Esta vista es accesible sólo a los
usuarios autenticados.
Requisitos adicionales
La aplicación desarrollada, además de proporcionar la funcionalidad mínima que se
pide, debe cumplir los siguientes requisitos:
- Todos los documentos HTML generados deben ser válidos
con respecto a la especificación de XHTML 1.1.
- Debe utilizar CSS para establecer el estilo de las páginas generadas.
- Debe organizar las clases en paquetes.
- Debe permitir que múltiples usuarios realicen
operaciones simultáneamente.
- Todas las URLs utilizadas deben ser relativas, salvo en
casos en que esté justificado el uso de una URL absoluta.
- La aplicación debe funcionar independientemente de cuántas o
qué categorías de noticias haya en la base de datos.
Sin embargo, en el
diseño de la portada se puede
asumir que el número de categorías será razonable (por ejemplo,
no más de diez).
Funcionalidad opcional de la aplicación
Adicionalmente, se propone la realización de tareas opcionales,
que serán tenidas en cuenta en la evaluación, pero no son
necesarias para obtener el aprobado en la práctica. Cada una de
estas funciones adicionales será valorada de acuerdo con su
complejidad
- Mostrar un fragmento del inicio de la noticia
en las portadas:
tanto en la portada del portal como en la portada de cada
categoría, para las últimas noticias se muestra, además de su
título, un fragmento inicial de la noticia (ya sea el primer
párrafo, las primeras 100 palabras o algún otro criterio similar).
- Gráficos con resultados de la votación:
cuando un usuario vota, inmediatamente a continuación se le
muestran los resultados de la votación de forma gráfica.
Por ejemplo, se puede utilizar JFreeChart
para ello.
-
Uso de tecnologías AJAX:
mejora de la interfaz de usuario mediante el uso de
JavaScript y
XmlHttpRequest.
-
Difusión de noticias en RSS:
publicación en alguno de los formatos RSS habituales o en
formato Atom de las últimas noticias
publicadas en el portal.
-
Uso de tecnología Java Server Faces:
Desarrollo de funciones de gestión de noticias (creación,
visualización, modificación, borrado, etc.) utilizando JSF
y JSP para su visualización.
- Uso de PHP:
desarrollo de funciones o vistas adicionales desarrolladas
con PHP. La infraestructura de los laboratorios cuenta
con un servidor Web Apache capaz de ejecutar PHP. Para más
información, pregúntese a los profesores.
- Portal de gestión con Groovy on Grails:
desarrollo de funciones de gestión (gestión de usuarios,
gestión de categorías, gestión de noticias, etc.), o alguna
otra función interesante, utilizando Groovy on Grails.
No es necesario integrar estas funciones con el portal de
noticias, pudiendo estar alojadas en un servidor distinto.
El alumno es responsable de instalar en su cuenta todo el
software que necesite para trabajar con Groovy on Grails.
- Portal de gestión con Ruby on Rails:
desarrollo de funciones de gestión (gestión de usuarios,
gestión de categorías, gestión de noticias, etc.), o alguna
otra función interesante, utilizando Ruby on Rails.
No es necesario integrar estas funciones con el portal de
noticias, pudiendo estar alojadas en un servidor distinto.
El alumno es responsable de instalar en su cuenta todo el
software que necesite para trabajar con Ruby on Rails.
Recomendaciones de diseño
- Diseñar la aplicación Web de tal forma que reutilice la
mayor cantidad posible
de código de la aplicación Swing.
- Separar las tareas de procesado de peticiones y obtención de
resultados de
las tareas de presentación de resultados. Las primeras debes
realizarlas mediante
servlets. Las de presentación, mediante documentos JSP. Como
norma general,
los servlets no deberían generar código XHTML, mientras que
los documentos
JSP deberían tener la menor cantidad de código Java posible.
La forma de trabajo recomendada, para tareas que impliquen
procesado (por ejemplo,
interacción con la base de datos) es la siguiente:
- Un servlet recibe la petición del usuario, la procesa y genera los resultados.
- El servlet pasa el control a un documento JSP mediante
el mecanismo de
forward. Le puede pasar la información a
mostrar como beans
introducidos como atributos del objeto HttpServletRequest.
- El JSP recupera estos beans y genera la presentación de los resultados.
- Programar un servlet por cada operación básica, en vez de un
servlet
que se encargue de varias operaciones distintas.
- Escribir trazas mediante el método log de las clases
ServletContext o
GenericServlet para depurar la aplicación. Las trazas serán
accesibles
en el directorio logs de la instalación de Tomcat.
También se puede depurar la aplicación (puntos de ruptura,
ejecución paso a paso, visualización del contenido de las variables,
etc.) mediante Eclipse (con plug-in WTP, ya instalado en
los laboratorios) y otros entornos de desarrollo avanzados.
- Utilizar siempre URLs relativas para que la aplicación sea
totalmente
portable. Para facilitar esto, es recomendable acceder a los
JSPs y servlets
al mismo nivel de URL. Esto puede hacerse declarando el
servlet-mapping
de los servlets como (es un ejemplo) "/CrearIncidencia",
pero no como "/servlet/CrearIncidencia".
Formato de entrega
Se entregará un único fichero con la extensión .war (comprimido con JAR), que contenga la aplicación web lista para ser desplegada (con todos
los ficheros de configuración, clases compiladas, imágenes,
hojas de estilo, etc.) Adicionalmente, en el directorio
WEB-INF/src del fichero WAR se incluirá el código fuente de todas
las clases Java utilizadas.
El fichero WAR contiene toda la estructura de la aplicación Web
comprimida desde dentro del directorio principal de la
misma:
cd ${CATALINA_HOME}/webapps/noticias/
jar cvf noticias.war *
Para reducir el tamaño de la entrega, este fichero no debe contener
datos innecesarios como los siguientes:
- El fichero JAR del conector de JDBC, si se usa el recomendado
en este enunciado.
- Ficheros de copia de seguridad generados por algunos editores
(por ejemplo,
*.bak, *~, #*, etc.).
Independientemente de que se haya desarrollado la aplicación en un
entorno integrado como Eclipse o NetBeans, los autores de la práctica
deben ser capaces, el día de la entrevista de evaluación, de compilar
su aplicación desde línea de comandos. Aquellos que no
sepan hacerlo pueden preguntar a los profesores en las prácticas o en
tutorías, antes de vencer el plazo de entrega.
La práctica se entrega vía Web a través del siguiente
formulario de entrega.
Criterios de evaluación
La calificación obtenida en esta práctica estará entre 0 y 10, y supondrá un
25% de la calificación final en la asignatura. Es necesario aprobar esta práctica
(obtener al menos un 5) para aprobar la asignatura.
Parte de la evaluación se basará en una entrevista personal de los profesores
con los autores de la práctica, que se realizará con cita previa.
Los dos miembros de la pareja de prácticas deben demostrar
conocimientos suficientes de la práctica que hayan entregado.
Además de que se implemente correctamente la funcionalidad obligatoria,
se tendrán en cuenta los siguientes aspectos en la evaluación:
- Funcionalidad opcional implementada, tanto la propuesta en este enunciado
como la desarrollada a iniciativa de los alumnos.
- Calidad y elegancia del diseño y código de la aplicación.
Uso adecuado de la orientación a objetos. Gestión de errores
adecuada.
- Usabilidad de la aplicación.
Para obtener una calificación de 5 o superior es necesario implementar
la funcionalidad mínima expuesta en este enunciado. Por otra parte, un programa
que implemente sólo la funcionalidad mínima puede optar hasta una calificación
máxima de en torno a 8 teniendo en cuenta el resto de aspectos a valorar.
El resto de la calificación, hasta 10, puede obtenerse implementando
funcionalidad opcional.
Referencias
XHTML/HTTP:
Servlets y JSP:
SQL: