La principale difficult de ce TP est de bien "ranger les choses". Il faut tre cohrent
quant l'endroit o les divers fichiers sont mis dans l'archive construite, ainsi que
certaines lignes du fichier web.xml. Bref il y a l tout autant un travail de dveloppeur
que de personne qui dploie.
Les parties ci dessous crite en vert, gras sont les parties pour une correction.
0) Prliminaire
a) Crer un dossier dans lequel vous travaillerez pour tout ce TP : ce sera votre rpertoire de
travail. Recopier tout l'arborescence de tomcat (qui se trouve peut tre sous C:\Program
Files\ApacheTomcat\6.0.18) dans un rpertoire ditable par exemple sous
C:\www\tomcat.
b) Crer le fichier script lanceTomcat.bat, qui va permettre de lancer le serveur tomcat.
fichier lanceTomcat.bat
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_11
set CATALINA_HOME=C:\www\tomcat
%CATALINA_HOME%\bin\startup.bat
L'exemple ci dessus a suppos que le JDK (pas le JRE) Java est rang sous C:\Program
Files\Java\jdk1.6.0_11, et tomcat est install sous C:\www\tomcat. (au besoin il a
t recopi sous ce rpertoire). Ajuster les deux variables JAVA_HOME et CATALINA_HOME
correctement en fonction des configuration de vos machines.
Sauvegarder ce script dans votre rpertoire de travail.
c) Ouvrer une fentre dos dans votre rpertoire de travail et lancer lanceTomcat.bat.
d) Ouvrer un navigateur et connecter vous l'URL http://localhost:8080. Vous
devriez avoir une fentre comme :
1/8
2/8
Dans toute cette partie, il n'y a qu' suivre les instructions, pour arriver l'cran ci dessus.
Construction d'une application Web : page d'accueil index.html
1) Prparer une arborescence par exemple dans le rpertoire SiteWebTP qui est une copie de
la future application web lorsqu'elle sera dploye. A partir de la racine de cette arborescence
placer correctement :
le rpertoire WEB-INF
le rpertoire classes o seront places les servlets compils
le fichier web.xml
On rappelle que cette arborescence doit tre :
3/8
Dans un tel formulaire lorsque l'utilisateur clique sur le bouton Envoyer, une connexion est faite
sur la servlet dont l'URL se termine par AuthentificationServlet.
Le code de cette page JSP est :
<html>
<head><title>Authentification pour SMB111</title></head>
<body>
<h2>Authentification pour les tudiants de SMB 111</h2>
<form action="AuthentificationServlet" method="post">
<br/>Login : <input type="text" name="login"><br/>
<br/>Mot de passe : <input type="password" name="motDePasse"><br/>
<br/><input type="submit" value="Envoyer" />
<input type="reset" value="Effacer" />
</form>
</body>
</html>
5/8
C'est plutt une page HTML : c'est donc une page JSP !
8) Faire afficher cette page avec une URL de la forme :
http://localhost:8080/smb111/authentification.jsp
Il faudra pour cela, en plus d'crire cette page JSP, construire l'archive smb111.war et
dployer cette archive.
L aussi, la principale difficult est de bien construire l'archive et de bien la dployer.
Construction de servlets
9) Construire la servlet accessible par l'URL
http://localhost:8080/smb111/AuthentificationServlet
Il faudra pour cela :
- insrer dans le fichier web.xml des lignes comme :
<servlet>
<servlet-name>unNomQuelconque</servlet-name>
<servlet-class>AuthentificationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>unNomQuelconque</servlet-name>
<url-pattern>/AuthentificationServlet</url-pattern>
</servlet-mapping>
- crire une servlet (eh oui). Cette servlet doit fabriquer et retourner une page comme
si le couple (nom de login, mot de passe) est correct On pourra prendre le couple (smb111,
smb111pw). Si ce couple n'est pas correct on doit avoir une page comme :
6/8
Ce fichier sera mis dans le rpertoire pre du rpertoire SiteWebTP et le code de la servlet
(AuthentificationServlet.java) sera dans le rpertoire src.
Le code de la servlet est :
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class AuthentificationServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Etape 1. Spcifier le type MIME du contenu de la rponse
response.setContentType("text/html");
// Etape 2. Rcupre le PrintWriter
// pour envoyer des donnes au client
PrintWriter out = response.getWriter();
// Step 3. Envoyer linformation au client
out.println("<html>");
out.println("<head><title>servlet d'authentification</title></head>");
out.println("<body>");
String login = request.getParameter("login");
String motDePasse = request.getParameter("motDePasse");
if (login.equals("smb111") && motDePasse.equals("smb111pw")) {
ServletContext context = getServletContext();
RequestDispatcher dispatcher =
context.getRequestDispatcher("/virOuRetrait.jsp");
dispatcher.forward(request, response);
} else {
out.println("<h1>chec l'authentification</h1>");
}
out.println("</body></html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
doGet(request, response);
}
}
Architecture MVC
10) Modifier la servlet AuthentificationServlet de sorte qu'elle appelle des pages JSP
qui affichent les rponses ci dessus (authentification russie et chec l'authentification).
Il suffit d'insrer dans la servlet, le code vu en cours :
ServletContext context = getServletContext();
7/8
// hrite de GenericServlet
RequestDispatcher dispatcher =
context.getRequestDispatcher("/maPageMiseEnForme.jsp");
dispatcher.forward(request, response);
en indiquant les bonnes pages JSP vers lesquelles on doit tre redirig.
8/8