Masquer l'URL en JSF
-
20-08-2019 - |
Question
J'ai une application d'entreprise écrite en JAVA avec JSF (utilisant RichFaces 3.3). Actuellement, mon URL ressemble à ceci:
http: //localhost/WebApplication/faces/folder1/page.jsp
La question est de savoir comment masquer mon URL pour que cela ressemble à ceci:
http: //localhost/folder1/page.jps
En gros, je souhaite masquer & "Application / faces / &";
.Merci
La solution
Pour réécrire les URL dans votre application, vous pouvez utiliser UrlRewrite . Toutefois, dans ce cas, il semble que vous souhaitiez supprimer le chemin de contexte de votre application Web. Dans ce cas, vous disposez de deux options:
- déployez votre application dans le chemin de contexte
/
(en quoi le serveur d'application est-il spécifique) - exécutez Apache sur le port 80 et utilisez mod_proxy pour envoyer par proxy certaines adresses URL à votre serveur d'applications s'exécutant sur un port différent, à l'aide de la configuration suivante.
Config Apache:
<Proxy http://localhost:8080/*>
Order Allow,Deny
Allow From All
</Proxy>
ProxyPreserveHost On
ProxyPass / http://localhost:8080/WebApplication/
ProxyPassReverse / http://localhost:8080/WebApplication/
Autres conseils
Notez que le / faces / est dû au mappage dans web.xml
. Il s’agit d’un mappage standard pour JSF, mais vous pouvez également utiliser le mappage d’extensions - c.-à-d. .faces
à la fin de l’URL.
Par exemple, dans une application que j'ai ici, cela se trouve dans le fichier web.xml:
<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
Ceci utilise IceFaces, mais ce sera similaire pour vous avec RichFaces. Le vôtre ressemblera probablement à ceci: <url-pattern>/faces/*</url-pattern>
. Si vous le changez pour avoir *.faces
comme ci-dessus, votre URL de fin ressemblera à ceci:
http: //localhost/WebApplication/folder1/page.faces
Si vous l'utilisez en conjonction avec la réponse donnée par Peter Hilton à propos du déploiement en tant qu'application Web racine, votre URL de fin ressemblera à ceci:
http: //localhost/folder1/page.faces
Ce qui correspond presque exactement à ce que vous vouliez.
PrettyFaces vous permet de réécrire votre URL. Si vous préférez quelque chose de plus léger, étendez NavigationHandler et remplacez-le. handleNavigation, par exemple en appelant context.getExternalContext (). redirect ()
Oui. Nous avons conçu PrettyFaces exactement pour gérer cette situation:
PrettyFaces & # 8211; SEO, paramètres dynamiques, signets et navigation pour JSF / JSF2
Vous pouvez également modifier le nom du dossier de faces en jsp, par exemple, comme suit:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/jsp/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>jsp/index.jsp</welcome-file>
</welcome-file-list>
Et votre url ressemblera à:
http://localhost/WebApplication/jsp/folder1/page.jsp
et si vous déployez votre application sur le chemin du contexte / du serveur d'applications, elle ressemblera à:
http://localhost/jsp/folder1/page.jsp
il sera difficile maintenant de savoir que vous utilisez JSF pour les lecteurs ;-) mais un pirate informatique peut le découvrir en pointant son navigateur sur l'URL suivante: http://localhost/folder1/page.jsp