0% ont trouvé ce document utile (0 vote)
43 vues44 pages

Introduction aux Servlets et JSP en Java

Ce document décrit les concepts de servlet et JSP en Java. Il explique le cycle de vie d'une servlet, ses méthodes doGet et doPost, ainsi que les annotations pour la configuration. Le document présente également les concepts de base des JSP comme les taglibs et les expressions.

Transféré par

hahed90273
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
43 vues44 pages

Introduction aux Servlets et JSP en Java

Ce document décrit les concepts de servlet et JSP en Java. Il explique le cycle de vie d'une servlet, ses méthodes doGet et doPost, ainsi que les annotations pour la configuration. Le document présente également les concepts de base des JSP comme les taglibs et les expressions.

Transféré par

hahed90273
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Web Tier : Servlet et JSP

Protocole HTTP
Client Serveur Description d’une requête http

GET /blogs. HTTP1.1 • Une version : HTTP 1.0 / HTTP 1.1


• Un protocole : http / https
200 HTTP 1.1
• Un domaine: [Link]
• Un chemin : /mes/bienvenue-a-mes/

POST /blogs/. HTTP1.1
Une méthode :
• GET : pour récupérer une information un document / une
302 HTTP 1.1
Location : /blogs/10 ressource
• POST : pour soumettre un formulaire / modification d’une
GET /blogs/10. HTTP1.1
ressource
• PUT : permet d’ajouter une ressource
200 HTTP 1.1
• DELETE : pour supprimer un document
• Et d’autres : PATCH, HEAD, CONNECT, TRACE

2
Servlet

• Une servlet est un composant Web de Java EE. Elle permet de traiter
une requête entrante sur un serveur et de générer une réponse
dynamique.
• La plupart du temps, les servlets sont utilisées pour traiter des
requêtes HTTP et générer dynamiquement une réponse.

3
Servlet

• Permet de créer dynamiquement du contenu


au sein d’un conteneur Java
• Contenu le plus souvent au format html mais
également xml, text, octets (transfert de
fichiers)
• Déclaration d’une servlet via l’utilisation de la
classe « HttpServlet »

4
Servlet – Cycle de vie
Request Response

Generic Initialisation Exécution Destruction


Servlet init service destroy

HttpServlet doGet doPost doDelete doOptions doHead doTrace

Il y a 5 étapes:
[Link] la classe Servlet dans la mémoire.
[Link]éer l'instance de la Servlet.
[Link] la méthode init() de Servlet.
[Link] la méthode service() de Servlet.
Le service() appellera une des deux méthodes, soit doGet() soit doPost()
[Link] la méthode destroy() de Servlet.
5
Servlet - doXXX

• Méthodes appelées en fonction de la « méthode http »


• 2 paramètres :
 HttpServletRequest : récupération des données de la requête
 HttpServletResponse : permet de fournir des données en réponse

6
Structure d’une servlet HTTP

• Une servlet HTTP est une classe Java qui hérite de la classe
[Link] :

7
Servlet - implémentation
public class HelloWorldServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {

• Etendre la classe «HttpServlet » [Link]().write("Bonjour !");

• Déclarer dans le fichier « [Link] »


}

<?xml version="1.0" encoding="ISO-8859-1"?>


<web-app>
<servlet>
Servlet avec son nom <servlet-name>Hello</servlet-name>
<servlet-class>HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
Mapping associé à la <servlet-name>Hello</servlet-name>
<url-pattern>/hello</url-pattern>
servlet </servlet-mapping>
</web-app>

8
Servlet – Portée des objets

Portée Description

application Objets accessible par toutes les instances de servlet

session Objets accessibles pendant la durée de la session de l’utilisateur

request Objets accessibles pendant la requête de l’utilisateur

pageContext Objets accessibles par la page JSP

9
Servlet - implémentation

• Etendre la classe «HttpServlet »


