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 :

Problème CSS et mapping servlet


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Par défaut Problème CSS et mapping servlet
    Bonjour,

    Voici plusieurs jours que je suis confronté à un problème de redirection de servlet.

    J'ai un frontcontroller qui centralise toutes les redirections vers la page JSP correspondante en fonction de l'url.
    Ainsi donc, un utilisateur tapant l'URL www.monsite.fr/index sera redirigé vers la page index.jsp par exemple comme il se doit
    J'ai aussi un layout qui me servira de masterPage, et c'est dans celui-ci que je référence le css (je suis absolument sûr de mon chemin d'accès car ca marche dans certains cas) :href='<%=request.getContextPath()%>/view/css/ThemeDuSite/style.css'

    Pour mapper ma servlet j'ai donc utilisé dans mon web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	<servlet>
    		<servlet-name>front</servlet-name>
    		<servlet-class>controller.FrontController</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>front</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    Et malheureusement, ce mapping accepte toutes les requêtes envoyées par le client y compris le http://www.monsite.fr/view/css/ThemeDuSite/style.css
    Il recharge donc la page et le css n'est pas pris en compte.
    En revanche si dans mon mapping je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<servlet-mapping>
    		<servlet-name>front</servlet-name>
    		<url-pattern>/index</url-pattern>
    	</servlet-mapping>
    Dans ce cas cela fonctionne, car l'url du css est différente de "/index"

    N'existe-t-il pas un moyen de filtrer une url afin qu'elle ne soit pas redirigée par la servlet? ( et que la page ne soit pas rechargée)
    L'idée serait de faire quelque chose d'équivalent à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	<servlet-mapping>
    		<servlet-name>front</servlet-name>
    		<url-pattern>/</url-pattern>
                    <exclude>*.css</exclude>
    	</servlet-mapping>
    J'ai vu des tas de post la dessus, mais aucun ne correspond réellement à mon cas.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ce que tu cherches à faire correspond plus à un filtre qu'à une servlet, tu devrais regarder ce point.
    Sinon, pour ton problème, tu peux modifier l'url pattern en "*.jsp"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Habituellement, la racine "/" est conservée pour éviter les mapping justement anarchique comme tu as. Je te conseillerai, au combien, de mapper FrontController avec un mapping genre "/<folder>/*"....
    Si tu souhaites faire comme tu dis -et que tu veux te retrouver dans la panade plus tard, mais c'est mon avis personnel :
    - ajoute un <param> dans la déclaration du servlet et inclure la liste des ressources à exclure du mapping,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <param name="exclude" value="*.css"/>
    Ensuite, c'est ton FrontController qui fera l'exclusion et retournera la ressources comme tu souhaites.
    Enfin, attention à ton architecture, peut-être que le "redirect" est pas ta solution, et la maintenance futur de ton projet.

  4. #4
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Par défaut
    En fait j'ai trouvé : voici ce que j'ai mis dans le web.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <servlet>
    <servlet-name>front</servlet-name>
    <servlet-class>controller.FrontController</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>front</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/view/css/*</url-pattern>
    </servlet-mapping>
    Et cela fonctionne. Comme le souci va se reproduire pour toutes les ressources se trouvant sur le client, le mieux est bien sur de créer un répertoire ressources et de mapper le default sur ce répertoire qui contiendra : les images, les css, les js etc.

    En tout cas merci de votre aide.

  5. #5
    Membre émérite Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Par défaut
    Je ne saurais trop te conseiller d'écrire le mapping de default AVANT Front !
    Peut-être un résolu ?
    Merci pour le retour.

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/07/2012, 21h08
  2. problème avec le css et les servlet
    Par missyos dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/04/2008, 11h10
  3. problème css avec :focus
    Par dervish dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 28/09/2004, 16h18
  4. [tomcat]mapping servlet
    Par nad dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 01/07/2004, 14h22
  5. Problème avec memory mapping
    Par gemai dans le forum C
    Réponses: 13
    Dernier message: 04/07/2003, 09h50

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