Вы находитесь на странице: 1из 8

JAVA EE

Les Servlets :
sont des applications Java fonctionnant du ct serveur (tels que ASP ou
bien PHP).
Elles s'excutent dans un moteur de servlets utilis qui sert tablir le lien
entre la servlet et le serveur Web .
1. Reoit des requtes HTTP
2. Effectue traitement.
3. Fournit une rponse HTTP
Si le type de la requte est GET, alors la mthode de la Servlet qui traite la
requte est la suivante : void doGet(req, res)
Si le type de la requte est POST alors elle est traite par la mthode :
void doPost(req, res)
la servlet est cre puis initialise void init() Cette mthode nest appele
par le serveur quune seule fois lors du chargement en mmoire par le
moteur de servlet.
HttpServletRequest fournit un ensemble de mthodes pour avoir toutes
les informations concernant une requte
String getMethod() : Rcupre la mthode HTTP utilise par le client
String getHeader(String name) : Rcupre la valeur de lentte
demande
String getRemoteHost() : Rcupre le nom de domaine du client
String getRemoteAddr() : Rcupre l'adresse IP du client
String getServerName() : Rcupre le nom du serveur
String getServerPort() : Rcupre le numro de port du serveur
String getParameter(String name) : Rcupre la valeur du paramtre
name d'un formulaire. Lorsque plusieurs valeurs sont prsentes, la
premire est retourne
String[] getParameterValues(String name) : Rcupre les valeurs
correspondant au paramtre name d'un formulaire, c'est--dire dans le cas
d'une slection multiple (cases cocher, listes choix multiples) les
valeurs de toutes les entits slectionnes
Enumeration getParameterNames() : Retourne un objet de type
Enumeration contenant la liste des noms des paramtres passs la
requte

Lire la requte
A l'intrieur de la mthode DoXXX() (Doget() ou DoPost() selon la mthode
invoque) la requte de l'utilisateur est passe en paramtres sous forme
d'objet (ou plus exactement l'interface)HttpServletRequest .
Afin de comprendre son fonctionnement, il est essentiel de connatre la
faon selon laquelle les requtes sont transmises du client au serveur
par le protocole HTTP.
Voici les diffrentes mthodes de l'objet HttpServletRequest
Mthode

Description

String getMethod()

Rcupre la mthode HTTP utilise par le client

String
getHeader(String Key)

Rcupre la valeur de l'attribut Key de l'en-tte

String
getRemoteHost()

Rcupre le nom de domaine du client

String
getRemoteAddr()

Rcupre l'adresse IP du client

String
getParameter(String
Key)

Rcupre la valeur du paramtre Key (cl) d'un


formulaire. Lorsque plusieurs valeurs sont
prsentes, la premire est retourne

String[]
Rcupre les valeurs correspondant au
getParameterValues(St paramtre Key (cl) d'un formulaire, c'est--dire
ring Key)
dans le cas d'une slection multiple (cases
cocher, listes choix multiples) les valeurs de
toutes les entits slectionnes
Enumeration
getParameterNames()

Retourne un objet Enumeration contenant la liste


des noms des paramtres passs la requte

String
getServerName()

Rcupre le nom du serveur

String getServerPort()

Rcupre le numro de port du serveur

Crer la rponse
De la mme faon, la rponse fournir l'utilisateur est reprsente sous
forme d'objetHttpServletResponse.
Voici les diffrentes mthodes de l'objet HttpServletResponse
Mthode

Description

String setStatus(int
StatusCode)

Dfinit le code de retour de la rponse

void
setHeader(String
Nom, String Valeur)

Dfinit une paire cl/valeur dans les en-ttes

void
setContentType(Strin
g type)

Dfinit le type MIME de la rponse HTTP, c'est-dire le type de donnes envoyes au navigateur

void
Dfinit la taille de la rponse
setContentLength(int
len)
PrintWriter
getWriter()

Retourne un objet PrintWriter permettant


d'envoyer du texte au navigateur client. Il se
charge de convertir au format appropri les
caractres Unicode utiliss par Java

ServletOutputStream Dfinit un flot de donnes envoyer au client, par


getOutputStream()
l'intermdiaire d'un objet ServletOutputStream,
driv de la classe java.io.OutputStream
void
sendredirect(String
location)

Permet de rediriger le client vers l'URL location

Le JavaServer Pages ou JSP est une


technique :
permet aux dveloppeurs de gnrer dynamiquement du code HTML, XML
ou tout autre type de page web
Les JSP sont compiles par un compilateur JSP pour devenir des servlets
Java.

lments de scripts JSP :


Commentaire :
Cet lment de script est utilis pour faire un commentaire dans le code
JSP
Le texte dans un commentaire JSP ne sera pas envoy au client ni compil
dans la Servlet
<%-- --%>

Expression :
<%= et %>

