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

Tomcat et TomEE Java Discussion :

probleme url pattern /


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 48
    Par défaut probleme url pattern /
    Bonjour a tous,
    je vous explique mon soucis, j'ai dans mon appli le besoin d'acceder une image dans un jsp via une simple balise img, mon probleme est le suivant:
    Quand l'appli va chercher mon image il passe par le mappage de l'url "/" que j'ai effectivement mapper dans mon web.xml. En fait j'ai l'impression qu'avec le mappage de "/" il considere toutes les url qu'il ne connait pas (.../image.jpeg, ../pouet.pouet, etc...) comme "/" et envoie donc la servlet correspondante, du coup il ne me renvoie pas mon image.
    Est ce que quelqun aurait une idée pour contourner ce problème a part ne pas mapper "/"

    Merci d'avance

  2. #2
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu pourrais nous montrer ton code JSP, ce que tu attends comme résultat et ce que tu as comme résultat? Ta question me semble confuse.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 48
    Par défaut
    Je vais essayer d'etre plus clair j'ai crée un projet en mettant le minimum pour montrer mon probleme.
    J'ai donc mon fichier jsp test.jsp comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!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>
    </head>
    <body>
    	<img src=images/suppr.jpg alt=suppr />
    </body>
    </html>
    mon fichier web.xml comme cela

    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
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>Explication</display-name>
     
    	<servlet>
    		<servlet-name>affichageServlet</servlet-name>
    		<servlet-class>servlet.DoAffichage</servlet-class>
    	</servlet>
     
    	<servlet-mapping>
    		<servlet-name>affichageServlet</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    </web-app>
    la servlet DoAffichage ne fait rien a part renvoyer sur test.jsp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getRequestDispatcher("test.jsp").forward(request, response);

    Maintenant quand je vais sur mon appli localhost:8080/Explication/ j'ai ma page qui se charge mais mon image n'est pas la (j'ai a la place le texte "suppr" comme le stipule ma balise <img>.
    Et quand j'essai de voir directement mon image via localhost:8080/Explication/images/suppr.jpg ca me renvoie l'erreur suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Etat HTTP 404 - /Explication/images/test.jsp
     
    type Rapport d'état
     
    message /Explication/images/test.jsp
     
    description La ressource demandée (/Explication/images/test.jsp) n'est pas disponible.
    Apache Tomcat/6.0.20



    Par contre si dans mon web.xml je remplace la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <url-pattern>/</url-pattern>
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <url-pattern>/toto</url-pattern>
    alors là l'image s'affiche bien dans ma page jsp en appelant localhost:8080/Explication/toto et également quand je l'affiche seul avec localhost:8080/Explication/images/suppr.jpg


    Voila j'espere c'est plus clair de cette facon.
    J'ajoute un war de mon projet si ca peut aider a comprendre
    il se trouve sur http://parra.pierre.free.fr/

    Merci bien

  4. #4
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    "/" est le mapping de la servlet "par défaut" dans un web.xml. Par conséquent tout ce qui ne correspond pas a une autre servlet arrivera dessus. Quand tu ne met rien de particulier comme mapping sur "/" c'est une servlet appartenant au conteneur et servant les ressources qui est utilisées. Mais comme tu a défini ta propre servlet par défaut, c'est elle qui est alors chargée de fournir toutes les ressources (images, html, etc) demandées par les browsers. Tes deux solutions sont donc, je pense

    soit tu modifie ta servlet pour qu'elle retourne les images etc quand on les lui demande
    soit tu mappe ta servlet ailleurs que sur / (ce que je recommanderais )

  5. #5
    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
    Ça me paraît brut de fonderie ta façon d'envisager l'affichage d'une image, si par la suite tu veux mixer image / servlet, ça posera problème vu l'url-pattern "/"

    Tu devrais peut-être envisager l'usage d'un filtre et d'une url commençant par exemple par "/images/..." pour limiter (avec une servlet, ça fonctionnera également)
    Dans le web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <filter>
      <filter-name>ServletImageFilter</filter-name>
      <filter-class>obia.kernel.ServletImageFilter</filter-class>
     </filter>
     <filter-mapping>
      <filter-name>ServletImageFilter</filter-name>
      <url-pattern>/images/*</url-pattern>
     </filter-mapping>
    Dans les pages JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="/images/monImage1.gif" .../>
    A la base, où est ton problème, l'image n'est pas accessible dans le contexte de l'application ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    A la base, où est ton problème, l'image n'est pas accessible dans le contexte de l'application ?
    Son problème c'est le mapping "/" qui cache tout

  7. #7
    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
    Citation Envoyé par tchize_ Voir le message
    Son problème c'est le mapping "/" qui cache tout
    Oui, ça je m'en doute
    Je voulais plutôt l'explication fonctionnelle du besoin
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 48
    Par défaut
    Merci de vos reponses, j'avais bien imaginé que c'etait le mappage de / qui posait probleme, en fait je suis parti d'un tutoriel Java très simple sur le site qui faisait comme ca.
    Je comprends pas trop ta question OButterlin, ce que je peux te dire c'est que mon aplli de base affiche une liste d'objet dans un tableau et sur chaque ligne je met une image/lien pour supprimer l'objet et elle ne s'affiche pas, ca n'empeche pas que l'appli marche mais c'est pas beau....
    Par contre j'ai quelques questions.
    En général l'url "/" n'est pas mappé dans les apllication web java ? Si elle ne l'est pas comment une page "accueil" est elle mis en place ?

    Je ne connais pas du tout l'utilisation des filtres, celui que tu met dans web.xml est un qui existe réellement ou tu l'a mis pour exemple ?

    Les classes filtres sont elles a rajoutés dans les lib? elles sont intégrés de base a tomcat ?

    Merci d'avance pour vos réponses

  9. #9
    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
    Si c'est juste ce type d'utilisation, alors il vaut mieux mettre tes images dans un répertoire (quelque part sous WebContent ou WebRoot) et de référencer l'image comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="./repertoire1/repertoire2/image1.gif" .../>
    ou comme ceci (dans une jsp)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="<%=request.getContextPath()%>/repertoire1/repertoire2/image1.gif" .../>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par kalurar Voir le message
    En général l'url "/" n'est pas mappé dans les apllication web java ?
    Non, car elle réceptionne tout. C'est l'équivalent de "/*"
    Si elle ne l'est pas comment une page "accueil" est elle mis en place ?
    Grace aux entrées welcome-file du web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <?xml version="1.0"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
      <web-app>
              ....
        <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
      </web-app>

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 48
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Non, car elle réceptionne tout. C'est l'équivalent de "/*"

    Grace aux entrées welcome-file du web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <?xml version="1.0"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
      <web-app>
              ....
        <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
      </web-app>

    Ok, mais du coup, comment attribué un traitement (passage dans une servlet) a cette page d'accueil. Je sais je suis chiant

  12. #12
    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
    Et bien le plus simple serait d'avoir une page index.jsp qui ne fasse qu'une redirection vers la servlet qui elle afficherait la page "utile"
    Bref, le schéma est du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    appel de http://monSite:monPort/monAppli/
     
    grâce au welcome-file-list -> index.jsp
     
    -> appel de la servlet (<jsp:forward ...>)
     
    -> envoie de la page (RequestDispatcher)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 48
    Par défaut
    Nickel, c'est parfait!
    Merci beaucoup

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

Discussions similaires

  1. [<url-pattern>] Fonctionnement global
    Par bitardo dans le forum JSF
    Réponses: 8
    Dernier message: 19/07/2007, 15h06
  2. Debian, apache2, probleme url rewriting
    Par gantix dans le forum Réseau
    Réponses: 1
    Dernier message: 03/04/2007, 23h23
  3. Probleme Url rewriting
    Par bat2504 dans le forum Apache
    Réponses: 1
    Dernier message: 15/10/2006, 09h21
  4. [Tableaux] probleme URL !
    Par lecail65 dans le forum Langage
    Réponses: 2
    Dernier message: 20/07/2006, 10h47
  5. [debutant] probleme url comme parametre
    Par orelero dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 13h51

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