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

Frameworks Web Java Discussion :

UrlRewrite : masquer les paramètres ?


Sujet :

Frameworks Web Java

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut UrlRewrite : masquer les paramètres ?
    Bonjour à tous,


    j'ai une application web utilisant struts & spring entre autre.

    Mon problème :
    j'ai actuellement des pages avec des liens du style :
    href="/monRep/maPage.do?mesParams"

    et je voudrais pourvoir changer l'url dans la barre d'adresse pour que l'utilisateur ne vois pas les paramètres, et même pouvoir changer le nom de la page pour un nom plus explicite pour lui.

    J'ai trouvé http://tuckey.org/urlrewrite/ qui permet de modifier les urls à l'aide de filtre, mais soit je n'ai pas compris comment m'en servir, soit ça ne m'aide pas à résoudre mon problème (le plus important étant de cacher mes paramètres à l'utilisateur).

    Alors est-il possible de faire ce que je souhaite ?
    Et si oui, comment ?




    edit :
    J'ai trouvé un article à propos de la librairie ci-dessus, et je cite :


    ce qui est est dans l'idée de ce que je voudrais faire...mais dans la pratique je ne vois pas comment! Dans tous les exemples officiels qu'ils fournissent je n'ai rien trouvé qui corresponde à cela, ça me recolle mes paramètres après l'url que j'indique.

    Plus qu'une redirection, je cherche plutôt un masque, pourvoir mettre un URL "fictive" pour l'affichage.


    Merci de votre aide.

  2. #2
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 151
    Points : 85
    Points
    85
    Par défaut
    Bon,
    j'ai trouvé un article intéressant dont je me suis inspiré :
    http://blog.gomilko.com/2007/07/16/p...ewrite-filter/

    J'ai donc créé des règles similaire adapté à mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <rule>
       <from>^(.*)?numeroPage=(.*)$</from>
       <run class="com.web.utils.RequestToAttributeSetter">
          <init-param>
              <param-name>parameterName</param-name>
              <param-value>numeroPage</param-value>
          </init-param>
       </run>
    </rule>
    <rule>
       <from>^(.*)?numeroPage=(.*)$</from>
       <to type="redirect">$1</to>
    </rule>
    La classe Java:
    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
     
    public class RequestToAttributeSetter {
     
        private String parameterName;
     
        public void run(ServletRequest request, ServletResponse response) {
            if (parameterName != null) {
                Object value = request.getParameter(parameterName);
                request.setAttribute(parameterName, value);
            }
        }
     
        public void init(ServletConfig config) {
            this.parameterName = config.getInitParameter("parameterName");
        }
     
        public void destroy() {
        }
    La règle est reconnue, ma classe java exécuté, et le paramètre bien passé en attribut. Parfait !

    Enfin presque... en effet j'ai observé que 2 résultats :
    1 - j'ai bien mon objet request avec mon nouvel attribut, mais j'ai toujours les paramètres dans ce même objet request, que je ne peux pas retirer, et il me les recollent tout seul dans l'url...

    2 - je perd mon objet request au moment do forward/redirect > je n'ai donc plus rien en paramètre/attribut. Je n'ai pas encore trouvé comment j'était tombé sur ce cas de figure...



    Des suggestions?

  3. #3
    Candidat au Club
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Bon le Urlrewrite de tukey, je connais un peu, je m'en sert pour qq'uns de mes sites

    Alors bon je te donne la méthode dont je m'en sert par exemple pour mon site http://www.arabicvista.com :

    au niveau du fichier /WEB-INF/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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <filter>
    	<filter-name>UrlRewriteFilter</filter-name>
    	<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    	<init-param>
    		<param-name>confPath</param-name>
    		<param-value>/WEB-INF/urlrewrite.xml</param-value>
    	</init-param>
    </filter>
    <filter-mapping>
    	<filter-name>UrlRewriteFilter</filter-name>
    	<url-pattern>/*</url-pattern>
    	<dispatcher>REQUEST</dispatcher>
    </filter-mapping>
    <servlet>
    	<display-name>Dispatcher</display-name>
    	<servlet-name>Dispatcher</servlet-name>
    	<servlet-class>com.arabicvista.web.Dispatcher</servlet-class>
    ... (les init params quoi)
    </servlet>
    <servlet-mapping>
    	<servlet-name>Dispatcher</servlet-name>
    	<url-pattern>/DSP/*</url-pattern>
    </servlet-mapping>
    En gros le <url-pattern>/*</url-pattern> indique que toutes les urls seront filtrés par le UrlRewriteFilter
    la config indique le chemin de configuration de l'urlrewrite cad /WEB-INF/urlrewrite.xml dont voici une partie du contenu dans mon cas:

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
    <urlrewrite>
     
    	<rule enabled="true">
    		<from>^/DSP/$</from>
    		<to type="redirect">/</to>		
    	</rule>
     
    	<rule enabled="true">
    		<from>^/DSP/(.*).do$</from>
    		<to type="redirect">/$1.do</to>
    	</rule>
     
    	<rule enabled="true">
    		<from>^/$</from>
    		<to type="forward">/DSP/index.do</to>
    	</rule>
     
    	<rule enabled="true">
    		<from>^/(.*).do$</from>
    		<to type="forward">/DSP/$1.do</to>
    	</rule>
    ...
    </urlrewrite>
    le principe consiste à ecrire des rules où tu indique le "from", qui est l'url d'origine et le "to" qui est l'url de destination. Le champ "to" possede un attribut "type" qui peux avoir deux valeur: "redirect", qui indique qu'un redirection sera effectuée, et "forward" qui indique qu'il y aura un forward interne sans redirection ou réecriture de l'url.
    Dans mon cas par exemple, celà indique que lorsqu'on appel l'url monsite/test.do le client ne sera pas redirigé, mais les paramètres seront forwardés à /DSP/test.do, sachant que au niveau de mon web.xml cité plus haut /DSP/* est l'url-pattern qui correspond à ma servlet Dispatcher.
    Au niveau de ma servlet Dispatcher je traite les urls de cette façon:
    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
     
    public void doGet(HttpServletRequest request, HttpServletResponse response)	throws ServletException, IOException {
    String action = request.getPathInfo();
    String methode = request.getMethod().toLowerCase();
    if(action.equals("/index.do") || action.equals("/")) {
    	doIndex(request, response);
    		return;
    }
    if(action.equals("/dologin.do") && methode.equals("post")) {
    	if(connected == true) {
    		response.sendRedirect("index.do");
    	} else {
    		doValidateLogin(request, response);
    	}
    	return;
    }
    if(action.equals("/login.do")) {
    	if(connected == true) {
    		response.sendRedirect("index.do");
    	} else {
    		doLogin(request, response);
    	}
    return;
    }
    ...
    }
    private void doIndex(HttpServletRequest request, HttpServletResponse response)	throws ServletException, IOException {
    getServletContext().getRequestDispatcher("/WEB-INF/jsptemplates/index.jsp").forward(request, response);
    }
    Enfin ... dans ton cas tu pourrai avoir plusieurs servlets et plusieurs mappings de servlets etc ...
    J'espère que ça te sera utile

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

Discussions similaires

  1. Commande pour masquer les paramètres d'un shell
    Par doudou8mc dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 17/03/2015, 15h28
  2. Masquer les paramètres d'une url
    Par momoh dans le forum VB.NET
    Réponses: 4
    Dernier message: 21/03/2010, 16h15
  3. [URL Rewriting] Masquer les paramètres GET
    Par remyli dans le forum Apache
    Réponses: 8
    Dernier message: 12/03/2008, 17h50
  4. Réponses: 3
    Dernier message: 31/05/2007, 02h41
  5. Est il possible de masquer les paramètres GET ou POST?
    Par samsso2006 dans le forum Langage
    Réponses: 15
    Dernier message: 18/04/2007, 10h44

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