Dclaration
Une dclaration permet dinsrer du code dans la classe de la Servlet.
Les attributs et les mthodes dclares dans la page JSP sont utilisables
dans toute la page JSP
Les dclarations sont placs entre les symboles <%! et %>
<%! int variableDeClasse = 0; %>
<%!
private int count = 0;
private int incrementCount() { return count++;}
%>

Directive page
Directive include
<%@ include file="uneAutreJSP.jsp" %>

Tout le contenu du fichier externe est inclus comme sil tait saisi
directement dans la page JSP.
Pas de sparation de la porte des variables

Directive JSP : page

La directive page dfinit les attributs spcifiques une page.


Des attributs possibles pour la directive page sont :
import : Importe un paquetage (package) Java. Cette directive rsulte
en une instruction import dans la servlet.
<%@ page import="java.util.*" %> // import

contentType : Dfinit le type de contenu de la page gnre. Par exemple,


ce peut tre text/html pour du HTML.
<%@ page contentType="text/html" %> // contentType

errorPage : Indique la page afficher si une exception se produit pendant


le traitement de la requte HTTP.
<%@ page errorPage="pageErreur.jsp" %> //la page d'erreur

isErrorPage : Si cette valeur est true, la page est une page d'erreur.

<%@ page isErrorPage=false %> // pas une page d'erreur

La porte des objets


un objet de porte page n'est accessible que sur une page JSP donne ;

un objet de porte requte n'est accessible que durant le cheminement


d'une requte dans l'application, et n'existe plus
ds lors qu'une rponse est renvoye au client ;
un objet de porte session est accessible durant l'intgralit de la visite
d'un client donn, condition bien sr que le
temps d'inactivit dfini par le conteneur ne soit pas dpass durant cette
visite ;
un objet de porte application est accessible durant toute l'existence de
l'application et par tous les clients.

Le JavaBean
Un bean :
doit tre une classe publique ;
doit avoir au moins un constructeur par dfaut, public et sans
paramtres. Java l'ajoutera de lui-mme si aucunconstructeur n'est
explicit ;
peut implmenter l'interface Serializable, il devient ainsi persistant et
son tat peut tre sauvegard ;
ne doit pas avoir de champs publics ;
peut dfinir des proprits (des champs non publics), qui doivent
tre accessibles via des mthodes publiques getter et setter,
suivant des rgles de nommage.

Les actions standard

<%-- L'action suivante rcupre un bean de type Coyote et nomm "coyote"


dans la porte requte s'il existe, ou en cre un sinon. --%>
<jsp:useBean id="coyote" class="com.sdzee.beans.Coyote"
scope="request"/></jsp:useBean>
<%-- Elle a le mme effet que le code Java suivant : --%>
<%
com.sdzee.beans.Coyote
coyote
=
(com.sdzee.beans.Coyote)
request.getAttribute( "coyote" );
if ( coyote == null ){
coyote = new com.sdzee.beans.Coyote();
request.setAttribute( "coyote", coyote );}%>

tudions les diffrents attributs de cette action.


La valeur de l'attribut id est le nom du bean rcuprer, ou le nom que
vous souhaitez donner au bean crer.
L'attribut class correspond logiquement la classe du bean. Il doit
obligatoirement tre spcifi si vous souhaitez crer un bean, mais pas
si vous souhaitez simplement rcuprer un bean existant.
L'attribut optionnel scope correspond la porte de l'objet. Si un bean
du nom spcifi en id existe dj dans ce scope, et qu'il est du type
ou de la classe prcis(e), alors il est rcupr, sinon une erreur
survient. Si aucun bean de ce nom n'existe dans ce scope, alors un
nouveau bean est cr. Enfin, si cet attribut n'est pas renseign,
alors le scope par dfaut sera limit la page en cours.
L'attribut optionnel type doit indiquer le type de dclaration du bean. Il
doit tre une superclasse de la classe du bean, ou une interface
implmente par le bean. Cet attribut doit tre spcifi si class ne l'est
pas, et vice-versa.
En rsum, cette action permet de stocker un bean (nouveau ou
existant) dans une variable, qui sera identifie par la valeur saisiedans
l'attribut id.

L'action standard getProperty


Lorsque l'on utilise un bean au sein d'une page, il est possible par le biais
de cette action d'obtenir la valeur d'une de ses
proprits :
Code : JSP

<%-- L'action suivante affiche le contenu de la proprit 'prenom' du bean


'coyote' : --%>
<jsp:getProperty name="coyote" property="prenom" />
<%-- Elle a le mme effet que le code Java suivant : --%>
<%= coyote.getPrenom() %>

L'action standard setProperty

Il est enfin possible de modifier une proprit du bean utilis. Il existe pour
cela quatre faons de faire via l'action standard ddie cette tche :
Code : JSP - Syntaxe 1
<%-- L'action suivante associe une valeur la proprit 'prenom' du bean
'coyote' : --%>
<jsp:setProperty name="coyote" property="prenom" value="Wile E." />
<%-- Elle a le mme effet que le code Java suivant : --%>
<% coyote.setPrenom("Wile E."); %>

