Jsp to jsp : transférer des données entre deux pages simplement et sans erreur
Sommaire
Pour transférer des données d’une page JSP vers une autre, la méthode la plus propre consiste généralement à utiliser request.setAttribute() avec un forward côté serveur. Pour des données simples et non sensibles, les paramètres d’URL peuvent suffire. Pour conserver une donnée sur plusieurs pages, la session peut être utilisée avec prudence.
Le bon choix dépend surtout de trois critères : la sensibilité de la donnée, sa durée de vie et son type. Voici les méthodes JSP to JSP à connaître, avec leurs cas d’usage, leurs limites et les bonnes pratiques pour éviter les erreurs fréquentes.
Jsp to jsp : quelle méthode choisir pour transférer des données ?
Avant d’écrire du code, il faut choisir le bon mécanisme. C’est là que beaucoup d’erreurs commencent. En pratique, request est le meilleur choix pour un transfert ponctuel, URL pour une donnée simple et visible, et session pour une information qui doit survivre à plusieurs pages.
Voici un repère rapide :
| Méthode | Visibilité | Durée de vie | Cas idéal | Limite principale |
|---|---|---|---|---|
request.setAttribute() + forward |
Côté serveur | Une requête | Message, objet, liste, résultat de formulaire | Perdu après redirection |
| Paramètre d’URL | Visible dans le navigateur | Tant que l’URL est utilisée | Id, filtre, page, tri | Peu sécurisé, limité aux chaînes |
session.setAttribute() |
Côté serveur | Toute la session | Utilisateur connecté, panier | Risque d’abus mémoire et de confusion |
Jsp to jsp avec request.setAttribute() : le choix recommandé côté serveur
C’est la méthode la plus propre dans la majorité des cas. Vous stockez une donnée dans la requête, puis vous la transmettez à une autre JSP sans l’exposer à l’utilisateur.
Elle fonctionne très bien pour :
- un message de confirmation
- un objet Java
- une liste de résultats
- les données d’un formulaire validé
L’intérêt est simple : la donnée reste côté serveur. Elle n’apparaît pas dans l’URL. Elle ne dépend pas de la navigation du navigateur. C’est donc la meilleure option quand vous cherchez un transfert fiable entre deux pages JSP.
Jsp to jsp avec paramètres d’URL : utile pour les données simples
Les paramètres d’URL servent surtout à transmettre une information courte et non sensible, par exemple :
<a href="details.jsp?id=123&cat=mobile">Voir le produit</a>
Dans la page suivante, vous récupérez la valeur avec request.getParameter().
Cette approche est pratique pour :
- un identifiant
- un filtre
- une page
- un tri
En revanche, elle a des limites claires : les données sont visibles, partageables, enregistrées dans l’historique et parfois dans les logs serveurs. Donc pas de mot de passe, pas de données personnelles, pas d’informations métier sensibles.
Jsp to jsp avec session : à réserver aux données persistantes
La session est utile quand la donnée doit rester disponible sur plusieurs pages. Exemple classique : un utilisateur connecté ou un panier.
Vous pouvez y stocker une valeur avec session.setAttribute(), puis la relire plus tard depuis n’importe quelle page de la même session.
Mais attention : la session ne doit pas devenir un tiroir fourre-tout. Trop de données en session compliquent le débogage, consomment de la mémoire et créent des effets de bord difficiles à suivre.

