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 :

Fichier .js dans JSP : problèmes !


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Fichier .js dans JSP : problèmes !
    Bonjour !

    Alors voilà, j'ai une structure d'application identique à celle-ci :

    /Application
    |___/JS
    |_________monFichier1.js
    |_________monFichier2.js
    |
    |___/WEB_INF
    |_________web.xml
    |_________/src
    |______________servlet.java
    |
    |___index.jsp

    Dans mon entête HTML, j'ai mis ce genre d'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script type="text/javascript" src="<%=application.getContextPath() %>/js/prototype.js"></script>
    Le problème est le suivant :
    Si j'invoque directement ma JSP (localhost:8080:Application/index.jsp), aucun poblème, le javascript est inclue dans ma page et ses traitement sont fait.
    Par contre, si je passe par ma servlet (localhost:8080:Application/),le javascript n'est plus intégré dans ma page et firebug me retourne moultes Erreurs Javascript !

    Mapping dans le ficheir web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <servlet>
    	<servlet-class>Index</servlet-class>
    	<servlet-name>StartPage</servlet-name>
    </servlet>
     
    <servlet-mapping>
    <servlet-name>StartPage</servlet-name>
    	<url-pattern>/</url-pattern>
    </servlet-mapping>
    Avec cette seul ligne dans ma servlet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getRequestDispatcher("index.jsp").forward(request, response);
    Est-ce que quelqu'un a déjà eut eut problème ?
    Ais-je oublié quelques choses ?

    D'avance, merci.

    NB :
    Par contre, si je transforme mes fichiers .js en .js.jsp, ça fonctionne

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Mettre apache en frontal ne corrigerait-il pas le problème ?
    À ce stade, je suis démunis... Je ne sais plus quoi faire .

    Quelqu'un à déjà utiliser prototype ou un autre Framework Javascript sur une appli JEE ?

  3. #3
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    As-tu le même problème après avoir mis la servlet dans un package ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    En fait, elle est déjà dans un package...
    J'ai volontairement simplifié la structure dans l'ennoncé de mon soucis...

    Voici la structure réelle :



    Et voici l'entête de ma JSP :



    Avec les .js.jsp comme ci-dessus, ça fonctionne...
    Mais dès que j'enlève les .jsp de mes fichiers Javascript, on dirait qu'ils sont ignorés.

    D'avance, merci.

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Il ne te manquerait pas un welcome file qui fasse un forward sur une page dont l'extension est un .do (je dis ca comme ca, ca fait 6 ans que je travail sur d'autres technologies que struts)

  6. #6
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Peux-tu poster le code html généré de la page jsp ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    @ *alexandre* :
    Je n'utilise pas struts dans le cas présent...

    Voici le code généré par Tomcat :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
     
    		<script type="text/javascript" src="/TP1/js/prototype.js.jsp"></script>
    		<script type="text/javascript" src="/TP1/js/scriptaculous.js.jsp"></script>
    		<script type="text/javascript" src="/TP1/js/builder.js.jsp"></script>
    		<script type="text/javascript" src="/TP1/js/controls.js.jsp"></script>
     
    		<script type="text/javascript" src="/TP1/js/effects.js.jsp"></script>
    		<script type="text/javascript" src="/TP1/js/slider.js.jsp"></script>
    		<script type="text/javascript" src="/TP1/js/sound.js.jsp"></script>
    </head>
    <body style="width:50%; margin:auto;">
    	<h2 style="text-align:center;color:white;background-color:#787878">Bienvenue à la loterieZ !</h2>
     
    	<div id="textIndex" style="display:block;">
    		<p style="text-align:center;border:1px dashed black; padding:5px;background-color:#efefef;" >
     
    			<span style="text-decoration:underline;font-style:italic;font-size:1.1em">
    				Le but du jeu est simple :
    			</span><br /> 
    			Vous devez choisir 2 numéros différents dans les listes suivantes !<br />
    			Ensuite, vous n'avez plus qu'à valider et voir si vous avez gagné...<br />
    			Bonne chance. :)	
    		</p>
     
    		<form action="tirage.do" method="post" style="text-align:center">
     
    			Numéro 1: <select name="number1">
     
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
     
    <option value="10">10</option>
    </select><br />
    Numéro 2: <select name="number2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
     
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    </select><br />
     
    			<br />
    			<input type="submit" value="Valider" />
    		</form>
     
    	</div>
     
    	<script type="text/javascript">
                    new Effect.BlindDown('textIndex');
            </script>
     
    </body>
    </html>

    Pour mémoire, voici le code de la Servlet en question :

    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
    17
    18
    19
    20
     
    package com.sdz.control;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class Index extends HttpServlet {
     
    	public void doGet(	HttpServletRequest request, 
    						HttpServletResponse response)
    						throws IOException, ServletException{
     
    		request.getRequestDispatcher("index.jsp").forward(request, response);
     
    	}	
    }
    Il y a un truc qui doit se passer lorsqu'on utilise une JSP via une servlet... Mais je ne vois pas quoi.
    Si j'invoque directement la page JSP avec des .js standard, tout fonctionne, mais si je passe par le forward de la servlet, tout fout le camp...

  8. #8
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    As-tu le même problème si tu définis le mapping de la servlet comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <servlet>
    	<servlet-name>StartPage</servlet-name>
    	<servlet-class>com.sdz.control.Index</servlet-class>
    </servlet>
    <servlet-mapping>
    	<servlet-name>StartPage</servlet-name>
    	<url-pattern>/index</url-pattern>
    </servlet-mapping>
    et si tu invoques la servlet comme ceci :
    http://localhost:8080/Application/index

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    En effet, ça fonctionne comme ça...
    Du coup, pourquoi ça ne fonctionnait pas en mappant mon chemin sur '/' dans le web.xml...

    C'est louche cette histoire tu ne trouves pas ?

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    <script type="text/javascript" src="/TP1/js/prototype.js.jsp"></script>
    Ce code généré m'a l'air correct. Es-tu sur que ton problème est que le JS n'es pas inclu? Qu'a tu à la place de généré si tu invoque directement le jsp?

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Le truc, c'est que ce n'est même pas des fichiers JS contenant du code Java...
    C'est un framework d'effet (script.aculo.us).

    Le problème, je pense, viens du fait que lorsque j'invoque directement mes JSP, genre : localhost:8080/TP1/index.jsp
    Pas de soucis, les JS sont chargés.

    Mais lorsque j'utilise une servlet mapper sur la racine (localhost:8080/TP1/)
    Les JS ne se chargent plus, sauf en les renommant en .js.jsp et le problème semble disparaitre lorsque j'utilise un nom de mapping plus explicite comme me la conseillé c_nvy.

    Je n'arrive pas à comprendre pourquoi il y a ce phénomène et comment le contourné...
    J'aurais bien aimé pouvoir utiliser ce Framework Javascript et je ne m'attendais pas du tout à ce genre de réticence de la part de la plateforme JEE...

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Y a pas de raison que les .js ne se chargent pas avec le mapping que tu nous a donné. Il n'y a pas nécessité non pus de mettre .jsp derrière. Remet ton mapping d'origine, charge ta page "/" et dit nuos à la fois ce que tu vois dans les entete d'inclusion de ta page générée (là ou t'inclu les .js) et ce que ca donne quand tu charge à la main un de ces .js dans ce cas, est-ce que tu vois bien le contenu?

    J'ai l'impression que t'avais fait ceci comme mapping
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <servlet-name>StartPage</servlet-name>
    	<url-pattern>/*</url-pattern>
    </servlet-mapping>
    ce qui expliquerais que tes .js ne se chargeaient pas mais que les .jsp oui. En effet le mapping *.jsp avait priorité sur le mapping /*, mais tes .js ne correspondant qu'au mapping /*, ben au lieu de te servir tes .js i lte servait une nouvelle fois la servlet.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Je t'assure que je n'avais pas (et n'ai toujours pas) de /* dans le mapping !

    J'ai retesté un truc et c'est très fort !
    Avec ce mapping :

    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
    17
    18
    19
    20
    21
    22
    23
    24
     
    <web-app>
     
    	<servlet>
    		<servlet-class>com.sdz.control.Index</servlet-class>
    		<servlet-name>StartPage</servlet-name>
    	</servlet>
     
    	<servlet>
    		<servlet-class>com.sdz.control.FormulaireAction</servlet-class>
    		<servlet-name>FormAction</servlet-name>
    	</servlet>
     
    	<servlet-mapping>
    		<servlet-name>StartPage</servlet-name>
    		<url-pattern>/home</url-pattern>
    	</servlet-mapping>
     
    	<servlet-mapping>
    		<servlet-name>FormAction</servlet-name>
    		<url-pattern>*.do</url-pattern>
    	</servlet-mapping>
     
    </web-app>
    À l'invocation de la page localhost:8080/TP1/home => Tout marche nickel
    Par contre, si j'utilise ce mapping :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <web-app>
     
    	<servlet>
    		<servlet-class>com.sdz.control.Index</servlet-class>
    		<servlet-name>StartPage</servlet-name>
    	</servlet>
     
    	<servlet>
    		<servlet-class>com.sdz.control.FormulaireAction</servlet-class>
    		<servlet-name>FormAction</servlet-name>
    	</servlet>
     
    	<servlet-mapping>
    		<servlet-name>StartPage</servlet-name>
    		<url-pattern>/home</url-pattern>
    	</servlet-mapping>
     
     
    	<servlet-mapping>
    		<servlet-name>StartPage</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
     
    	<servlet-mapping>
    		<servlet-name>FormAction</servlet-name>
    		<url-pattern>*.do</url-pattern>
    	</servlet-mapping>
     
     
    </web-app>
    Voici un screen de ma page :



    Les .js sont ignorés et l'effet de la librairie script.aculo.us ne fonctionne pas...

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ok, trouvé

    Dans les spéicfications servlet (ici servlets 2.5 section 11.2):
    1. "une string commencant par / et finissant par /* est utilisée pour mapper un chemin"
    2. "un string commencant par le préfix "*." est utilisée pour mapper une extension"
    3. "un string contenant uniquement le caractère '/' indique la servlet par défaut, de l'application"
    4. "toutes les autres strings indiquent une correspondance exacte"


    T'es dans la cas 3, tu mappe tout ce qui est pas mappé ailleurs vers ta servlet par défaut. Le mieux pour toi est de mapper par exemple sur /home et de faire comme tout le monde, dire dans ton web-xml que la default page est "/home"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <welcome-file-list>
      <welcome-file>home</welcome-file>
    </welcome-file-list>
    ainsi quand l'utilisateur tappera http://serveur/TP1, il sera redirigé vers http://serveur/TP1/home

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Tu es trop fort ! ! !

    Merci beaucoup, ça venait effectivement de là !

    Pfiou... Pas si simple JEE en fin de compte...

    Merci aussi c_nvy !

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

Discussions similaires

  1. Problème fichier JavaScript dans une page JSP
    Par layloun dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/08/2014, 17h44
  2. Problème intégration d'un fichier js dans un fichier jsp
    Par pagoda dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 27/12/2012, 00h19
  3. Réponses: 1
    Dernier message: 22/03/2010, 16h40
  4. Inclure fichier html dans jsp
    Par Shixz dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 30/06/2008, 18h19
  5. [langage] Problème de taille de fichier à mettre dans
    Par And_the_problem_is dans le forum Langage
    Réponses: 10
    Dernier message: 13/08/2002, 10h41

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