Vous êtes sur la page 1sur 28

Java EE

Chapitre 2: JSP / Servlet

1
Introduction

2
Web application
pp

• Partie « présentation » d’une application JavaEE:


– Servlet
– Filter
– JSP (Java Server Page)
– JSTL (Java Server Tag Library)
– JSF (Java Server Face)
– +
– Cl
Classes, bibliothèques
bibli hè (J
(Jar File)
Fil )
– Ressources (Document statiques, Images, …)

3
Packaging d’une application Web
en JavaEE (Web Component)
• U
Une application
li ti WebW b (*.html,
(* ht l *.jsp,
* j servlets,
l t …)) packagée
k é
dans un .jar .war)
• Structure d’une Web Application
pp Archive ((.war))
• *.html, *.png, *.jsp, …, applets.jar, midlets.jar
• WEB‐INF/web.xml
• Fichier de déploiement
• WEB‐INF/classes/
• .class
l d des servlets
l t ett des
d classes
l (JavaBean,
(J B …)) associées

• WEB‐INF/lib/
• .jar
jar additionnels provenant de tierce parties
• WEB‐INF/tlds/
• .tld décrivant les TagLibs
g
4
Le fichier WEB‐INF/web.xml

• Fichier
i hi ded dédéploiement
l i d
de l’l’application
li i
• Correspondance
p URI ‐> classes Servlets
• Valeurs d’initialisation des Servlets
• Valeurs d’environnement
d environnement
• Ressources
• Références vers EB Home, DataSource, Mail
Session,, …
• Contraintes de sécurité

5
Rappel Packaging d’une application
JavaEE complète

Racine (EAR)

Répertoire
Module EJB ((JAR)) META‐INF
META INF
Module
EJB…n(JAR) Module web
(WAR)
Descripteur de déploiement
(application.XML)

JSP
Servlet Web.xml HTML,…

6
SERVLET

7
Les Servlets
• Scripts
p serveur écrit en Java
• Servlets de Base : FileServlet, HttpServlet, …
• Exécution dans un espace isolé (Web
pp cat o )
Application)
• Spécification : Sun (sous partie de JavaEE)
• Implémentation de référence : Apache
Group (Jakarta Tomcat)

