Leer fuentes RSS desde una JSP

1
15574

Introducción

Cada vez más sitios están ofreciendo la posibilidad de conocer sus actualizaciones a través de lectores RSS. Puede ser interesante hacer que nuestra página funcione como un pequeño lector de RSS, tal como hace Google en su página personalizada:

página personalizada de Google

En este tutorial vamos a ver una forma rápida de hacer que una JSP se convierta en un mini-lector de RSS, empleando el producto RssUtils, desarrollado por Rodrigo Oliveira.

Preparación del entorno

Para la realización del tutorial, he empleado Eclipse 3.2 Callisto, un servidor Tomcat 5.5 y Java 1.5.

Una vez que lo tenemos todo instalado y correctamente configurado, se crea un nuevo proyecto web en Eclipse:

Crear nuevo proyecto

Seleccionamos el tipo de proyecto «Web»->»Dynamic Web Project»

Seleccionar tipo de proyecto

Y finalmente le asignamos un nombre

Asignar nombre al proyecto

Pinchamos en Finalizar y ya tenemos el proyecto listo

Ahora hay que importar el producto RssUtils, que hemos descargado previamente. Al descargarlo, se obtiene un Zip que hay que descomprimir, y obtenemos los siguientes ficheros:

ficheros dentro del Zip

berkeley_license.txt:
Este fichero contiene la licencia de uso del producto, así que es conveniente leerlo.
rss_utils.jar:
En este Jar se encuentran la implementación de la taglib
rss_utils.tld:
Fichero de configuración de la taglib

Una vez que tenemos todos los ficheros, hay que incluirlos en el proyecto. Para ello, creamos una carpeta llamada «tld» en la carpeta de nuestro proyecto «Web Content/WEB-INF»

crear carpeta tld

y se copia en ella el fichero «rss_utils.tld». En la carpeta «WebContent/WEB-INF/lib» se copia el fichero «rss_utils.jar». El proyecto automáticamente incluye el jar entre las librerías de la aplicación, así que sólo nos queda configurar el proyecto para incluir en él el fichero tld.
Para ello, se abre el fichero «web.xml», que se encuentra dentro de la carpeta «WEB-INF». En ese fichero hay que buscar una sección <jsp-config></jsp-config> (o crearla si no existe) , y dentro de ella añadir una taglib, de la siguiente manera:

En morado aparecen las líneas que es necesario añadir para incluir la taglib en el proyecto. Como se puede ver, la declaración del taglib consta de dos elementos:

  • taglib-uri: Es un identificador que se empleará en la JSP para referirse a la taglib indicada. En este caso concreto hemos elegido «/tagsAutentia/rssutils»
  • taglib-location: Es la ruta al fichero tld que hemos copiado anteriormente al proyecto. en nuestro caso concreto «/WEB-INF/tld/rssutils.tld»

En rojo, podemos ver que se ha añadido una entrada a la lista de ficheros <welcome-file-list>. Esta lista de ficheros sirve para que el servidor sepa que fichero debe mostrar en el caso de que sólo se invoque a la aplicación a través de su nombre. Más adelante se mostrará para que sirve este cambio

Una vez hecho esto, tenemos nuestro proyecto listo para empezar a trabajar.

Una breve reseña sobre el formato RSS

Los ficheros RSS son ficheros XML que siguen un formato específico. Están divididos en dos partes: La información del canal, es decir, del sitio al que el usuario se subscribe; y la información de los elementos (noticias nuevas publicadas en el sitio). Para más información sobre RSS, podéis consultar la página de RSS Advisory Board con la especificación de RSS 2.0

Empleo de las etiquetas de RssUtils

Lo primero que vamos a hacer es crear una JSP, de nombre en la que hacer nuestras pruebas, y que situaremos en la carpeta WebContent:

creación de la página JSP

