Est-il possible de modifier à la volée l'URL d'une HttpServletRequest?

Est-il possible de modifier à la volée l'URL d'une HttpServletRequest? - Java - Programmation

Marsh Posté le 26-05-2009 à 16:45:45    

Salut à tous,
 
Je bosse sur une appli web hébergée sous Tomcat.
 
Il est imposé que figure dans l'URL une information métier.
 
Par exemple :
 

Code :
  1. http://serveur:8080/monAppli/infoMetier/page.jsp


 
La raison est simple, des filtres sont ensuite appliqués sur l'URL pour des raisons de sécurité.
 
Le choix de l'information métier s'effectue sur la page d'accueil qui redirige ensuite sur la bonne URL (incluant l'info métier sélectionnée au préalable).
 
Pour gérer ça, je n'ai rien trouvé de mieux que de faire une bidouille au niveau du server.xml de Tomcat :
 

Code :
  1. <Context path="/monAppli/infoMetier_1" docBase="cheminVersMonAppli"/>
  2. <Context path="/monAppli/infoMetier_2" docBase="cheminVersMonAppli"/>
  3. <Context path="/monAppli/infoMetier_3" docBase="cheminVersMonAppli"/>
  4. ...


 
Vous remarquerez que le docBase est identique pour chaque URL, ce qui signifie que les différentes URL atterrissent sur le même code.
 
C'est bête car cela revient à charger plusieurs fois la même application web.
 
J'ai pensé me brancher sur un bout de code pour systématiquement récupérer l'URL et la modifier à la volée mais ce n'est pas si simple. Je ne vois rien qui me permette de faire ça au niveau de l'objet HttpServletRequest.
 
Auriez-vous une solution plus élégante ? :jap:


Message édité par schumacher le 26-05-2009 à 16:47:35
Reply

Marsh Posté le 26-05-2009 à 16:45:45   

Reply

Marsh Posté le 26-05-2009 à 17:35:56    

Reply

Marsh Posté le 26-05-2009 à 18:32:47    


 
Lien très intéressant, merci. :jap:  
 
En fait j'utilise déjà une Servlet Filter pour gérer les utilisateurs et les droits d'accès à mon appli.
 
Problème, voilà ce qui est mis à ma disposition :
 

Code :
  1. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
  2. {
  3. }


 
Je suis capable de récupérer l'URL de la requête :
 

Code :
  1. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
  2. {
  3.   HttpServletRequest httpRequest = (HttpServletRequest) request;
  4.   String url = httpRequest.getRequestURL().toString();
  5. }


 
J'ai bien vu sur ton lien qu'on pouvait modifier l'encoding, rajouter des paramètres, ... mais je ne vois rien qui me permette de modifier à la volée l'URL.
 
On ne peut pas faire grand chose finalement avec ce HttpServletRequest : http://java.sun.com/j2ee/1.4/docs/ [...] quest.html :cry:


Message édité par schumacher le 26-05-2009 à 18:34:40
Reply

Marsh Posté le 26-05-2009 à 19:22:45    

tu peux las wrapper et changer ce que tu veux dedans, overrider les methodes que tu veux ( http://java.sun.com/j2ee/1.4/docs/ [...] apper.html )
tu peux aussi forwarder la request vers ce qui va bien etc

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed