Atelier N°3 : Transmission de données entre JSP et Servlet
Ce laboratoire permet d'apprendre à transmettre des données entre une JSP et une Servlet dans un environnement J2EE. Il enseigne la différence entre attributs et paramètres de requête, ainsi que les méthodes pour envoyer et récupérer ces données. Pour réaliser cet atelier, il est nécessaire de disposer d'un environnement de développement J2EE avec un serveur supportant les Servlets et JSP.
D'après le document Atelier N°3 : Transmission de données entre JSP et Servlet
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Information Technology · Institut Supérieur des Études Technologiques de Bizerte · PDF · 6 pages
Afficher l'aperçu du document
Ce laboratoire permet d'apprendre à transmettre des données entre une JSP et une Servlet dans un environnement J2EE. Il enseigne la différence entre attributs et paramètres de requête, ainsi que les méthodes pour envoyer et récupérer ces données. Pour réaliser cet atelier, il est nécessaire de disposer d'un environnement de développement J2EE avec un serveur supportant les Servlets et JSP.
Objectifs
- Savoir faire circuler des données entre une JSP et une Servlet.
- Différencier un attribut d'une requête d'un paramètre de requête.
Prérequis et mise en place
- Environnement de développement J2EE configuré (ex : Eclipse, NetBeans, ou autre IDE compatible).
- Serveur d'applications supportant les Servlets et JSP (ex : Apache Tomcat).
- Connaissances de base en Java, Servlets, JSP et protocole HTTP.
Données issues du serveur : les attributs
Cette étape consiste à transmettre des variables de la Servlet vers la JSP en utilisant les attributs de la requête HTTP. L'objectif est de comprendre comment stocker un objet dans la requête côté serveur et le récupérer côté vue.
Dans la Servlet, créez une chaîne de caractères et transmettez-la à la JSP :
public void doGet( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException{
String message = "Transmission de variables : OK !";
request.setAttribute( "test", message );
this.getServletContext().getRequestDispatcher( "/WEB-INF/test.jsp" ).forward(
request, response );
}
Explications :
- La méthode
setAttribute()de l'objetrequestpermet d'enregistrer un attribut dans la requête. - Le premier paramètre est le nom de l'attribut ("test"), le second est l'objet à stocker (ici une chaîne
message). - La requête est ensuite transmise à la JSP via un
RequestDispatcher.
Dans la JSP, récupérez cet attribut avec la méthode getAttribute() :
<%@ page pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
</head>
<body>
<p>Ceci est une page générée depuis une JSP.</p>
<p>
<%
String attribut = (String) request.getAttribute("test");
out.println( attribut );
%>
</p>
</body>
</html>
Notez que le nom de l'attribut dans la requête ("test") est celui utilisé pour accéder à l'objet côté JSP, et non le nom de la variable Java dans la Servlet ("message").
Données issues du client : les paramètres
Cette étape montre comment transmettre des données du client vers la Servlet via des paramètres de requête HTTP, généralement envoyés dans l'URL avec la méthode GET.
Les paramètres sont transmis dans l'URL sous la forme :
/page.jsp?cat=java(un paramètre nommé "cat" avec la valeur "java")/page.jsp?lang=fr&admin=true(deux paramètres "lang" et "admin")
Règles à retenir :
- Le premier paramètre est séparé de l'URL par un
?. - Les paramètres multiples sont séparés par
&. - Chaque paramètre est une paire nom=valeur, séparée par
=.
Attention : la méthode GET limite la taille des données transmises via l'URL. Pour des données plus volumineuses ou sensibles, il faut utiliser la méthode POST.
Récupération d'un paramètre dans la Servlet
Modifiez la Servlet pour récupérer un paramètre nommé "auteur" envoyé par le client :
public void doGet( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException{
String paramAuteur = request.getParameter( "auteur" );
String message = "Transmission de variables : OK ! " + paramAuteur;
request.setAttribute( "test", message );
this.getServletContext().getRequestDispatcher( "/WEB-INF/test.jsp" ).forward( request, response );
}
Explications :
- La méthode
getParameter("auteur")récupère la valeur du paramètre "auteur" dans l'URL. - Cette valeur est concaténée au message et stockée dans un attribut de requête "test".
- La JSP affichera ensuite ce message.
Exemple d'appel dans un navigateur :
http://localhost:8080/test/toto?auteur=MyName
La JSP affichera alors :
Transmission de variables : OK ! MyName
MyName
Pour afficher aussi la valeur du paramètre directement dans la JSP, ajoutez ce code :
<%
String attribut = (String) request.getAttribute("test");
out.println( attribut );
String parametre = request.getParameter( "auteur" );
out.println( parametre );
%>
Si aucun paramètre "auteur" n'est présent dans l'URL, getParameter() retourne null.
Résultats attendus
- La JSP doit afficher la chaîne transmise par la Servlet via l'attribut "test".
- Lorsque l'URL contient un paramètre "auteur", la JSP doit afficher ce nom dans le message et une seconde fois en récupérant directement le paramètre.
- Sans paramètre "auteur", la JSP affiche "Transmission de variables : OK ! null" et aucun nom supplémentaire.
Pièges courants
- Confondre le nom de la variable Java dans la Servlet et le nom de l'attribut dans la requête. C'est ce dernier qui sert à récupérer les données côté JSP.
- Essayer de modifier les paramètres de requête côté serveur : les paramètres sont en lecture seule et proviennent de la requête HTTP client.
- Ne pas respecter la syntaxe des paramètres dans l'URL (manque de
?, oubli du&entre paramètres). - Oublier que la méthode GET limite la taille des données transmises, ce qui peut poser problème pour des informations volumineuses.
- Ne pas gérer le cas où
getParameter()retournenullsi le paramètre est absent.
Résumé
Les paramètres de requête sont des chaînes de caractères envoyées par le client dans l'URL et accessibles en lecture via getParameter(). Les attributs de requête sont des objets Java créés côté serveur et stockés dans l'objet HttpServletRequest via setAttribute(), permettant de transmettre des données complexes entre la Servlet et la JSP.
Commentaires
Aucun commentaire pour le moment. Posez la première question.