8
Exemple de Servlet
Hello World !
import javax.servlet.
javax.servlet.*;;
public class Hello extends HttpServlet {
protected void service(HttpServletRequest
p ( p q request,
q
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.print("<HTML> <head></head>");
out.print("<body><h1>Test Hello world</h1>
</body></html>");
/b d /h l ")
out.flush();}

} 9
Cycle de Vie des Servlets

10
L’initialisation de la servlet (1/4)
•Récupération des paramètres d ’initialisation
• WEB‐INF/web.xml

<servlet>
l t
<servlet‐name>Hello</servlet‐name>
<init‐param>
<param‐name>societe</param‐name>
<param‐value>ISET</param‐value>
/ p
</init‐param>
</servlet> WEB.XML

11
L’initialisation de la servlet (2/4)
public class Hello extends HttpServlet {
public void init(ServletConfig config)
throws ServletException {
super.init(config);
}
protected void service(HttpServletRequest request,
Htt S l tR
HttpServletResponse response))
throws ServletException, IOException {
out.print(getInitParameter
getInitParameter("societe"));

} 12
L’initialisation de la servlet (3/4)

• Récupération des paramètres du contexte de


l’application
• WEB‐INF/web.xml
<context‐param>
p
<param‐name>auteur</param‐name>
<param‐value>REKIK</param‐value>
p p
</context‐param>
<servlet>

</servlet>
13
L’initialisation de la servlet (4/4)

public class Hello extends HttpServlet {


public void init(ServletConfig config)
throws ServletException {
super.init(config);
}
protected void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
ServletContext context=getServletContext();
out.print((context.getInitParameter
out.print context.getInitParameter("auteur")
("auteur"));

}
14
La Session
javax.servlet.http.HttpSession
• Ouverture/récupération d ’une
une session
HttpSession session = req.getSession(false);
la session est récupérée ou null si elle n’existait
pas déjà
• HttpSession session = req.getSession(true);
la session est récupérée ou ouverte si elle
pas déjà
n’existait p j

15
La Session
javax.servlet.http.HttpSession
• Ajout/remplacement d ’une
une valeur
HttpSession.setAttribute(String name, Object value)
• Suppression d ’une valeur
HttpSession removeAttribute(String name)
HttpSession.removeAttribute(String
• Récupération des valeurs/d ’une valeur
Object HttpSession.getAttribute(String name)

16
Request Dispatch
• Redirige
g le traitement de la requête
q vers une autre servlet
ou JSP
– Utilisé pour le MVC
• Exemple
public class ForwardServlet extends HttpServlet {
public void doGet (HttpServletRequest request,
HttpServletResponse response) {
request.setAttribute
A ib (" i " "hello");
("action", "h ll ")
ServletContext context=getServletConfig().getServletContext().
context.getRequestDispatcher("/hello.jsp").forward(request,
t t tR tDi t h ("/h ll j ") f d( t
response);
}}
17
JSP/JSTL

18
JSP (Java Server Page)

• Server
S Sid Script
Side S i
– Insertion syntaxe Java dans les pages HTML
• Avantage par rapport aux servlets
– Ecriture moins verbeuse Orientée Web Designer
– Insérable par des outils auteurs dans le code de pages
HTML
– Extensible grâce aux JSTL
• Spécification
– JSR‐52
– JSR‐152 JavaServer Pages
g 2.0 Specification
p
19
Insertion des scripts
p

• Directives
Di ti
– <%@page import="java.util.*" %>
– <%@taglib prefix
prefix="c"
"c" uri="WEB‐INF/tld/core.tld"
uri "WEB INF/tld/core tld" %>
• Éléments de script
– Scriplets
S i l t <%
% code
d jjava %
%>
– Déclarations <%! Déclarations %>
– Expressions <%= expression %>
• TagLib
– <jsp:forward page="forward.jsp" />
– <jsp:include page="result.jsp" />

20
Exemple de traitement d ’un
formulaire
<HTML><HEAD><TITLE>Hello</TITLE></HEAD>
<BODY><H1> Hello
<%
String pname
pname;; // déclaration de variable
pname = request.getParameter
request.getParameter("
P ("name");
("name ")
");
if (pname
(pname==== null
null)) { out.println
out.println("World");
("World"); } else {
%>
Mister <%
<%=pname%>
pname%>
<% } // fin du else %>
</H1></BODY></HTML>
/H1 /BODY /HTML
21
JSTL
Java Server Tag Library
• Motivations
– Extension des JSP par des tiers
– Développement modulaire
– Développement sans Java (pour Web Designer)
• Principes
– Le document contient des éléments (tag)
supplémentaires
– Le générateur JSP appelle des classes tiers lors de la
transformation qui implantent Tag, IterationTag ou
BodyTag.
BodyTag
22
TagLib
g usuels

• Une liste non exhaustive …


– jjsp
p ((action standard))
– c (core)
– xml (xml,
(xml xpath et xslt)
– sql (sql)
– jsf/core, jsf/html, …
– logic
g ((Jakarta Struts))
– tags (TagLib)

23
TagLib
g usuels c (Core)
• URI="http://java.sun.com/jstl/core"
• Expression Language

• Variables
V i bl
– catch, out, set, remove
• Flow Control
– if choose (when,
if, (when otherwise),
otherwise) forEach,
forEach
• URL Management
– import (paramredirect, param), url (param)

24
Exemple d’Expression
Language)
• Arithmétique
– ${3/0}
$ / Infinity
– ${10%4} 2
– ${10 modd 4} 2
– ${(1==2) ? 3 : 4} 4
• Comparaison
– ${1 < 2} true
– ${1 lt 2} true
– ${100.0 == 100} true
– ${100.0 eq 100} true
– ${'hip' > 'hit'} false

25
Exemple
p de JSTL Core
• Variables
– <c:set var="mycart"
value ${sessionScope.cart} />
value="${sessionScope.cart}"/>
– <c:set var="bookId" value="${param.Remove}"/>
– <%
% mycart.remove(bookId);
t (b kId) %
%>
– <c:if test="${mycart.numberOfItems == 0}">
– <c:remove var="cart" scope="session"/>
– </c:if>
/c:if

26
Collaboration JSP/Servlet
<form action="processform.do" method="POST">
N
Nom: <input
i type="text"
" " name= " nom"" />
/
Prénom: <input type="text" name= " prenom" />
Adresse : <input type="text" name= " adresse" />
<input type= " submit " value="Process" />
</form>
/f
formClient.jsp

<servlet‐mapping>
<servlet‐name>FormServlet</servlet‐name>
<url‐pattern>/processform.do</url‐pattern>
</servlet‐mapping>
/ pp g
Web.xml
27
Collaboration JSP/Servlet
public class FormServlet extends HttpServlet {
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException {
Client client = new Client();
client.setNom(request.getParameter("
li t tN ( t tP t (" nom"));"))
client.setPrenom(request.getParameter(" prenom"));
client.setAdresse(request.getParameter("
li t tAd ( t tP t (" adresse"));
d "))
GestionClient.ajouterClient(client);
response.sendRedirect(" listClients.jsp"); } }

28

Vous aimerez peut-être aussi