Académique Documents
Professionnel Documents
Culture Documents
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()
String
getHeader(String Key)
String
getRemoteHost()
String
getRemoteAddr()
String
getParameter(String
Key)
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()
String
getServerName()
String getServerPort()
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)
void
setHeader(String
Nom, String Valeur)
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()
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
isErrorPage : Si cette valeur est true, la page est une page d'erreur.
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.
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."); %>
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}