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 :

Forcer la compilation d'une jsp


Sujet :

Servlets/JSP Java

  1. #1
    SrK
    SrK est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Par défaut Forcer la compilation d'une jsp
    Bonjour,

    J'aurais voulu savoir s'il était possible de forcer la compilation d'une jsp sur un serveur tomcat, sans pour autant forcer la compilation par défaut au démarrage de tomcat de toutes les jsp ?
    Et aussi bien entendu, comment récupérer le flux HTML produit ?

    Merci,

    S.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Si utilises Ant pour déployer, il y a la tâche JSPC qui fait celà.

    Par contre tu n'obtiendras pas du code HTML mais plutôt une classe Java de type Servlet (le code HTML n'est pas forcément le même selon le contexte d'exéction).

  3. #3
    SrK
    SrK est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Par défaut
    ok merci, mais en fait, je ne sais pas au début quel page va page va être "pré-compilé", en gros, il faudrait que dans une classe java, je puisse appelé une méthode pour compiler la jsp, et récupérer le flux HTML.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Pourquoi as-tu besoin de pré-compiler certaines JSP ?

    Ca ne prend pas très longtemps à Tomcat de compiler une JSP et c'est seulement la toute première fois que la JSP est demandée qu'elle est compilée.

    Et je persiste à te dire que si tu compiles une JSP, tu ne récupères-pas un flux HTML en sortie.

    Que souhaites-tu faire exactement ?

  5. #5
    SrK
    SrK est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Par défaut
    En fait, je veux "éxecuter" une jsp dans une classe java pour récupérer la source de la page qui serait fournit à un navigateur.

    Détail, si je ne me suis pas fait comprendre :
    Dans la réalité si j'ai bien compris, je vais sur une page jsp, le serveur tomcat compile la page, et renvoi à mon navigateur le flux HTML qu'il interprète pour que j'ai une jolie page web.

    Je veux donc dans méthode d'une classe java, récupérer le résultat de la compilation d'un fichier donné (que j'aurai fixé en parametre de ma méthode).

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    C'est pas tout à fait ça...

    La compilation :

    - la première fois que quelqu'un appelle une JSP, tomcat la convertie en une servlet Java qu'il dépose dans %CATALINA_HOME%/work/{nomDuContexte}/... ce qui crée un fichier source .java, puis il le compile pour en créer un .class.

    - ensuite lorsque les autres utilisateurs demandent la JSP, s'il voit que le .class associé existe, alors il n'a plus besoin de compiler.

    Ca c'est le processus de compilation des JSP (j'ai simplifié mais grosso-modo c'est ça).

    L'exécution :

    Pour exécuter une JSP, il va chercher la Servlet associé (le .class vu ci-dessus) et il invoque la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void doService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        PrintWriter out = response.getWriter();
        // contenu de la jsp embarqué dans la servlet
        out.write("<table>");
        out.write("<tr>");
        out.write("<td>");
        ...
    }
    Pour "exécuter une JSP dans une classe Java", on passe par des servlets.

    A l'intérieur d'une servlet tu peux demander d'exécuter une JSP.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/maJSP.jsp");
    dispatcher.include(request, response);
    On peut également passer par les Taglibs, ... mais je ne vois pas quel est ton point d'entrée... (tu veux générer du HTML en mode batch ?)

    Je dois y aller ! Demain je te filerai un coup de main si tu veux !

  7. #7
    SrK
    SrK est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Par défaut
    merci pour ces précisions !

    Je test quelques trucs, et je te tiens au courant

  8. #8
    SrK
    SrK est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Par défaut
    En fait, dans ma classe j'ai pas la request ni la response en parametre, donc je dois instancier moi meme les HttpServletRequest et response ?

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Qu'est ce que tu veux faire exactement ?

    Parce que c'est le conteneur (Tomcat) qui se charge d'instancier HttpServletRequest et HttpServletResponse à chaque requête HTTP.

    En réalité HttpServletRequest et HttpServletResponse sont des interfaces, tu ne pourras donc pas les "instancier" aussi facilement .

    Tomcat crée en gros un TomcatHttpServletRequest et TomcatHttpServletResponse, Weblogic crée WeblogicHttpServletRequest et WeblogicHttpServletResponse, ... et c'est ça qui est injecté dans ta servlet par le biais de l'interface. Tu voies le principe ?

    Si tu veux générer du HTML en mode batch, je pense que tu es sur une mauvaise piste que de passer par un conteneur de JSP Tomcat...

    Il existe des solutions pour simuler une requête et réponse HTTP (genre HttpUnit) . Mais cela sert pour faire des tests unitaires, si tu dois t'appuyer dessus c'est qu'il y a un problème car ce n'est utile que pour faire des tests.

  10. #10
    SrK
    SrK est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Par défaut
    Par en mode batch, tu veux dire quoi exactement ? C'est bien par la console que tu veux dire ?

    Bah oui, je me disais que ca allait être dur de faire mes HttpServlet...

    Donc, ce que je veux faire, c'est j'ai une jsp, qui fait plusieurs manip (réccup des infos, include de jsp etc ... ), et je veux faire comme si "j'étais un navigateur" et cliquais sur cette jsp pour réccupérer le code HTML.
    Je voulais faire ca en évitant, de me connecter via le web pour réccup ces infos ( InputStream in = new URL(adresse).openStream(); ), car ca serait encore plus moche étant donné que je pourrais théoriquement passer en local pour récup ces infos, non ?

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Oui ce que j'appelle mode batch c'est le mode console.

    C'est pour faire genre des tests de performance, simuler plusieurs navigateurs client ?

    Bah tu peux t'appuyer genre sur HttpUnit pour simuler des request/response en mode console.

    Mais sinon je ne vois pas où est le pb de passer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream in = new URL(adresse).openStream();
    Ou d'utiliser la bibliothèque HttpClient pour aller plus vite.

  12. #12
    SrK
    SrK est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 213
    Par défaut
    C'est juste que les pages sont hébergé par mon serveur, et que j'ai mes classes java dessus aussi, et donc théoriquement, je pourrai passer en local et non en faisant des requetes sortantes ...

Discussions similaires

  1. [Struts 1.2] Erreur à la compilation d'une JSP
    Par Jidefix dans le forum Frameworks Web
    Réponses: 1
    Dernier message: 21/10/2010, 17h36
  2. Probleme de compilation d'une jsp
    Par Dryss51 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 06/03/2008, 15h07
  3. problème de compilation d'une JSP
    Par inabil dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 24/01/2007, 12h56
  4. Erreur de compilation d'une JSP
    Par casho dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 17/10/2006, 14h50
  5. probleme de compilation d'une jsp
    Par bruno270579 dans le forum JBuilder
    Réponses: 1
    Dernier message: 22/03/2005, 10h27

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