Vous êtes sur la page 1sur 21

Royaume de Maroc

‫المملكة المغربية‬
Université Mohamed 1er Oujda ‫جامعة محمد األول وجدة‬
Faculté Pluridisciplinaire ‫الكلية متعددة التخصصات‬
Nador ‫الناظور‬

Atelier pratique : Servlets


Exercice 1:
Ecrire une servlet simple qui affiche ‘Master Sciences des Donnees et Systeme Intelligents ’.
1-Créer un projet « Dynamic Web Project » .

2-Donner un nom au projet : TP-EX1


-crocher ‘generate web.xml’ pour que le fichier de déploiement soit généré
automatiquement.

-la structure du projet sera comme suit :

JEE 1 AZZUBHI RIHANA


3-Créer une classe java(servlet) appelé ‘FirstServlet’.

4- Le fichier FirstServlet.java :

5- Démarrer le serveur tomcat

6- Déployer la Servlet FirstServlet.

• A l’aide du fichier web.xml


6.1-Le fichier web.xml :

JEE 2 AZZUBHI RIHANA


6.2- Ajouter le projet TP-EX1 au serveur tomcat, cliquer avec bouton droit puis choisir « Add
and Remove… »

6.3-Redemarer le serveur puis tester votre travail en lançant le navigateur de votre choix, puis
entrer l’url suivante : http://localhost:8010/TP-EX1/FirstServlet

• A l’aide des Annotations


6.4- Modifier le fichier web.xml comme suit :

6.5- Ajouter l’annotation suivante à la servlet FirstServlet :

7- Utiliser un code HTML dans une servlet .


7.1-modifier la servlet :

JEE 3 AZZUBHI RIHANA


7.2-Redemarer le serveur :

8- Appeler une page html à partir d’une Servlet.


8.1-Créer un fichier index.html :

Le fichier index.html :

8.2-Modifier la servlet :

8.3- Redémarrer le serveur.

JEE 4 AZZUBHI RIHANA


Exercice 2: Utiliseer la methode Post
Créez un formulaire html permettant à l’utilisateur de saisir son nom et choisir le sexe
et une Servlet qui permet d’afficher ces informations.

1-Créer un projet « Dynamic Web Project » appelé TP-EX2 .


2-créer un fichier index.html,et une servlet servEx2.java.
La structure de projet sera :

3- Le fichier index.html :

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="servEx2">

<h4>Entrer votre nom : &nbsp;</h4>


<input type="text" name="nom">
<br>
<h4>Selectionner le sexe : &nbsp;</h4>
<select name="sexe">
<option value="Homme">Homme</option>
<option value="Femme">Femme</option>
</select>
<br>
<br>
<input type="submit" value="envoyer">
</form>
</body>
</html>

JEE 5 AZZUBHI RIHANA


4- Le fichier servEx2.java :

package servlest;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@SuppressWarnings("serial")
public class servEx2 extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {
String nom = request.getParameter("nom");
String sexe = request.getParameter("sexe");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1> Bonjour </h1>");
out.println("<h4> nom:"+nom+"</h4>");
out.println("<h4> sexe:"+sexe+"</h4>");
out.println("</body>");

protected void doPost(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {

doGet(request, response);
}

5-Le fichier web.xml :

<?xml version="1.0" encoding="UTF-8"?>


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
id="WebApp_ID" version="5.0">
<display-name>TP-EX2</display-name>

<servlet>
<description></description>
<display-name>servEx2</display-name>
<servlet-name>servEx2</servlet-name>
<servlet-class>servlest.servEx2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servEx2</servlet-name>
<url-pattern>/servEx2</url-pattern>
</servlet-mapping>
</web-app>

JEE 6 AZZUBHI RIHANA


6- Démarrer le serveur puis tester votre travail.

Exercice 3:Calculatrice avec IDE NetBeans


1-Ajouter Tomcat dans NetBeans .

2-Créer un nouveau projet java web, web application .

JEE 7 AZZUBHI RIHANA


3- le fichier index.html est créé automatiquement par NetBeans.

4-Créer votre servlet.

-Crocher ‘Add information….’ pour générer le fichier web.xml.

JEE 8 AZZUBHI RIHANA


-le fichier index.html :
<h1>Calculatrice</h1>
<form method="post" action="servCal">
<input type="text" name="a" size="5">
<select name="op">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" name="b" size="5">
<input type="submit" value="=">
</form>

-le fichier Servlet.java :


package calculatrice;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import calculatrice.Calculatrice;
import java.io.IOException;
import java.io.PrintWriter;

public class servCal extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse


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

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse
response)

JEE 9 AZZUBHI RIHANA


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

int x = Integer.parseInt(request.getParameter("a"));
int y = Integer.parseInt(request.getParameter("b"));
String op = request.getParameter("op");
Calculatrice calc = new Calculatrice(x,op,y);
int z=calc.res;
out.println("<h2>Résultat</h2>");
out.println("<h2>"+z+"</h2>");
}