Como se ve, el nombre del fichero es el mismo que el que se ha configurado en el welcome-file-list. Lo que hemos logrado con esto es que, al llamar a través del navegador Web a nuestra aplicación (http://localhost:8080/AutentiaRssUtils en nuestro caso), el servidor de aplicaciones invoque directamente a nuestra JSP, sin que el usuario tenga necesidad de conocer su nombre. Hemos puesto el fichero en primera posición de la lista porque el servidor, en este caso Tomcat, comienza a buscar ficheros desde el comienzo de la lista, y devuelve el primero que encuentre. Una vez aclarado este punto, seguimos adelante…

El código de la JSP tendrá más o menos este aspecto:

Sobre esa plantilla de JSP, vamos a empezar a poner código hasta acabar el tutorial. Lo primero es importar la taglib :

 

Donde «uri» es el taglib-uri que especificamos en el fichero web.xml y «prefix» es el prefijo que emplearemos para decir que una etiqueta pertenece a esta taglib.

Acabamos de añadir la primera etiqueta. En ella se especifica la URL de la fuente RSS que vamos a tratar, y un nombre (el feedId) que usaremos de aquí en adelante para referirnos a la fuente en el resto de tags. En el caso de que nuestro servidor deba acceder a Internet a través de un proxy, podemos hacerlo especificando otros dos atributos, de forma que la etiqueta quedaría así:

<rss:feed url=»MiFeedURL» feedId=»MiFeedId « proxyAddress=»MiProxyAddress» proxyPort=»MiProxyPort»/>

Ya estamos preparados para empezar a manejar la fuente RSS. Primero, vamos a sacar el título del canal al que nos hemos subscrito:

Y ahora vamos a sacar la información de cada elemento enviado en el fichero de RSS

La etiqueta <rss:forEachItem> itera sobre todos los elementos del fichero RSS. Las etiquetas <rss:itemXXXX> extraen información del item. Como se puede observar, se ha mezclado código HTML con las etiquetas de la taglib, con lo que se consigue un mejor efecto. Vamos a ver como va nuestra página, poniendo en el navegador la dirección de la aplicación. En nuestro caso, esta dirección es http://localhost:8080/AutentiaRssUtils. Como se ve debajo, ya tenemos una lista de enlaces a los tutoriales más recientes de AdictosAlTrabajo:

 

Ejemplo de funcionamiento

También podemos decir que nos muestre sólo un determinado número de elementos, aplicando atributos a <rss:forEachItem>:

  • El atributo startIndex señala el primer elemento que se desea mostrar (empezando a contar desde 0)
  • El atributo endIndex señala el último elemento que se desea mostrar.

Estos atributos pueden emplearse juntos o por separado.

Ya sabemos lo básico para poder emplear este juego de etiquetas. Ahora os presento la lista de etiquetas disponibles. En las etiquetas que no se expliquen por sí mismas, entre paréntesis se incluye una explicación de su función. Además, se indica si la información que recoge cada etiqueta es obligatoria o puede no venir.

Etiquetas del Canal
channelCopyright – Opcional channelDescription – Obligatorio channelDocs (Enlace a documentación sobre RSS) – Opcional
channelGenerator (Programa con el que se generó el fichero RSS) channelImage – Opcional channelLanguage – Opcional
channelLastBuildDate (fecha del último cambio en la fuente) – Opcional channelLink – Obligatorio channelManagerEditor (Dirección email del responsable de la fuente) – Opcional
channelPubDate (fecha de publicación del contenido del canal) – Opcional channelSkipDays (Información sobre los días que se puede evitar buscar actualización del canal) – Opcional channelSkipHours (Lo mismo que SkipDays, pero con horas) – Opcional
channelTextInput (indica si debe mostrar una caja de texto, y los datos del programa que gestione la información que en ella se escriba, pero es muy infrecuente) – Opcional channelTitle – Obligatorio channelTTL (Tiempo en minutos que puede cachearse la fuente RSS antes de buscar una actualización) – Opcional
Etiquetas del Elemento
itemDescription – Obligatorio itemLink – Obligatorio itemTitle – Obligatorio

Dando forma a la página

Ahora que ya conocéis lo necesario sobre RssUtils, podéis jugar con las etiquetas y con las hojas de estilos para hacer algo más presentable. Por ejemplo, podemos usar esta JSP:

Para obtener el siguiente resultado

JSP con estilos

Conclusión

Como veis, hacer un lector de fuentes RSS online no es particularmente complicado, si se conocen las herramientas adecuadas. Nosotros, los miembros de Autentia, intentamos acercaros ese conocimiento a través de nuestros tutoriales. Pero si la solución a vuestros problemas no se encuentra en Adictos Al Trabajo, ya sabéis que podéis poneros en contacto con nosotros para que os asesoremos y formemos.

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here