Supprimer les jsessionid dans les url et pretty faces pour le référencement

Supprimer les jsessionid des urls pour un meilleur référencement de vos pages dans les applications JEEJava Entreprise Edition

Pierre LISERON
Mis à jour le 24 Janv 2024

Le problème des jsessionid dans les urls

Comportement des jsessionid

Ceci nest pas un bug mais le fonctionnement de base de JEEJava Entreprise Edition qui crée une session. Ne sachant pas si le navigateur du client possède la fonctionnalité des cookies, java préfère passer la session dans lurl. 

url_jsessionid.jpg

Problème pour le référencement

La solution

Pour ce faire, il suffit de créer un filter comme expliqué dans lexcellent post suivant:

http://java.dzone.com/articles/java-jsessionid-harmful

Le filter java

Créer une classe java suivante:

public class URLSessionFilter implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        if (!(request instanceof HttpServletRequest)) {
            chain.doFilter(request, response);
            return;
        }

        HttpServletResponse httpResponse = (HttpServletResponse) response;

        HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(
                httpResponse) {
            public String encodeRedirectUrl(String url) {
                return url;
            }

            public String encodeRedirectURL(String url) {
                return url;
            }

            public String encodeUrl(String url) {
                return url;
            }

            public String encodeURL(String url) {
                return url;
            }
        };
        chain.doFilter(request, wrappedResponse);
    }

    public void init(FilterConfig filterConfig) {
    }

    public void destroy() {
    }
}

Le fichier web.xml

Et renseigner ce filter dans votre web.xml:

<filter>        
    <filter-name>URLSessionFilter</filter-name>
    <filter-class>com.framework.filter.URLSessionFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>URLSessionFilter</filter-name>     
    <url-pattern>/*</url-pattern>
</filter-mapping> 

Cest tout! Le paramètre jsessionid disparait tout simplement des urls lors de la première connexion.

Filter et pretty faces

Attention néanmoins si vous utiliser pretty faces, il est important de placer ce filter avant le filter de prettry faces, sinon pretty-faces sera comme désactivé.

Pour aller plus loin

JAVA vs PHP pour la création d'une application web ou site web

Dans cet article, nous allons comparer de la manière la plus objective possible deux langages et technologies de programmation pour la réalisation d&rsquo;un site web ou d&rsquo;une application web.

Small right arrow

4 bonnes pratiques pour une transformation digitale ETI réussie

Lorsque l’on souhaite se lancer dans une transformation digitale en tant qu’ETI, il y a plein de paramètres à prendre en compte pour une transformation digitale ETI réussie : la stratégie, l’organisation, la technique, la mobilisation des équipes, etc. ! Après avoir eu l’occasion d’accompagner plusieurs ETI sur ce sujet, nous avons pu vivre des stratégies et des histoires différentes, et donc, dégager des enseignements croisés pour faire mieux. A nos yeux, justement, l’un des points fondamentaux pour faire de votre transformation digitale ETI une réussite est de faire adhérer les équipes à des valeurs communes. Nous avons donc dégagé 4 valeurs à diffuser au sein de votre entreprise que nous avons le plaisir de vous partager dans cet article.

Small right arrow

DSI : un levier stratégique pour la transformation numérique des entreprises

La Direction des Systèmes d'Information (DSI) joue aujourd'hui un rôle stratégique dans la réussite de la transformation numérique des entreprises. Loin d'être un simple support technique, la DSI moderne est un acteur central, qui porte la stratégie IT, structure la gouvernance numérique, et garantit l'alignement entre les métiers et le système d'information.

Small right arrow