Code : JSP - Syntaxe 2


<%-- L'action suivante associe directement la valeur rcupre depuis le
paramtre de la requte nomm ici 'prenomCoyote' la proprit 'prenom' : -%>
<jsp:setProperty
name="coyote"
property="prenom"
param="prenomCoyote"/>
<%-- Elle a le mme effet que le code Java suivant : --%>
<% coyote.setPrenom( request.getParameter("prenomCoyote") ); %>

Code : JSP - Syntaxe 3


<%-- L'action suivante associe directement la valeur rcupre depuis le
paramtre de la requte nomm ici 'prenom' la proprit de mme nom : --%>
<jsp:setProperty name="coyote" property="prenom" />
<%-- Elle a le mme effet que le code Java suivant : --%>
<% coyote.setPrenom( request.getParameter("prenom") ); %>

Code : JSP - Syntaxe 4


<%-- L'action suivante associe automatiquement la valeur rcupre depuis
chaque paramtre de la requte la proprit de mme nom : -%>
<jsp:setProperty name="coyote" property="*" />
<%-- Elle a le mme effet que le code Java suivant : --%>
<% coyote.setNom( request.getParameter("nom") ); %>
<% coyote.setPrenom( request.getParameter("prenom") ); %>
<% coyote.setGenius( Boolean.valueOf( request.getParameter("genius")) ); %>

Laction standard include


Une autre balise d'inclusion dite "standard" existe, et permet d'inclure du
contenu de manire "dynamique". Le contenu sera ici charg l'excution,
et non la compilation comme c'est le cas avec la directive prcdente :
<%-- L'inclusion dynamique d'une page fonctionne par URL relative :--%>
<jsp:include page="page.jsp" />
<%-- Son quivalent en code Java est : --%>
<% request.getRequestDispatcher( "page.jsp" ).include( request,response ); %>
<%-- Et il est impossible d'inclure une page externe commeci-dessous : --%>
<jsp:include page="http://www.siteduzero.com" />

excute la page indique et inclure le rsultat de la page dans la sortie de


la page d'appel, la place du <jsp: include dclaration.

L'action standard forward

L'action de forwarding est ainsi limite aux pages prsentes dans le


contexte de la servlet ou de la JSP utilise :
<%-- Le forwarding vers une page de l'application fonctionne par URL relative : -%>
<jsp:forward page="/page.jsp" />
<%-- Son quivalent en code Java est : --%>
<% request.getRequestDispatcher( "/page.jsp" ).forward( request,response ); %>
<%-- Et il est impossible de rediriger vers un site externe commeci-dessous : -%>
<jsp:forward page="http://www.siteduzero.com" />

La session
Cration de la session : Afin d'obtenir une session, un identifiant pour
notre internaute, nous allons utiliser la mthode "getSession" de l'objet
"HttpServletRequest". Si getSession
renvoie "null" la cration de la session est autorise, cela signifie qu'elle
n'existait pas auparavant.
Nous pouvons nanmoins nous affranchir d'un tel test en passant le
paramtre
"true" cette mthode. Ainsi, si aucune session n'existe dj, une
nouvelle sera
automatiquement cree.
L'expression la plus simple de ce que nous venons d'noncer est :
HttpSession session = request.getSession(true); // session_start() en php
Rcupration et stockage de l'information
getAttribute("cle ") :
setAttribute("cle","valeur") :
Terminer une session :Deux choix s'offrent nous pour terminer une
session, soit la laisser s'expirer seule, soit mettre fin sa dure de vie en
utilisant une mthode spcifique de
l'objet HttpSession :
session.invalidate();
getId(), getCreationTime(), getLastAccessedTime() : retournent
respectivement l'ID de session, sa date de cration et la date de dernire
visite du client concern. setMaxActiveInterval(int) : indique le temps
(en secondes) au bout duquel une session expire. Ce paramtre est fix
globalement une application web dans le descripteur web.xml. Il peut
aussi tre chang par appel la mthode getMaxActiveInterval(int).
Fixer la taille maximale d'une session dans le fichier web.xml :
<session-config>
<session-timeout>300</session-timeout>
</session-config>
Chargement du driver
Nous avons, dans le chapitre prcdent, rcupr le driver JDBC correspondant MySQL, et
nous l'avons ajout au classpath du projet. Il nous est maintenant ncessaire de procder ce
que l'on nomme le chargement du driver depuis le code de notre application. Voici le code
minimal ncessaire :
1/* Chargement du driver JDBC pour MySQL */
2try {
3 Class.forName( "com.mysql.jdbc.Driver" );
4} catch ( ClassNotFoundException e ) {
5 /* Grer les ventuelles erreurs ici. */
6}

Вам также может понравиться