• Ajouter l’annotation « @WebServlet »

@WebServlet( urlPatterns= {"/hello"})


public class HelloWorldServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {

[Link]().write("Bonjour !");

}
}

10
Configuration du déploiement d’une servlet

• Pour la servlet ci-dessus, l’annotation @WebServlet précise le motif


de l’URL (URL pattern) pour lequel la servlet devra être sollicitée
(dans cet exemple « /hello »).
• Une fois l’application déployée dans un serveur de test en local, une
requête de la forme

[Link] de l'application]/hello
devrait répondre
Bonjour !

11
Motif d’URL d’une Servlet

• Une servlet pour être déployée a besoin d’un ou plusieurs motifs d’URL indiquant le chemin des requêtes qu’elle prend en
charge.
• Il existe plusieurs syntaxes qui sont toutes équivalentes :
 @WebServlet("/hello")
 @WebServlet({"/hello"})
 @WebServlet(urlPatterns={"/hello"})
• Il est possible de donner plusieurs motifs d’URL indiquant que la même servlet peut être sollicitée à partir de chemins
différents.
 @WebServlet({"/hello", "/bonjour"})
 @WebServlet(urlPatterns={"/hello", "/bonjour"})
• Il est possible d’utiliser le caractère générique *. Son utilisation est limitée car il ne peut apparaître que comme premier ou
dernier élément d’un motif :
// Toutes les URL se terminant par .html
 @WebServlet("*.html")
// Toutes les URL commençant par /hello/
 @WebServlet("/hello/*")
12
Servlet - Limitation

• Difficulté de produire du code html « lisible »


• Code html lié au code Java :
 Intégration de code html en provenance d’une agence web difficile.
 Impossibilité de valider syntaxiquement le code html par les IDE type Eclipse
• La servlet est plus destinée à interagir avec les couches métier.

Java Server Page

13
JSP

• Page html ayant l’extension « .jsp » et permettant d’éxècuter des éléments


dynamiques à partir :
 De scriptlets : code java directement intégré à la page.
 De taglibs : nouvelles balises interprétées par le conteneur Web et permettant de
réaliser des traitements et de générer du code html
 Des expressions languages

• Existence de nombreuses librairies de taglibs :


 JSTL : Java Standard Taglibs
 Struts
 Spring (spring-security taglib)

• Possibilité de créer de nouvelles taglibs


14
De la JSP à la Servlet

transforme compile
« en servlet »

[Link] hello_jsp.java hello_jsp.class

Transformée en Servlet, une page jsp possède toutes les méthodes et


propriétés d’une servlet

15
Les exemples avec JSP

• Des variables prédéfinies dans JSP


<!-- Import déclaration -->
<%@ page import="[Link].*, [Link].*" %>
<%@ page import="[Link], [Link].*" %>

16
Des variables prédéfinies dans JSP

Quelques variables disponibles dans JSP à utiliser:


