L'objectif de ce TP cloturant le cours de développement de systèmes informatiques est de vous faire développer une application web combinant les différentes technologies vues séparément dans les précédentes séances.
L'application à développer est un aggrégateur de flux RSS dont le principe global est le suivant :
Pour la réalisation de cette application, nous vous proposons un cheminement par étapes en suivant les parties décrites ci-dessous.
Attention : ce TP est à réaliser individuellement et doit être envoyé par mail avec pour sujet "TP DSI" à Laurent.Vercouter@emse.fr à la fin de la séance pour évaluation. Le fichier à renvoyer est un zip contenant l'ensemble de votre contexte Tomcat ainsi que les sources des classes Java écrites.
Connectez-vous au serveur de base de données utilisé en cours de Base de Données et créez une table contenant un seul champ permettant d'indiquer un flux RSS. Vous pouvez utiliser la table créée lors de la séance de TP sur JDBC si elle est encore présente.
Créez une page JSP contenant un formulaire permettant d'ajouter un flux. Ce formulaire a donc un simple champ de texte et un bouton pour valider l'ajout. La validation de ce formulaire renvoie à la même page JSP pour ajouter éventuellement un autre flux.
Créez un Bean ayant une propriété représentant un flux (sous la forme d'une chaîne de caractères).
La saisie d'un flux dans le formulaire de la page JSP créée doit provoquer la création d'un Bean ayant comme valeur de sa propriété la valeur saisie. Il faut ensuite que la page JSP appelle une méthode du Bean qui effectue l’enregistrement du flux dans la base de données. La valeur retournée par la méthode d’enregistrement du flux dans le bean doit permettre d’afficher dans la JSP un message du résultat de l’enregistrement (exemple : ECHEC, si l’enregistrement n’a pas réussi et SUCCES sinon).
Écrivez un servlet que vous déclarerez dans le contexte Tomcat de manière à pouvoir y accéder.
Commencez par ouvrir une connexion JDBC dans ce servlet pour récupérer l'ensemble des flux RSS présents dans la base. Testez que vous récupérez bien les bonnes informations (par exemple en affichant temporairement ces flux dans le flux de sortie de la réponse du servlet).
Dans un premier temps, considérez uniquement un flux RSS parmi l'ensemble récupéré dans la base. Le servlet devra alors lire le contenu du flux RSS. Pour accéder à des flux extérieurs au réseau de l'École, il faut passer outre le proxy. Nous vous fournissons une classe qui le permet : EmseProxy. Pour que cette classe fonctionne, il faut donner à ses attributs login et pass des valeurs qui vous seront communiquées lors du TP.Vous pourrez, à partir de votre servlet, régler le proxy en appelant EmseProxy.enableProxy();
Nous fournissons aussi une méthode, permettant de recopier le contenu d'une page située à l'URL u, vers un flux de sortie os :
public static void recopierPage(URL u,OutputStream os) throws IOException{
InputStream is=u.openStream();
int b;
while((b=is.read())!=-1){
os.write(b);
}
os.flush();
}
Vérifiez que votre programme fonctionne en affichant (temporairement) le text brut provenant du flux RSS dans le flux de sortie de la réponse du servlet.
Téléchargez le fichier XSLT.jar et la feuille de style rss.xsl qui réalise la présentation des informations reçues par RSS. Cette archive contient une classe qui présentera vos informations RSS en une page HTML plus conviviale, en utilisant la méthode :
XSLTransformer.transform(Reader, Reader, Writer)
Le premier paramètre de cette méthode est un lecteur vers la feuille de style XSL que vous pouvez créer comme suit :
URL rss_url = new URL("http://...adresse de la feuille de style.../rss.xsl");
InputStreamReader rss_is = new InputStreamReader(rss_url.openStream());
Le second paramètre est un lecteur vers le texte issu du flux RSS et le troisième la sortie où doit être écrit le résultat formatté.
Copiez le servlet précédent dans une nouvelle classe qui sera capable d'aggréger plusieurs flux RSS. Modifiez le code accédant à un flux RSS pour récupérez l'ensemble des informations envoyées par ces flux et les concaténer.
Attention :
<!ELEMENT mrss (rss*) > <?xml version="1.0" ?> <mrss> <rss ... </rss> <rss ... </rss> </mrss>
La dernière étape consiste à modifier la feuille de style rss.xsl afin de prendre en compte le format mrss et d'ajouter à chaque "item" le titre du flux correspondant (voir exemple out.htm). Bien sur, les items doivent apparaitre triés par date/heure de publication (la fonction de tri est fournie dans le fichier rss.xsl, veillez à ce qu'elle s'applique aux bons éléments).
Rappel : ce TP est à réaliser individuellement et doit être envoyé par mail avec pour sujet "TP DSI" à Laurent.Vercouter@emse.fr à la fin de la séance pour évaluation. Le fichier à renvoyer est un zip contenant l'ensemble de votre contexte Tomcat ainsi que les sources des classes Java écrites.