@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>

class Calculatrice{
private int a;
private int b;
private String c;
int res;
public Calculatrice(int x,String op,int y){
this.a = x;
this.b = y;
this.c = op;
if(c.equals("+")){
this.res = a + b;
}
else if(c.equals("-")){
this.res = a - b;
}
else if(c.equals("*")){
this.res = a * b;
}
else if(c.equals("/")){
if(b!=0)
this.res = a / b;
}
}
}

5-Deployer le résultat par :

JEE 10 AZZUBHI RIHANA


Exercice 4: Session-Login & Logout
Nous créons une application réelle de connexion et de déconnexion sans utiliser de
code de base de données. Nous supposons que le mot de passe est admin123.
Nous créons 3 liens : connexion, déconnexion et profil. L'utilisateur ne peut pas
accéder à la page de profil tant qu'il n'est pas connecté. Si l'utilisateur est déconnecté, il doit se
reconnecter pour accéder au profil.
1-index.html
<h1>Application de connexion utilisant HttpSession</h1>
<a href="login.html">Login</a>|
<a href="LogoutServlet">Logout</a>|
<a href="ProfileServlet">Profile</a>

2-link.html
<a href="login.html">Login</a> |
<a href="LogoutServlet">Logout</a> |
<a href="ProfileServlet">Profile</a>
<hr>

3-login.html
<form action="LoginServlet" method="post">
Name:<input type="text" name="name"><br>
Password:<input type="password" name="password"><br>
<input type="submit" value="login">
</form>

4 -LoginServlet.java
package servlets;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;

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

public class LoginServlet extends HttpServlet {


/**
*
*/
private static final long serialVersionUID = 1L;

JEE 11 AZZUBHI RIHANA


protected void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
request.getRequestDispatcher("link.html").include(request, response);

String name=request.getParameter("name");
String password=request.getParameter("password");

if(password.equals("admin123")){
out.print("Welcome, "+name);
HttpSession session=request.getSession();
session.setAttribute("name",name);
}
else{
out.print("Sorry, username or password error!");
request.getRequestDispatcher("login.html").include(request, response);
}
out.close();
}
}

5-LogoutServlet.java
package servlets;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;

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

public class LogoutServlet extends HttpServlet {


/**
*
*/
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse


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

request.getRequestDispatcher("link.html").include(request, response);

HttpSession session=request.getSession();
session.invalidate();

JEE 12 AZZUBHI RIHANA


out.print("You are successfully logged out!");

out.close();
}
}

6-ProfileServlet.java
package servlets;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;

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

public class ProfileServlet extends HttpServlet {


/**
*
*/
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse


response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
request.getRequestDispatcher("link.html").include(request, response);

HttpSession session=request.getSession(false);
if(session!=null){
String name=(String)session.getAttribute("name");

out.print("Hello, "+name+" Welcome to Profile");


}
else{
out.print("Please login first");
request.getRequestDispatcher("login.html").include(request, response);
}
out.close();
}
}

JEE 13 AZZUBHI RIHANA


Exercice5 : Authentification filter
Nous pouvons effectuer une authentification dans le filtre. Ici, nous allons vérifier le
mot de passe donné par l'utilisateur dans la classe du filtre, si le mot de passe donné est admin,
il transmettra la demande au servlet WelcomeAdmin, sinon il affichera un message d'erreur.

1-index.html

<form action="servlet1">
Name:<input type="text" name="name"/><br/>
Password:<input type="password" name="password"/><br/>

<input type="submit" value="login">

</form>

2-MyFilter.java

