Chapitre06 - Seance02 - Associer Une Vue À Un Servlet Bon

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 11

Chapitre 6 : Associer une vue à un Servlet

6.1. LES CLASSES HTTPSERVLETREQUEST ET HTTPSERVLETRESPONSE..................................................................................2


6.2. EXÉCUTION..................................................................................................................................................................... 4
6.3. COMMENT RECUPERER LE DONNÉES SAISIES PAR L’UTILISATEUR...................................................................................6
6.3.1. Création du formulaire..............................................................................................................................................6
6.3.2. Création du Servlet....................................................................................................................................................7
6.4. LA TECHNOLOGIE JSP (JAVA SERVER PAGE)....................................................................................................................9
pour le moment notre Servlet ne fait rien de spécial, mais il serait intéressant de voir
comment faire pour associer une partie vue à notre Servlet je vous rappelle que :
 la Servlet est le CONTROLEUR et
 la VUE est la page web en réalité qu'on retourne aux visiteurs
comment fait-on depuis la Servlet pour appeler une vue. eh bien c'est ce que nous allons
voir dans ce chapitre.

6.1. Les classes HttpServletRequest et HttpServletResponse


ensemble essayons maintenant de faire en sorte que notre servlet renvoi des informations
qui permettraientt d'afficher une page web. nous allons nous rendre dans la Servlet
ServletExemple que nous avions créé.

A l'intérieur de la méthode doGet nous allons travailler sur deux objets :


 l'objet request de type HttpServletRequest qui est passé en paramètres et
 l'objet response de type HttpServletResponse qui est passé en paramètres.

En fait c'est très simple la requête http nous arrive sous la forme d'un objet request et
nous devons renvoyer un objet response donc l'objet request indique par exemple les
paramètres qu'a pu envoyer l'utilisateur ou encore le nom de son navigateur etc.

l'objet response est celui que nous allons construire afin de renvoyer une page html.
même si vous pouvez envoyer n'importe quoi d'autre avec JEE on pourrait très bien
générer une image ou générer un fichier xml. n'importe quoi d'autre.

Alors on va travailler sur la réponse. en particulier cet objet response possède plusieurs
méthodes. Saisir le code suivant dans le doGet.

response.setContentType("text/html") ;
response.setCharacterEncoding("UTF-8") ;
PrintWriter out = response.getWriter() ;
out.println("Bienvenue au cours de JAVA EE !!!") ;
On obtient :

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/ServletExemple")
public class ServletExemple extends HttpServlet {
private static final long serialVersionUID = 1L;

public ServletExemple() {
super();
// TODO Auto-generated constructor stub
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
response.setContentType("text/html") ;
response.setCharacterEncoding("UTF-8") ;
PrintWriter out = response.getWriter() ;

out.println("Bienvenue au cours de JAVA EE") ;


}

protected void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
// TODO Auto-generated method stub
}
}

je vais commencer par utiliser setContentType pour indiquer que je renvoie du html.
response.setContentType("text/html") ;
ensuite nous allons faire response.setCharacterEncoding("UTF-8") ; c'est l'encodage nos
caractères pour éviter qu'il y ait des problèmes avec les accents.
ensuite nous allons récupérer un objet qui représente la sortie
PrintWriter out = response.getWriter() ;

nous récupérons un objet de type PrintWriter


nous allons pouvoir envoyer des lignes à l'écran par exemple
out.println("Bienvenue au cours de JAVA EE") ;
nous allons renvoyer par exemple "Bienvenue au cours de JAVA EE"

6.2. Exécution

Exécutez le prrojet
Dans l’URL, saisir : http://localhost:8085/M2SIGL/servlet1

La page qui vient de s’afficher n'est pas une page html. Une page html ne peut pas
contenir juste "Bienvenue au cours de JAVA EE" elle doit contenir un doctype des
balises html etc. donc en fait si on veut vraiment bien faire il va falloir non pas écrire
juste cette ligne mais plutôt toutes ses lignes là :

out.println("<html>");

out.println("<head>");
out.println("<title>Voici la reponse </title>");
out.println("</head>");

out.println("<body>");
out.println("votre nom est : KONAN");
out.println("votre email est : Hyacinthekonan@yahoo.com");
out.println("</body>");

out.println("</html>");

