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

Optimiser ses requêtes SQL : bonnes pratiques pour les développeurs web

Comment optimiser ses requêtes SQL lorsqu’on est développeur d’applications web ? S’il y a bien une chose qui reste constante dans le développement informatique, c’est que toutes les applications manipulant des données structurées utilisent le SQL. Cette couche est indispensable dès que vous avez besoin de stocker et d’accéder à des données. Ainsi, peu importe le langage ou le framework que vous choisissez pour votre projet, SQL sera toujours présent. Lors des audits de performance que nous effectuons, les principales problématiques que nous rencontrons proviennent d’une mauvaise utilisation des bases de données par les applications. Il est donc crucial de bien maîtriser les principes d’optimisation SQL pour garantir des performances pérennes. Aujourd’hui, nous allons explorer ces différentes optimisations SQL, en particulier dans le cadre du développement d’applications web.

Small right arrow

Tuto : Installation et utilisation de OpenCV sur MacOS avec XCode

Pour ce tuto, nous allons utiliser la version 4.0.1 de OpenCV. Cette installation a été réalisée avec la version 10.1 de [Xcode][1]. On utilisera HomeBrew comme gestionnaire de package.

Small right arrow

JAVA 8 – Map – ComputeIfPresent pour la gestion des caches

Un besoin récurrent en Java 8 est la mise à jour des données à l’intérieur du cache : on veut alors modifier une valeur pour une clé existant dans la Map. C’est à ça que sert la méthode computeIfPresent.

Small right arrow