Atelier N°3 : Transmission de données entre JSP et Servlet

Institut Supérieur des Études Technologiques de Bizerte
1/6
100%
Rendu du PDF...
Page 1 sur 6Lecteur de document UniversityLib

Atelier N°3 : Transmission de données entre JSP et Servlet

Institut Supérieur des Études Technologiques de Bizerte · Information Technology · lab

Browse all développement web documents

Institut Supérieur des Etudes Technologiques de Bizerte

Département Technologies de l’informatique

Parcours :

Unité d’Enseignement :

Matière

Développement des Système d’Informations

Environnement de Développement

Atelier Initiation J2EE

Atelier N°3 : Transmission de données entre JSP et Servlet

 Objectifs

 Savoir circuler des données entre la JSP et la Servlet.

 Savoir différencier entre attribut et paramètre d’une requête.

 Contenu

I. Données issues du serveur : les attributs

II. Données issues du client : les paramètres

I. Données issues du serveur : les attributs

Transmettre des variables de la servlet à la JSP

SERVLET

attributs

JSP

La requête HTTP passe au travers de la servlet avant d'être transmise à la vue.

Travail à faire :

1. Créez une chaîne de caractères depuis votre servlet, et transmettez-la à la vue pour

affichage.

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 );

}

Atelier Environnement de Développement

Page 1

Il suffit d'appeler la méthode setAttribute() de l'objet requête pour y enregistrer un

attribut : Cette méthode prend en paramètre le nom que l'on souhaite donner à l'attribut

suivi de l'objet lui-même.

Ici, l'attribut créé est une simple chaîne de caractères - un objet de type String – qui prend

Advertisement

le nom test lors de son enregistrement dans la requête.

 Ne confondez pas le nom que vous donnez à votre objet au sein du code

et le nom que vous donnez à l'attribut au sein de la requête.

Ici notre objet se nomme message mais par la suite son nom sera test ; l'attribut qui

contient cet objet dans la requête. Côté vue, c'est par ce nom d'attribut que vous pourrez

accéder à votre objet.

Travail à faire :

2. Faites une analogie avec la servlet pour récupérer les attributs depuis votre JSP.

**il suffit d'appeler setAttribute()pour créer un attribut dans une requête depuis une

servlet.

** il suffit d'appeler la méthode getAttribute() pour récupérer l’attribut depuis une JSP.

Solution :

<%@ 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>

Atelier Environnement de Développement

Page 2

**Dans une JSP on peut inclure du code Java dans une page en entourant ce code des

balises <% et %>.

II. Données issues du client : les paramètres

Transmettre des variables de la JSP à la Servlet

JSP

paramètre

Advertisement

Servlet

Qu'est-ce qu'un paramètre de requête ?

La méthode GET du protocole HTTP permet au client de transmettre des données au

serveur en les incluant directement dans l'URL, dans ce qui s'appelle les paramètres

(ou query strings). C’est cela que nous allons apprendre à manipuler ici :

Travail à faire :

3. Rendre votre projet interactif, en autorisant le client à transmettre des informations

au serveur.

La forme de l'URL

Les paramètres sont transmis au serveur directement via l'URL. Voici des exemples des

différentes formes qu'une URL peut prendre :

<!-- URL sans paramètres -->

/page.jsp

<!-- URL avec un paramètre nommé 'cat' et ayant pour valeur 'java' -->

/page.jsp?cat=java

<!-- URL avec deux paramètres nommés 'lang' et 'admin', et ayant pour valeur

respectivement 'fr' et 'true' -->

/page.jsp?lang=fr&admin=true

À retenir :

Atelier Environnement de Développement

Page 3

le premier paramètre est séparé du reste de l'URL par le caractère « ? ».

les paramètres sont séparés entre eux par le caractère « & ».

 une valeur est attribuée à chaque paramètre via l'opérateur « = ».

Remarque : Pour la méthode GET : la taille d'une URL est limitée d’où la taille des

données à envoyer est limitée également.

 Lorsqu’ on a beaucoup de contenu à transmettre ou qu’on ne connaisse pas

à l'avance la taille des données qui vont être envoyées par le client, on utilise la

méthode POST.

Lorsque on envoie des données au serveur et qu'elles vont avoir un impact sur la

ressource demandée (MAJ), on passe par la méthode POST.

-Récupération des paramètres par le serveur-

4. Modifiez votre exemple afin d'y inclure la gestion d'un paramètre nommé auteur :

public void doGet( HttpServletRequest request, HttpServletResponse response )

throws ServletException, IOException{

Advertisement

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 );

}

Il suffit de faire appel à la méthode getParameter() de l'objet requête, en lui passant

comme argument le nom du paramètre que l'on souhaite récupérer. La méthode retournant

directement le contenu du paramètre (paramAuteur).

Atelier Environnement de Développement

Page 4

<%@ page language="java" contentType="text/html; charset=ISO-8859-

1"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-

8859-1">

<title>Insert Test here</title>

</head>

<body>

<p>Ceci est une JSP.</p>

<%

String attribut = (String)request.getAttribute("test");

out.println(attribut);

%>

</body>

</html>

Pour montrer que la servlet récupère bien les données envoyées par le client, ajoutez le

contenu de cette String au message que vous transmettez ensuite à la JSP pour affichage.

Si vous appelez à nouveau votre servlet depuis votre navigateur, rien ne va changer. Mais si

cette fois vous l'appelez en ajoutant un paramètre nommé auteur à l'URL, par exemple :

http://localhost:8080/test/toto?auteur=MyName

Alors vous observerez que le message affiché dans le navigateur contient bien la valeur du

paramètre précisé dans l'URL :

Advertisement

Ajoutez le code suivant :

<%

String attribut = (String) request.getAttribute("test");

out.println( attribut );

String parametre = request.getParameter( "auteur" );

out.println( parametre );

%>

Atelier Environnement de Développement

Page 5

En procédant ainsi, lorsque nous appelons l'URL en y précisant un paramètre

nommé auteur, nous obtenons bien le résultat escompté : notre JSP affiche une seconde

fois "MyName", cette fois en récupérant directement la valeur du paramètre depuis la

requête HTTP.

Si vous ne précisez pas de paramètre auteur dans l'URL, alors la

méthode getParameter() retourne null en lieu et place du contenu attendu.

Question :

Quelle est la différence entre les paramètres et les attributs ?

Il ne faut pas faire de confusion :

les paramètres de requête sont un concept appartenant au protocole HTTP. Ils

sont envoyés par le client au serveur directement au sein de l'URL, et donc sous

forme de chaînes de caractères. Il n'est pas possible de forger des paramètres dans

l'objet HttpServletRequest, il est uniquement possible d'y accéder en lecture.

les attributs de requête sont un concept appartenant au conteneur Java, et sont

donc créés côté serveur : c'est au sein du code de l'application que l'on procède à leur

initialisation, et qu'on les insère dans la requête, à savoir l'objet HttpServletRequest.

Contrairement aux paramètres, ils ne sont pas présents directement dans la requête

HTTP mais uniquement dans l'objet Java qui l'enveloppe, et peuvent contenir

n'importe quel type de données. Ils sont utilisés pour permettre à une servlet de

communiquer avec d'autres servlets ou pages JSP.

En résumé, les paramètres de requête sont propres au protocole HTTP et font

partie intégrante de l'URL d'une requête, alors que les attributs sont des objets

purement Java créés et gérés par le biais du conteneur.

Atelier Environnement de Développement

Page 6