public class MyFilter implements Filter{

public void init(FilterConfig arg0) throws ServletException {}

public void doFilter(ServletRequest req, ServletResponse resp,


FilterChain chain) throws IOException, ServletException {

PrintWriter out=resp.getWriter();

String password=req.getParameter("password");
if(password.equals("admin")){
chain.doFilter(req, resp);//sends request to next resource
}
else{
out.print("username or password error!");
RequestDispatcher rd=req.getRequestDispatcher("index.html");
rd.include(req, resp);
}

}}

3-AdminServlet.java

public class AdminServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();

out.print("welcome ADMIN");
out.close();
} }

JEE 14 AZZUBHI RIHANA


4-web.xml

<?xml version="1.0" encoding="UTF-8"?>


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd
http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-
app_2_5.xsd" id="WebApp_ID" version="5.0">
<display-name>Authentication-Filter</display-name>
<servlet>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>servlets.AdminServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>

<filter>
<filter-name>f1</filter-name>
<filter-class>servlets.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>f1</filter-name>
<url-pattern>/servlet1</url-pattern>
</filter-mapping>

</web-app>

Exercice6 : Application CRUD


Une application CRUD (Create, Read, Update and Delete) est l'application la plus
importante pour le développement de tout projet. En Servlet, nous pouvons facilement créer
une application CRUD.

1-index.html

<h1>Add New Employee</h1>


<form action="SaveServlet" method="post">
<table>
<tr><td>Name:</td><td><input type="text" name="name"/></td></tr>
<tr><td>Password:</td><td><input type="password" name="password"/></td></tr>
<tr><td>Email:</td><td><input type="email" name="email"/></td></tr>
<tr><td>Country:</td><td>
<select name="country" style="width:150px">
<option>India</option>
<option>USA</option>
<option>UK</option>
<option>Other</option>
</select></td></tr>
<tr><td colspan="2"><input type="submit" value="Save Employee"/></td></tr>
</table></form><br/>

<a href="ViewServlet">view employees</a>

JEE 15 AZZUBHI RIHANA


2-Emp.java

package servs;

public class Emp {


private int id;
private String name,password,email,country;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}

3-EmpDao.java