request : [Link]
response: [Link]
out: [Link]
<%
// Using out variable:
[Link]("<h1>Now is "+ new Date()+"</h1>");
// Using request variable:
String serverName= [Link]();
// Using response variable:
[Link]("[Link]
%>

17
Le code Java dans HTML (JSP)

<%@ page import="[Link],[Link].*"%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Java In HTML</title> </head>
<body>
<% Random random = new Random(); // Returns a random number (0, 1 or 2)
int randomInt = [Link](3);
if (randomInt == 0) { %> <h1>Random value =<%=randomInt%></h1> <% }
else if (randomInt == 1) { %> <h2>Random value =<%=randomInt%></h2> <% }
else { %> <h3>Random value =<%=randomInt%></h3> <% } %>
</body>
</html>
18
Définir des méthodes dans JSP en utilisant <%! %>

• À la base, JSP est compilé en Servlet (une classe). Donc, JSP vous permet de créer des méthodes à
l'intérieur de JSP. Ces méthodes sont déclarés dans <%! %>
<%!
public int sum(int a, int b) {
return a + b; }
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Method in JSP</title>
</head>
<body>
<h1>
1 + 2 = <%=sum(1, 2)%>
</h1>
</body>
</html>

19
JSP – Scriplets directives

• Permettent de préciser des informations globales sur la page


• 3 directives :
 Page
 Include
 taglib

20
JSP – Scriplets directives « page »

• Définit des caractéristiques sur la page JSP.


• Chaque caractéristique est déclarée une seule fois sauf « import »

<%@ page pageEncoding="UTF-8"


info="Page JSP Todo"
contentType="text/html; charset=UTF-8"%>
<%@ page import="[Link]"%>
<%@ page import="[Link]"%>

21
JSP – Scriplets directives « include »
• Permet d’inclure un fichier dans une page JSP
• Fichier peut être un fragment d’une page JSP, html
• L’inclusion est réalisée avant la page JSP incluant ne soit interprétée

<html> <nav class="navbar navbar-expand-lg navbar-light bg-light">


<head> <a class="navbar-brand" href="#">ToDo</a>
<link rel="stylesheet" href="css/[Link]"> <button class="navbar-toggler" type="button" d
</head> ata-toggle="collapse" data-target="#navbarNav" aria-
<body> controls="navbarNav" aria-expanded="false" aria-
<%@ include file="[Link]"%> label="Toggle navigation">
<div class="container">Liste de todos</div> <span class="navbar-toggler-icon"></span>
</body> </button>
</html> </nav>

22
Gestion des exceptions dans JSP

La gestion des exceptions est le processus permettant de gérer les


erreurs d'exécution.
Dans JSP, il existe deux manières d'effectuer la gestion des exceptions :
 Par les attributs errorPage et isErrorPage de la directive de page
 Par élément <error-page> dans le fichier [Link]

23
Exemple de gestion des exceptions dans jsp

Il y a 3 fichiers :
 [Link] pour les valeurs d'entrée
 [Link] pour diviser les deux nombres et afficher le résultat
 [Link] pour gérer l'exception

<form action= "[Link]" >


No1 :<input type= "text" name= "n1" /><br/><br/>
No2 :<input type= "text" name= "n2" /><br/><br/>
<input type= "submit" value= "diviser" />
</form>

24
Exemple de gestion des exceptions dans jsp

<%@ page errorPage= "[Link]" %>


<%

String num1=[Link]( "n1" );


String num2=[Link]( "n2" );

int a=[Link](num1) ;
int b=[Link](num2) ;
int c=a/b;
[Link]( "la division des nombres est : " +c);

%>

25
Exemple de gestion des exceptions dans jsp

<%@page isErrorPage= "true" %>

<h3>Désolé, une exception s'est produite !</h3>

L'exception est : <%= [Link]() %>

26
JSP – tag de commentaires

• Permet d’insérer des commentaires


• Contenu non interprété par le moteur de JSP
• Non restitués lors de la génération de la page html

<%-- Commentaires non restitués au client --%>

27
Les tags d’actions

• Permettent de réaliser des traitements courants


 Inclusion de pages JSP
 Forward vers une autre page
 Utilisation ou déclaration d’un bean
• Introduites par le tag de la forme
<jsp:nomAction attribut="valeur" >

28
Les actions

• jsp:include : permet d’inclure une page JSP


• jsp:forward : permet de rediriger vers une autre page
• jsp:useBean : permet d’utiliser ou d’instancier un objet. Utiliser
fréquemment pour typer les objets
• jsp:setProperty : permet de modifier une propriété d’un objet
• jsp:getProperty : permet d’obtenir la valeur d’une propriété
d’un objet

29
Les Expressions Languages

• Permet d’éviter l’utilisation de « scriplets »


• Les EL permettent :
 De manipuler facilement les objets
 De réaliser des tests basiques et des opérations
• Syntaxe
${ expression }

30
Exemple de paramètre EL

Dans cet exemple, nous avons créé deux fichiers [Link] et [Link].
Le fichier [Link] reçoit l'entrée de l'utilisateur et envoie la demande au
[Link] qui à son tour affiche le nom de l'utilisateur à l'aide d'EL.

<form action= "[Link]" >


Saisissez le nom :<input type= "text" name= "nom" /><br/>
<input type= "submit" value= "go" />
</form>

Bienvenue, ${ [Link] }

31
Exemple EL sessionScope

• Dans cet exemple, nous imprimons les données stockées dans la


portée de la session à l'aide d'EL.
• Pour cela, nous avons utilisé l'objet sessionScope.
<h3>bienvenue sur la page d'index</h3>
<%
[Link]( "user" , "moi" );
%>
<a href= "[Link]" >visite</a>

La valeur est ${ [Link] }

32
Java Servlet et JSP Hello World

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


pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World Java EE</title>
</head>
<body>
<h1>Hello JSP and Servlet!</h1>
</body>
</html>

33
Java Servlet et JSP Hello World

• Mettre à jour la page JSP (formulaire d'ajout)


<h1>Hello JSP and Servlet!</h1>
<form action="helloServlet" method="post">
Enter your name: <input type="text" name="yourName" size="20">
<input type="submit" value="Call Servlet" />
</form>

34
Java Servlet et JSP Hello World

• Maintenant, mettez le code suivant dans la méthode doPost() :


String yourName = [Link]("yourName");
PrintWriter writer = [Link]();
[Link]("<h1>Hello " + yourName + "</h1>");
[Link]();

35
JSP et Java Beans
 Un des objectifs des JSP / Servlets
 Ne pas mélanger du code HTML au code Java des Servlets

 D’un autre coté si c’est pour mettre du code Java dans le code JSP qu’est ce qu’on y gagne ?

 Un point important dans la conception de pages JSP est de minimiser le code Java embarqué
dans les pages

 Déporter la logique métier dans des composants objets qui seront accédés depuis les pages
JSP
 Simplification des traitements inclus dans la JSP

 Possibilité de réutilisation des composants depuis d’autres JSP ou d’autres composants

 Les spécifications JSP définissent une manière standard d’intérargir avec des composants Java
Beans

36
Java Bean
 Qu’est-ce qu’un composant Java Bean ?
 Un composant java (objet) dont la classe respecte certaines règles d’écriture

 Le respect de ces règles d’écriture permet ensuite d’utiliser ces composants de manière standard

 Composants Java Beans depuis JSP

 Composants graphiques pour la construction d’interface utilisateurs

 …

 Une classe Java Bean


 Classe publique

 Possède un constructeur public sans arguments

 Regroupe un ensemble de propriétés


accessibles par des méthode de la forme getXXX() où XXX est le nom de la propriété

 éventuellement modifiables par une méthode setXXX() où XXX est le nom de la propriété
 Implémente en option l’interface [Link]

37
package test;
 Un exemple de bean public class Personne {
private String nom;
Propriété privée private String prenom;
private int age = 0;

public Personne() {
[Link] = "Abdallah"; // nom par défaut
[Link] = "Med"; // prénom par défaut
Accesseur (« getter ») }

public String getNom() {


return ([Link]);
}
Modifieur (« setter »)
public void setNom(String nom) {
[Link] = nom;
}
...
public int getAge () {
return ([Link]);
}

public void setAge(int age) {


[Link] = age;
}
} 38
Utiliser un bean depuis une JSP
 Le tag <jsp:useBean>
 Permet de localiser une instance ou bien d’instancier un bean pour l’utiliser
dans la JSP

 Syntaxe
Nom utilisé pour la variable qui
servira de référence sur le bean
<jsp:useBean
La classe du bean
id="beanInstanceName"
class="[Link]" Optionnel, le type de la référence
type="[Link]" beanInstanceName si ce n’est pas
scope="page|request|session|application" le type défini par l’attribut class
/>
Optionnel, détermine la portée durant laquelle le bean estdéfini
et utilisable

• le bean demandé est déjà instancié pour la portée précisée :


 renvoi de sa référence

• le bean demandé n’est pas déjà présent pour la portée précisée:


 instanciation du bean
 ajout de celui-ci à la portée spécifiée

39
Utiliser un bean depuis une JSP
 L’attribut scope

page valeur par défaut


bean utilisable dans toute la page JSP ainsi que dans les fichiers statiques inclus.

request bean accessible durant la durée de vie de la requête.


La méthode getAttribute() de l'objet request permet d'obtenir une référence sur le bean.

session bean utilisable par toutes les JSP qui appartiennent à la même sessionque la JSP qui a
instanciée le bean.
Le bean est utilisable tout au long de la session par toutes les pages qui y participent.
La JSP qui créé le bean doit avoir l'attribut session = "true" dans sa directive page

application bean utilisable par toutes les JSP qui appartiennent à la même application que la JSP qui a
instanciée le bean.
Le bean n'est instancié que lors du rechargement de l'application

40
Utiliser un bean depuis une JSP
 exemple

<jsp:useBean
id="utilisateur"
Définition dans la session d’un java bean instance de la
class="[Link]"
classe Personne du package test et désigné par la
scope="session" référence utilisateur
/>

<html>
<body>
<ul>
<li>NOM : <%=[Link]()%></li>
<li>PRENOM : <%=[Link]()%></li>
<li>AGE : <%=[Link]()%></li>
</ul>
</body>
</html>
41
Fixer les propriétés d’un bean depuis une JSP
 Le tag <jsp:setProperty>
 Permet de mettre à jour la valeur de un ou plusieurs attributs d’un bean

 Syntaxe

<jsp:setProperty name="beanInstanceName"
property="propertyName"
value="string|<%=expression%>"
/>

<jsp:useBean id="utilisateur" class="[Link]" scope="session"/>


...
<jsp:setProperty name="utilisateur" property="nom" value="Toto"/>
<jsp:setProperty name="utilisateur" property="age" value="34"/>

Quand le type de la propriété du Bean n'est pas String une conversionautomatique est effectuée en utilisant la
méthode valueOfde la classe enveloppe
<% [Link]([Link]("34"));%>
42
Fixer les propriétés d’un bean depuis une JSP
 Possibilité de fixer les propriétés du bean à l’aide des paramètres de la requête

 Syntaxe
<jsp:setProperty name="beanInstanceName" property="propertyName"/>

Le nom de la propriété est le même que le nom du paramètre de la requête

<jsp:setProperty name="beanInstanceName" property="propertyName"


param="paramétrage"/>

Le nom de la propriété est différent du nom du paramètre de la requête

MaPageJSP?name="Ali"&age="24"

<jsp:useBean id="utilisateur" class="[Link]" scope="session"/>


...
<jsp:setProperty name="utilisateur" property="nom" param="name"/>
<jsp:setProperty name="utilisateur" property="age" param="age"/>

<jsp:setProperty name="beanInstanceName" property="*"/>


Fixe toutes les propriétés correspondant à des paramètres de la requête
Accéder aux propriétés d’un bean depuis une JSP
 Le tag <jsp:getProperty>
 Permet d’obtenir la valeur d’un attribut d’un bean

 Syntaxe
<jsp:getProperty name="beanInstanceName" property="propertyName" />

<jsp:useBean id="utilisateur" class="[Link]" scope="session"/>


...
<body>
<ul>

<li>Nom : <jsp:getProperty name="utilisateur" property="nom"/></li>


<li>Age : <jsp:getProperty name="utilisateur" property="age"/></li>
</ul>
...

44

Vous aimerez peut-être aussi