Afficher différentes pages d'erreur Tomcat en fonction de l'URL de la demande d'origine
-
06-07-2019 - |
Question
J'aimerais utiliser la directive error-page de Tomcat pour afficher différentes pages d'erreur en réponse à divers types d'exceptions. Cependant, je souhaite que la page d'erreur affichée ait un style et un contenu différents, en fonction de l'URL de la demande d'origine à l'origine de l'erreur.
Plus précisément, j'ai une partie administrateur de mon application Web et une partie utilisateur. Les pages d'erreur doivent être différentes, à la fois en termes de style et de menus. Le moyen le plus fiable de distinguer la partie d'une page donnée est de rechercher des chaînes dans l'URL. J'aimerais indiquer à la page d'erreur Tomcat, par exemple, un servlet qui analyserait l'URL et redirigerait vers la page d'erreur portant le style approprié.
Donc 1) est-il possible d'utiliser une page d'erreur, ou un autre mécanisme, pour rediriger les erreurs vers un servlet plutôt que vers un JSP? (Et si non, puis-je faire ce que j'imagine dans un JSP?)
et 2) une fois que je suis dans ma servlet, puis-je déterminer l'URL de la demande qui a provoqué l'erreur (request.requestURI ne semble pas fonctionner - il indique l'emplacement de l'erreur JSP elle-même).
La solution
Vous pouvez obtenir l'URL de requête d'origine auprès de
.pageContext.errorData.requestURI
Dans votre erreur jsp que vous enregistrez via <error-page>
dans votre web.xml
Voir http: // java. sun.com/j2ee/1.4/docs/api/javax/servlet/jsp/ErrorData.html pour plus d'informations.
En ce qui concerne l'utilisation d'un servlet, vous pouvez probablement utiliser un <jsp:forward>
caractère jsp d'erreur pour le transférer à un servlet de votre choix.
Autres conseils
La page d'erreur de Tomcat est le dernier recours pour afficher les erreurs d'application (juste au cas où votre page d'erreur échouerait réellement). Généralement, vous devriez (je recommanderais) pour créer votre propre page d'erreur où vous pouvez afficher les erreurs dans une vue non technique. (par défaut) et la vue technique (si l'utilisateur le souhaite) de manière adaptée à vos utilisateurs.