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 :

Recuperer code jsp genere


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Recuperer code jsp genere
    Bonjour a tous,
    Mon appli tourne sous struts/tomcat. Je souhaiterai recuperer coté java (dans le controleur ?) pour traitement le code genere d'une page JSP.
    Le contenu de cette page se trouve dans l'objet response mais je ne sais pas comment le recuperer je n'ai trouvé aucune methode le permettant.
    Merci pour vos reponses

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Je ne suis pas sûr d'avoir compris ton besoin, mais si ce que tu veux, c'est récupérer le contenu généré par une Jsp tu peux utiliser un filtre J2EE. Par contre se filtre s'exécute en amont de l'appel des servlets (donc du contrôleur).
    Interface Filter

    Si en plus tu veux pouvoir intercepter directement certains appels sur la Response, tu peux surcharger la classe HttpServletResponseWrapper

    J'espère que cela répond à ton besoin

    Jacques Desmazières

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Si cela intéresse d'autres, voici ma réponse MP:

    Citation Envoyé par rock in the air
    Peux tu donner plus de détails???
    Le filtre te permet d'intercepter l'appel à une url entrante de ton application, et donc de manipuler éventuellement la request, et d'intercepter le flux sortant sur la response.

    Dans ton cas, il te faut intercepter le flux de sortie. Donc dans ton filtre, une fois la Jsp exécutée, tu lis l'OutputStream, que tu renvoies sur la sortie, agrémenté de ton code Javascript.
    Pour cela il te faut surcharger l'objet Response afin de pouvoir intercepter la génération du flux de sortie (sinon tu ne pourras pas le lire). Ceci se fait ensurchargeant l'objet HttpServletResponseWrapper ainsi que l'objet ServletOutputStreamWrapper (c'est lui qui va te permettre d'accéder au contenu généré). Il faut bien sûr une méthode te permettant d'accéder au ServletOutputStreamWrapper.

    Dans le ServletOutputStreamWrapper tu surcharges les méthodes write, afin qu'elles écrivent dans un buffer. Tu ajoutes une méthode pour accéder à ton buffer.
    La surcharge du ServletOutputStreamWrapper doit te permettre d'instancier ta nouvelle classe ServletOutputStreamWrapper en surchargeant la méthode getOutputStream.

    Enfin dans ton filter, après l'appel à chain.doFilter(req, resp), où resp est ta classe surchargeant HttpServletResponseWrapper tu peux récupérer le flux généré, que tu vas pouvoir parcourir et renvoyer au browser sur l'OutputStream ou le Writer, avec tes modifications.

    Cela peut sembler complexe, mais c'est à ma connaissance la seule méthode d'intercepter et de modifier le code généré par une Jsp/Servlet.

    Jacques Desmazières

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Jacques - 06 Voir le message
    Si cela intéresse d'autres, voici ma réponse MP:


    Le filtre te permet d'intercepter l'appel à une url entrante de ton application, et donc de manipuler éventuellement la request, et d'intercepter le flux sortant sur la response.

    Dans ton cas, il te faut intercepter le flux de sortie. Donc dans ton filtre, une fois la Jsp exécutée, tu lis l'OutputStream, que tu renvoies sur la sortie, agrémenté de ton code Javascript.
    Pour cela il te faut surcharger l'objet Response afin de pouvoir intercepter la génération du flux de sortie (sinon tu ne pourras pas le lire). Ceci se fait ensurchargeant l'objet HttpServletResponseWrapper ainsi que l'objet ServletOutputStreamWrapper (c'est lui qui va te permettre d'accéder au contenu généré). Il faut bien sûr une méthode te permettant d'accéder au ServletOutputStreamWrapper.

    Dans le ServletOutputStreamWrapper tu surcharges les méthodes write, afin qu'elles écrivent dans un buffer. Tu ajoutes une méthode pour accéder à ton buffer.
    La surcharge du ServletOutputStreamWrapper doit te permettre d'instancier ta nouvelle classe ServletOutputStreamWrapper en surchargeant la méthode getOutputStream.

    Enfin dans ton filter, après l'appel à chain.doFilter(req, resp), où resp est ta classe surchargeant HttpServletResponseWrapper tu peux récupérer le flux généré, que tu vas pouvoir parcourir et renvoyer au browser sur l'OutputStream ou le Writer, avec tes modifications.

    Cela peut sembler complexe, mais c'est à ma connaissance la seule méthode d'intercepter et de modifier le code généré par une Jsp/Servlet.

    Jacques Desmazières
    Merci pour les reponses
    En fait je souhaite juste récuperer une partie du code generée pour l'utiliser ailleurs. Aurais tu un petit exemple de code.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Comme ça, là maintenant, non je n'ai pas d'exemple de code correspondant à ton cas precis, par contre tu peux t'inspirer des divers exemples d'implémentation de filtres que l'on peut trouver:
    Two Servlet Filters Every Web Application Should Have

    Ces filtres ne modifient pas le contenu, mais ils l'interceptent et dans le cas du GZIPFilter modifie le flux de sortie, ce qui est relativement proche de ce que tu veux faire

    Jacques Desmazières

Discussions similaires

  1. [VB6] recuperer code erreur d'une bdd
    Par colooo dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 14/07/2006, 10h15
  2. basculer une variable javascript dans du code JSP
    Par gloglo dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 01/06/2006, 11h44
  3. [TIdHTTP] Récupérer code HTML
    Par daedric dans le forum Web & réseau
    Réponses: 1
    Dernier message: 26/04/2006, 10h02
  4. CODE RETOUR GENERE PAR PL/SQL POUR SHELL UNIX
    Par mimi_été dans le forum PL/SQL
    Réponses: 6
    Dernier message: 18/11/2004, 08h32
  5. [Debutant(e)]Générer du code JSP dynamiquement
    Par Gibier dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 16/01/2004, 11h54

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