Jsp to jsp avec request et forward : l’exemple le plus propre
Si vous voulez une solution simple, lisible et robuste, partez sur request + forward. C’est la base d’un transfert JSP to JSP bien fait.
Créer la donnée dans la première page JSP
Imaginons que vous affichiez un message après une action :
<%
request.setAttribute("message", "Commande enregistrée avec succès");
%>
Vous pouvez aussi passer un objet :
<%
request.setAttribute("client", client);
%>
Cette approche fonctionne pour transmettre plus qu’une simple chaîne de caractères. C’est un vrai avantage par rapport à l’URL.
Transférer la requête avec jsp:forward
Ensuite, vous envoyez la requête vers la seconde page avec :
<jsp:forward page="confirmation.jsp" />
La différence avec une redirection HTTP est importante :
- avec forward, le serveur transfère la requête en interne
- avec redirect, le navigateur repart vers une nouvelle URL
Résultat : avec forward, la donnée de request reste disponible. Avec une redirection, elle est perdue.
C’est pour cela que jsp:forward est souvent le bon réflexe quand vous avez besoin d’enchaîner deux JSP sans casser le contexte.
Lire la donnée dans la seconde page JSP
Dans la page cible, vous pouvez lire la donnée avec :
<%= request.getAttribute("message") %>
Mais en pratique, il vaut mieux éviter les scriptlets. Préférez Expression Language :
${message}
C’est plus propre, plus lisible et plus conforme aux pratiques web modernes. Si votre page contient beaucoup de logique Java, c’est souvent le signe qu’il faut déplacer ce travail vers une servlet ou un contrôleur avant d’arriver dans la JSP.
Jsp to jsp avec URL, formulaire ou session : cas d’usage concrets
Toutes les situations ne justifient pas le même mécanisme. Le bon transfert JSP to JSP dépend du scénario réel.
Jsp to jsp avec paramètre GET dans l’URL
C’est la solution la plus simple quand la donnée est publique et courte.
Exemple :
<a href="produit.jsp?id=42">Voir le produit</a>
Puis dans produit.jsp :
<%= request.getParameter("id") %>
Vous pouvez aussi l’utiliser pour des filtres ou des recherches :
search.jsp?mot=ia
Mais gardez une règle stricte : si la donnée est sensible, évitez l’URL. Une URL peut être copiée, partagée, enregistrée et interceptée plus facilement qu’une valeur côté serveur.
Jsp to jsp avec formulaire POST
Le formulaire est plus adapté que le GET quand l’utilisateur saisit une information.
Exemple :
<form action="traitement.jsp" method="post">
<input type="text" name="nom">
<button type="submit">Envoyer</button>
</form>
Ensuite :
<%= request.getParameter("nom") %>
Le POST est plus discret que le GET, mais il ne rend pas la donnée “sécurisée” pour autant. Il faut toujours valider côté serveur. Le POST change surtout le mode d’envoi, pas la confiance que vous pouvez accorder à la donnée reçue.
Jsp to jsp avec session.setAttribute()
La session devient utile quand la donnée doit être réutilisée sans être renvoyée à chaque fois.
Exemple :
<%
session.setAttribute("username", "julien");
%>
Puis plus tard :
${sessionScope.username}
C’est pratique pour :
- conserver un profil utilisateur
- gérer un panier
- mémoriser un état de connexion
En revanche, pensez à nettoyer la session quand la donnée n’est plus utile :
<%
session.removeAttribute("username");
%>
C’est un réflexe simple, mais utile pour éviter les incohérences et les données qui “traînent” trop longtemps.

Jsp to jsp : erreurs fréquentes et bonnes pratiques
C’est ici que se joue la qualité du code. Beaucoup de projets JSP fonctionnent “au début”, puis deviennent fragiles parce que les données circulent mal.
Ne jamais mettre de données sensibles dans l’URL
C’est l’erreur la plus courante. Une URL est visible. Donc :
- pas de mot de passe
- pas d’adresse sensible
- pas de données confidentielles
- pas de token fragile sans protection adaptée
Même pour un simple identifiant, posez-vous la question : est-il acceptable que l’utilisateur le voie et le manipule ?
Éviter les scriptlets JSP dans le code moderne
Les scriptlets comme <% ... %> restent visibles dans beaucoup de vieux projets, mais ce n’est pas la meilleure pratique.
Préférez :
- JSTL
- Expression Language
- une logique métier portée par une servlet ou un contrôleur
Pourquoi ? Parce qu’une JSP doit rester lisible. Elle doit afficher, pas porter toute la logique applicative.
Choisir la bonne portée : request, session ou application
La portée, ou scope, change tout.
- request : la donnée vit le temps d’une requête
- session : la donnée vit pour un utilisateur pendant sa session
- application : la donnée est partagée par tous les utilisateurs
Si vous choisissez mal, vous obtenez des bugs étranges, des données écrasées ou des comportements imprévisibles.
En pratique, retenez ceci :
- request pour un transfert ponctuel JSP to JSP
- session pour un état utilisateur
- application uniquement pour des données globales rares et maîtrisées
Jsp to jsp : checklist rapide avant de coder
Avant de choisir votre méthode, vérifiez ces points :
- La donnée est-elle sensible ?
- Doit-elle survivre à une simple navigation ?
- Est-elle un objet, une chaîne ou un simple identifiant ?
- Le passage doit-il rester côté serveur ?
- Une redirection est-elle vraiment nécessaire ?
Si la réponse est “non” à la persistance et “oui” au besoin de sécurité, alors request + forward est presque toujours le bon choix.
FAQ
Quelle est la meilleure méthode pour passer une donnée JSP to JSP ?
La méthode la plus recommandée est request.setAttribute() avec jsp:forward, car elle garde les données côté serveur et permet de transmettre des objets Java.
Quelle différence entre request.setAttribute() et request.getParameter() ?
request.setAttribute() transmet une donnée côté serveur, souvent avant un forward. request.getParameter() récupère une donnée envoyée par le client, par exemple dans une URL ou un formulaire.
Peut-on passer un objet Java complet d’une JSP à une autre ?
Oui, avec request.setAttribute() ou session.setAttribute(). Les paramètres d’URL ne permettent de transmettre que des chaînes de caractères.
Faut-il utiliser session pour transférer des données JSP to JSP ?
Seulement si la donnée doit rester disponible sur plusieurs pages ou pendant toute la session utilisateur. Pour un simple transfert ponctuel, request est préférable.
En bref, pour un transfert JSP to JSP fiable, utilisez request.setAttribute() avec jsp:forward dans la majorité des cas. Réservez les paramètres d’URL aux données simples et publiques, et la session aux informations réellement persistantes. Pour aller plus loin, structurez votre code en MVC afin de garder des JSP lisibles, sécurisées et faciles à maintenir.