package servs;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class EmpDao {

public static Connection getConnection(){


Connection con=null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");

con=DriverManager.getConnection("jdbc:mysql://localhost/crud_servlet?" +

JEE 16 AZZUBHI RIHANA


"user=root&password=''");
}catch(Exception e){System.out.println(e);}
return con;
}
public static int save(Emp e){
int status=0;
try{
Connection con=EmpDao.getConnection();
PreparedStatement ps=con.prepareStatement("insert into
users(name,password,email,country) values (?,?,?,?)");
ps.setString(1,e.getName());
ps.setString(2,e.getPassword());
ps.setString(3,e.getEmail());
ps.setString(4,e.getCountry());

status=ps.executeUpdate();

con.close();
}catch(Exception ex){ex.printStackTrace();}

return status;
}
public static int update(Emp e){
int status=0;
try{
Connection con=EmpDao.getConnection();
PreparedStatement ps=con.prepareStatement("update users set
name=?,password=?,email=?,country=? where id=?");
ps.setString(1,e.getName());
ps.setString(2,e.getPassword());
ps.setString(3,e.getEmail());
ps.setString(4,e.getCountry());
ps.setInt(5,e.getId());

status=ps.executeUpdate();

con.close();
}catch(Exception ex){ex.printStackTrace();}

return status;
}
public static int delete(int id){
int status=0;
try{
Connection con=EmpDao.getConnection();
PreparedStatement ps=con.prepareStatement("delete from users
where id=?");
ps.setInt(1,id);
status=ps.executeUpdate();

con.close();
}catch(Exception e){e.printStackTrace();}

return status;
}
public static Emp getEmployeeById(int id){
Emp e=new Emp();

try{

JEE 17 AZZUBHI RIHANA


Connection con=EmpDao.getConnection();
PreparedStatement ps=con.prepareStatement("select * from users
where id=?");
ps.setInt(1,id);
ResultSet rs=ps.executeQuery();
if(rs.next()){
e.setId(rs.getInt(1));
e.setName(rs.getString(2));
e.setPassword(rs.getString(3));
e.setEmail(rs.getString(4));
e.setCountry(rs.getString(5));
}
con.close();
}catch(Exception ex){ex.printStackTrace();}

return e;
}
public static List<Emp> getAllEmployees(){
List<Emp> list=new ArrayList<Emp>();

try{
Connection con=EmpDao.getConnection();
PreparedStatement ps=con.prepareStatement("select * from
users");
ResultSet rs=ps.executeQuery();
while(rs.next()){
Emp e=new Emp();
e.setId(rs.getInt(1));
e.setName(rs.getString(2));
e.setPassword(rs.getString(3));
e.setEmail(rs.getString(4));
e.setCountry(rs.getString(5));
list.add(e);
}
con.close();
}catch(Exception e){e.printStackTrace();}

return list;
}
}

4-SaveServle.java

package servs;

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

@SuppressWarnings("serial")
@WebServlet("/SaveServlet")
public class SaveServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {

JEE 18 AZZUBHI RIHANA


response.setContentType("text/html");
PrintWriter out=response.getWriter();

String name=request.getParameter("name");
String password=request.getParameter("password");
String email=request.getParameter("email");
String country=request.getParameter("country");

Emp e=new Emp();


e.setName(name);
e.setPassword(password);
e.setEmail(email);
e.setCountry(country);

int status=EmpDao.save(e);
if(status>0){
out.print("<p>Record saved successfully!</p>");
request.getRequestDispatcher("index.html").include(request,
response);
}else{
out.println("Sorry! unable to save record");
}

out.close();
}}

5-ViewServlet.java

public class ViewServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("<a href='index.html'>Add New Employee</a>");
out.println("<h1>Employees List</h1>");

List<Emp> list=EmpDao.getAllEmployees();

out.print("<table border='1' width='100%'");

out.print("<tr><th>Id</th><th>Name</th><th>Password</th><th>Email</th><th>Co
untry</th><th>Edit</th><th>Delete</th></tr>");
for(Emp e:list){

out.print("<tr><td>"+e.getId()+"</td><td>"+e.getName()+"</td><td>"+e.getPass
word()+"</td><td>"+e.getEmail()+"</td><td>"+e.getCountry()+"</td><td><a
href='EditServlet?id="+e.getId()+"'>edit</a></td><td><a
href='DeleteServlet?id="+e.getId()+"'>delete</a></td></tr>");
}
out.print("</table>");

out.close();
}

JEE 19 AZZUBHI RIHANA


6-EditServlet.java

public class EditServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("<h1>Update Employee</h1>");
String sid=request.getParameter("id");
int id=Integer.parseInt(sid);

Emp e=EmpDao.getEmployeeById(id);

out.print("<form action='EditServlet2' method='post'>");


out.print("<table>");
out.print("<tr><td></td><td><input type='hidden' name='id'
value='"+e.getId()+"'/></td></tr>");
out.print("<tr><td>Name:</td><td><input type='text' name='name'
value='"+e.getName()+"'/></td></tr>");
out.print("<tr><td>Password:</td><td><input type='password'
name='password' value='"+e.getPassword()+"'/></td></tr>");
out.print("<tr><td>Email:</td><td><input type='email' name='email'
value='"+e.getEmail()+"'/></td></tr>");
out.print("<tr><td>Country:</td><td>");
out.print("<select name='country' style='width:150px'>");
out.print("<option>India</option>");
out.print("<option>USA</option>");
out.print("<option>UK</option>");
out.print("<option>Other</option>");
out.print("</select>");
out.print("</td></tr>");
out.print("<tr><td colspan='2'><input type='submit' value='Edit &amp;
Save '/></td></tr>");
out.print("</table>");
out.print("</form>");

out.close();
}

7- EditServlet2.java

public class EditServlet2 extends HttpServlet {


protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();

String sid=request.getParameter("id");
int id=Integer.parseInt(sid);
String name=request.getParameter("name");
String password=request.getParameter("password");
String email=request.getParameter("email");
String country=request.getParameter("country");

Emp e=new Emp();


e.setId(id);

JEE 20 AZZUBHI RIHANA


e.setName(name);
e.setPassword(password);
e.setEmail(email);
e.setCountry(country);

int status=EmpDao.update(e);
if(status>0){
response.sendRedirect("ViewServlet");
}else{
out.println("Sorry! unable to update record");
}

out.close();
}

8-DeleteServlet.java

public class DeleteServlet extends HttpServlet {


private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
String sid=request.getParameter("id");
int id=Integer.parseInt(sid);
EmpDao.delete(id);
response.sendRedirect("ViewServlet");
}
public DeleteServlet() {
super();
// TODO Auto-generated constructor stub
}

Le résultat :

JEE 21 AZZUBHI RIHANA

Vous aimerez peut-être aussi