Vous êtes sur la page 1sur 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[]
getParameterValues(String
Key)

Rcupre les valeurs correspondant au paramtre Key (cl)


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 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(String Dfinit le type MIME de la rponse HTTP, c'est--dire le type de


type)
donnes envoyes au navigateur

void setContentLength(int
len)

Dfinit la taille de la rponse

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
getOutputStream()

Dfinit un flot de donnes envoyer au client, par


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>

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}