Dans cet article, nous allons voir comment mettre en place de l’url rewritting dans une application JSF grâce à la librairie PrettyFaces.
En effet, de plus en plus de sites affichent leurs pages sous des urls propres, alors pourquoi pas nous dans nos applications !
Mais qu’est-ce qu’une url propre ?
Exemple :
http://monsite.fr/article?id=321&out=xml devient http://monsite.fr/articles/321/xml
C’est tout de même plus parlant !
Voici les principaux avantages de la réécriture d’url :
- réduction de la taille des urls
- Facilité de lecture des urls
- Stockage en favoris
Pour mettre en place la réécriture d’url, le framework PrettyFaces nous offre la possibilité de déclarer nos règles de réècriture dans un fichier xml.
La mise est assez simple.
Tout d’abord il faut récupérer la dernière version de prettyfaces puis ajouter la à votre projet.
Avec maven, c’est facile :
<dependency> <groupId>com.ocpsoft</groupId> <artifactId>prettyfaces-jsf2</artifactId> <version>3.3.2</version> </dependency>
Ensuite, on déclare le filtre dans le fichier web.xml de l’application :
<filter> <filter-name>Pretty Filter</filter-name> <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class> </filter> ... <filter-mapping> <filter-name>Pretty Filter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>FORWARD</dispatcher> <dispatcher>REQUEST</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping>
Et enfin on va déclarer nos règles dans un fichier WEB-INF/pretty-config.xml.
<pretty-config xmlns="http://ocpsoft.com/prettyfaces/2.0.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ocpsoft.com/prettyfaces/2.0.4 http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-2.0.4.xsd"> <!-- Begin UrlMappings --> <url-mapping id="article"> <pattern value="/article/#{articleController.currentId}" /> <view-id>#{articleController.prepareShowArticle}</view-id> </url-mapping> </pretty-config>
En appelant l’url http://…/article/1243, on va appeler la méthode prepareShowArticle du bean articleController, en ayant préalablement mis à jour la propriété currentId avec la valeur de l’url.
Vous avez désormais la possibilité de soigner vos applications jusqu’aux urls !