On obtient :

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/ServletExemple")
public class ServletExemple extends HttpServlet {
private static final long serialVersionUID = 1L;
public ServletExemple() {
super();
// TODO Auto-generated constructor stub
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
response.setContentType("text/html") ;
response.setCharacterEncoding("UTF-8") ;
PrintWriter out = response.getWriter() ;
out.println("<html>");

out.println("<head>");
out.println("<title>Voici le reponse </title>");
out.println("</head>");

out.println("<body>");
out.println("votre nom est : KONAN");
out.println("<br>");
out.println("votre email est : Hyacinthekonan@yahoo.com");
out.println("</body>");

out.println("</html>");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
// TODO Auto-generated method stub
}
}

Exécutez le prrojet
Dans l’URL, saisir : http://localhost:8085/M2SIGL/servlet1

elle a la même apparence mais cette fois ci le code html et bien structuré et donc on a une
vraie page html.
6.3. Comment recuperer le données saisies par l’utilisateur

6.3.1. Création du formulaire

Modifier le fichier index.html comme suit :

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Personne - formulaire</title>
</head>
<body>
<center>
<h2>Personne - formulaire</h2>
<hr>
<form action="servlet1" method ="get">
<table>
<tr>
<td> Nom : </td>
<td><input type = "text" name = "userName" size="20"></td>
</tr>
<tr>
<td> Email :</td>
<td><input type = "text" name = "email" size="40"></td>
</tr>
</table>
<table>
<tr>
<td><input type = "submit" name = "submit" value="Envoyer"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
6.3.2. Création du Servlet

Modifier le fichier ServletExemple.java comme suit :

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletExemple extends HttpServlet {


@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String name = req.getParameter("userName");
String email = req.getParameter("email");
String ip = req.getRemoteAddr();

resp.getWriter().println("<html>");
resp.getWriter().println("<head>");
resp.getWriter().println("<title>Voici le reponse </title>");
resp.getWriter().println("</head>");

resp.getWriter().println("<body>");
resp.getWriter().println("votre nom est : " + name);
resp.getWriter().println("<br>");
resp.getWriter().println("votre email est : " + email);
resp.getWriter().println("<br>");
resp.getWriter().println("votre adresse ip est : " + ip);
resp.getWriter().println("</body>");

resp.getWriter().println("</html>");
}
}
Cliquez droit sur M2SIGL puis Run As puis 1 Run on Server
Vous obtenez la fenêtre suivante  :

Saisissez les informations suivantes :


Nom : KONAN
Email : hyacinthe@yahoo.fr

Cliquer sur le bouton Envoyer


On obtient :

Exercice
Créer un projet Web dynamique nommé : Calcule

Fichier index.html :

La servlet est le Fichier test.java :


bon très bien mais vous êtes en train de me dire peut-être que c'est un peu compliqué
parce qu'effectivement ça fait beaucoup de lignes juste pour envoyer du code html
basique. En pratique, on ne fait jamais ça en JEE.

6.4. La technologie jsp (java server page)


Si on veut faire les choses un peu plus correctement on va devoir utiliser la technologie
JSP (Java Server Page).

Le principe est de gérer nos VUES (notre code html) dans des fichiers spécifiques qui
peuvent mélanger un peu de code java avec du html. alors on va créer une nouvelle page
jsp. bonjour.jsp

Cliquer droit sur WEB-INF new/jsp file


Dans le nom, saisir : "bonjour.jsp"
Cliquer sur terminer
Saisir le code suivant :

<%@ page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
%>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TEST</title>
</head>

<body>
<p> BONJOUR BIENVENUE AU MODULE JSP </p>
</body>
</html>

Modifier la servlet ServletExemple comme suit :

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletExemple extends HttpServlet {


@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.getServletContext().getRequestDispatcher("/WEB-
INF/bonjour.jsp").forward(req, resp);
}
}

Exécutez le prrojet
Dans l’URL, saisir : http://localhost:8085/Exemple01/servlet1

cette fois notre servlet (ServletExemple.java) est beaucoup plus propre elle agit comme
un vrai contrôleurs. elle se contente de faire l'aiguilleur le dispatcheur, elle indique où
se trouve la vue (bonjour.jsp) à renvoyer.

alors si on veut vérifier la différence et le fait que c'est plus simple à modifier
il suffit simplement de modifier bonjour.jsp, d'enregistrer,

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TEST</title>
</head>

<body>
<p> JE VOUS REMERCIE JSP </p>
</body>
</html>

de retourner au navigateur sur la page bonjour, d'actualiser et de voir que maintenant on


affiche bien bonjour JE VOUS REMERCIE JSP

Vous aimerez peut-être aussi