Ben là, j'ai pas d'idée... :( C'est bien Tomcat qui n'est pas content (vas voir dans les logs de Tomcat) ou Apache, si tu as Apache en frontal de Tomcat ?
Version imprimable
Ben là, j'ai pas d'idée... :( C'est bien Tomcat qui n'est pas content (vas voir dans les logs de Tomcat) ou Apache, si tu as Apache en frontal de Tomcat ?
Je vais te montrer ce que j'ai developpé jusqu'a mtn :
Avec ca je recupère l'adresse url!!!!Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { try { HttpServletRequest request = (HttpServletRequest) servletRequest; String url = request.getRequestURL().toString(); request.setAttribute("urlByFilter", url); filterChain.doFilter(servletRequest, servletResponse); } catch (Throwable e){} }
Donc après ca si tu pouvais un peu me guider pour renvoyer une requete qui correspond au produit demandé!!
C'est quoi ton idée ? J'ai pas compris. Pour moi, le pb se joue au niveau du servlet mapping : si Tomcat n'appelle pas le servlet Produit sur les URL du type /Produit/MonProduit, tu seras obligé de passer par une redirection du client vers /Produit?id=... et ce n'est pas ce que tu veux.
A ta place, pour le moment, j'oublierais le filtre d'autant plus qu'à la limite, comme je disais plus tôt, tu n'es pas obligé d'utiliser un filtre. Essaie plutôt de voir comment faire pour que Tomcat déclanche systématiquement le servlet Produit sur toutes les URL commençant par /Produit. Quand ça ce sera bon, on réfléchira à la suite.
Essaie différents URL patterns : /Produit* et /Produit/*
Tu parles bien du servlet mapping du produit???
Car j'ai un filter mapping et dedans je lui mets un servlet name qui reference Produit
C'est bon avec les mapping, c'etait /Produit/* ... :D
Donc maintenant comment je dis au server qu'il faut qu'il ignore cet URL et prenne enfait l'id (/Produit?id=...) et laisse affiché l'URL (/Produit/NomProduit)??
Oui, je parle bien du servlet mapping. Je répète ce que j'ai dit : oublie le filtre pour le moment. Le but de la manip c'est de faire déclancher le servlet Produit pour les URL /Produit/MonProduit et /Produit?id=...
Fais voir ton fichier web.xml.
web.xml
Et la il m'appel bien le servlet ProduitCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <filter> <filter-name> UrlFilter</filter-name> <filter-class>com.abw.servlets.UrlFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlFilter</filter-name> <servlet-name>Produit</servlet-name> </filter-mapping> <servlet-mapping> <servlet-name>Produit</servlet-name> <url-pattern>/Produit/*</url-pattern> </servlet-mapping>
Cool. Maintenant, le truc c'est de passer de MonProduit à l'ID du produit. Ca, tu dois savoir le faire. La question, c'est où le faire. Tu as 2 possibilités :
- Tu conserves le filtre et tu le fais dans le filtre
- Tu abandonnes le filtre et tu le fais dans le servlet
L'intérêt du filtre c'est de faire le boulot de manière transparente, mais ce n'est intéressant que si tu as plusieurs servlets. Si tu n'as qu'un seul servlet, ça sert à rien de s'embêter avec un filtre. Dans tous les cas, pour des raisons de simplicité, je commencerais par coder dans le servlet. Après, tu externaliseras le traitement dans un filtre si ça te fait plaisir.
Pour récupérer la chaîne NomProduit, regarde du côté de request.getPathInfo().
j'ai réussi à renvoyer la page sur la page voulu mais il ne me prend plus en compte la CSS, les JS .... Et avt par exemple j'avais un lien accueil qui renvoyé l'URL /test/main.jsp et mtn il me fait /test/Produit/main.jsp; je ne comprends plus????????
Bizarre... T'as fait une config spécial dans Apache ou Tomcat ? Ca ressemble à une config d'URL rewriting trop permissive.
Non je n'ai rien toucher au config du server !!!
Je suis perdu :( je croyai avoir compris et la ...
Enfait il laisse toujour /Produit dans l'url, et jvois pas comment le supprimer ou l'empecher :s
Le pb, c'est quoi ? Ce sont les URL dans la page qui sont fausses ou bien elles sont justes ?Citation:
Envoyé par ohhh.gringo