IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Redirection erreur 404 => récupérer url demandée


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 16
    Points
    16
    Par défaut Redirection erreur 404 => récupérer url demandée
    Bonjour,

    Mon problème est le suivant : Mon application J2EE/Struts redirige les erreurs 404 vers une page d'erreur personnalisée via la config du web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <error-page>
      <error-code>404</error-code>
      <location>/pages/commun/erreurshttp/erreur404.jsp</location>
    </error-page>
    Dans ma page erreur404.jsp, je veux logger l'erreur via log4J :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [...]
      <body>
      <%
        Logger logger = Logger.getRootLogger();
        logger.error("ERREUR 404");
      %>
    [...]
    Jusque là, pas de problème. Maintenant, pour que mon log ait un intérêt, j'aimerais pouvoir récupérer l'url que l'utilisateur a demandé et qui a provoqué l'erreur 404. J'ai essayé de la récupérer via la HttpServletRequest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getRequestURL();
    Mais je ne récupère que l'url de ma page erreur404.jsp, ce qui est logique vu que la config du web.xml a provoqué une redirection...

    Y aurait-il un moyen de récupérer cette url demandée, qui a provoqué l'erreur http 404 ?

    Merci d'avance à ceux qui peuvent m'aider...

  2. #2
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Est ce que tu as essayé la methode ?:

    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Je viens d'essayer, ça me retourne null ...

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    En effet les forward te fond perdre l'URL originellement demandé...
    Pour combler cela, la seule solution que je connaisse serait de stocker cette valeur AVANT de faire un forward.

    Et pour éviter de devoir faire cela "à la main" avant chaque forward, le mieux serait de le faire à chaque création d'une nouvelle request via un listener, concrètement via une classe du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class RequestListener implements ServletRequestListener {
     
    	public void requestInitialized(ServletRequestEvent event) {
    		ServletRequest request = event.getServletRequest();
    		if (request instanceof HttpServletRequest) {
    			HttpServletRequest httpRequest = (HttpServletRequest) request;
    			// On stocke la requestURI dans les attributs de la requête :
    			request.setAttribute("originalURI", httpRequest.getRequestURI());
    		}
    	}
     
    	public void requestDestroyed(ServletRequestEvent event) {
    		// do nothing
    	}
     
    }
    Qui est ensuite déclaré de la manière suivante dans le web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <listener>
          <listener-class>nom_du_package.RequestListener</listener-class>
    </listener>
    La classe sera instancié au démarrage de l'application, et ses méthodes seront appellé à chaque création/destruction de request.

    Donc toutes tes requests contiendront un attribut "originalURI" contenant l'URI initialement demandé

    a++

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Merci à toi adiGuba, j'avoue avoir posté sans grand espoir d'avoir une réponse et finalement ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. IdHttp Redirection Erreur 404 Delphi
    Par Teo dans le forum Web & réseau
    Réponses: 1
    Dernier message: 27/01/2008, 03h09
  2. Erreur 404 : récupérer l'URL en cause
    Par Tchupacabra dans le forum Langage
    Réponses: 21
    Dernier message: 05/01/2008, 18h25
  3. Récupérer l'url complète dans une page d'erreur 404
    Par Olivier Regnier dans le forum Langage
    Réponses: 4
    Dernier message: 05/09/2007, 16h26
  4. Récupérer URL en erreur sur 404
    Par TicTacToe dans le forum Langage
    Réponses: 6
    Dernier message: 28/02/2006, 12h58
  5. [Configuration] erreur 404, url demandée ?
    Par mikyfpc dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 08/10/2004, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo