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

API standards et tierces Java Discussion :

Transformer de façon propre une URL (plus simple qu’un substring)


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut Transformer de façon propre une URL (plus simple qu’un substring)
    Bonjour,
    Je cherche un moyen simple et propre de remplacer le dernière élément d’une URL (le bout qui désigne le fichier pointer) donc le réorientes vére une page qui se trouve sur le même dossier que je connais préalablement
    Voilà comment je récupéré mon URL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
            StringBuffer path2 = request.getRequestURL();
            System.out.println("-------path2------: " + path2);
    Voilà UN exemple de résultant (dans le console)
    INFO: -------path2------: http://localhost:8080/Administration-war/faces/administration/refGestion/sp/pageCrud.xhtml[/url]
    Je voudrais donc transformait le “ pageCrud .xhtml” par “pageModif.xhtml” quel sont les façons de faire.

    Merci d’avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Je pense pas qu'il y ait bien plus propre que juste changer la portion après le dernier /
    Ce qui consiste donc à récupérer le dernier slash et tout ce qu'il y a avant, puis d'y ajouter le nom de fichier.

    Ce qui peut se faire de deux façons :

    - chercher le dernier / avec lastIndexOf() et faire substring() sur tout ce qu'il y a avant.

    - extraire la regex ".*/" de l'URL avec Matcher.find()

  3. #3
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    OK MERCI

    que dit vous de cette solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public StringBuffer currentUrlModifiPage(){
            HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
            StringBuffer urlCurrent = request.getRequestURL();
            int lastIndex = urlCurrent.lastIndexOf("/");
            int sizeUrl = urlCurrent.length();
     
            return ( urlCurrent.replace(lastIndex, sizeUrl, "/pageModif.xhtml") );
        }

  4. #4
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Bonjour,
    ta méthode est bonne, mais tu peux aussi utiliser URL ou URI
    Par exemple pour URL, tu peux utiliser la méthode getFile() ou getPath() pour récupérer directement le dernier élément (avec ou sans l'ancre)
    Par exemple:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    new URL("http://domain.com/foo/bar.xml").getPath();
    retournera ---> bar.xml

    NB: Selon moi, ta méthode est dangereuse (voire fausse) si tu as une URL du genre
    ou
    le(s) dernier(s) slash te donneront des faux positifs je pense

    Cordialement,

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Citation Envoyé par geforce Voir le message
    que dit vous de cette solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public StringBuffer currentUrlModifiPage(){
            HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
            StringBuffer urlCurrent = request.getRequestURL();
            int lastIndex = urlCurrent.lastIndexOf("/");
            int sizeUrl = urlCurrent.length();
     
            return ( urlCurrent.replace(lastIndex, sizeUrl, "/pageModif.xhtml") );
        }
    Pourquoi pas, bien que je ne vois pas en quoi le StringBuffer aide à quoi que ce soit. (On préférera un StringBuilder, d'ailleurs : ils ne sont pas synchronisés, eux.)

    Citation Envoyé par paissad Voir le message
    mais tu peux aussi utiliser URL ou URI
    Par exemple pour URL, tu peux utiliser la méthode getFile() ou getPath() pour récupérer directement le dernier élément (avec ou sans l'ancre)
    Par exemple:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    new URL("http://domain.com/foo/bar.xml").getPath();
    retournera ---> bar.xml
    Euh ? Non... C'est pas vrai.

    Par ailleurs, ce qui est demandé, c'est pas le dernier élément, c'est tout sauf le dernier élément, nuance.

    À ma connaissance ni URL ni URI ne permettent de "remonter d'un cran dans le path", ce qui est bien dommage vu que les URIs relatives fonctionnent comme ça, et que ça aiderait bien à les gérer.

    Citation Envoyé par paissad Voir le message
    NB: Selon moi, ta méthode est dangereuse (voire fausse) si tu as une URL du genre
    ou
    le(s) dernier(s) slash te donneront des faux positifs je pense
    À gérer si besoin, oui, vérifier que ça se termine pas par un /
    La définition des URIs relatives parle en effet de ce point.
    Mais bon, c'est pas le cas des exemples montrés.

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Une rewrite rule sur le serveur apache que tu auras bien sûr mis en front de ton serveur d'application java, c'est ce qu'il y aurait de plus propre.

    Serveur apache qui devrait également servir tout le contenu statique de ton application (genre images, CSS & cie).

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    il suffit de créer un Objet URI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uri = new URI("http://...../path/foo/bar.ext");
    de récupérer le path
    et d'extraire tout sauf le dernier élément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        int sep = path.lastIndexOf(java.io.FIle.pathSeparatorChar);
    fullPath = path.substring(0, sep);
    mais je suis d'accord sur le fait que mieux vaut configurer son serveur web correctement que d'écrire un bout de code.
    A+JYT

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/05/2013, 16h31
  2. [Prototype] Ecrire de façon plus propre une ligne de code
    Par baggie dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 12/06/2012, 11h29
  3. Une ecriture plus simple ?
    Par krislec dans le forum Langage
    Réponses: 9
    Dernier message: 10/10/2011, 18h01
  4. Transformer une URL en chemin windows
    Par Wells dans le forum VB.NET
    Réponses: 6
    Dernier message: 26/10/2007, 10h56
  5. [JDOM] Moyen le plus simple de valider une trame XML que l'on vient de créer ?
    Par scougirou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 15/06/2007, 14h16

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