Vous êtes sur la page 1sur 7

Java EE est une collection de composants, de conteneurs et de services permettant de créer et de

déployer des applications distribuées au sein d'une architecture standardisée. Elle est destinée aux gros
systèmes d'entreprise.

Les serveurs d'applications mettent à disposition les fonctionnalités permettant de réaliser des
applications d'entreprise, comme : communication entre ordinateurs, mis en place de protocole
adaptés, gestion des connexions avec une DB, présentation de pages Web, etc.

- Architecture multi-tiers :

Généralement, une application d'entreprise est composée de trois couches fondamentales (d'où le
terme décomposition en trois tiers) :
- Présentation - La logique métier - Persistance

1ère couche (Présentation) :


Cette interface est souvent appelée couche de présentation car sa fonction consiste à présenter les
données à l'utilisateur et à lui permettre de fournir des informations au système.

2ème couche (Logique métier) :


La logique métier est mise en œuvre à partir des règles métier. Elle permet à l'application de
fonctionner et de traiter les données.

3ème couche (Persistance) :


La couche persistance assure la lecture et l’écriture des données à partir des différentes sources.

Architecture 1 tiers Architecture 2 tiers

Architecture 3 tiers
- Les servlets :

Il s'agit de programmes exécutés sur un serveur Web, qui servent de couche intermédiaire entre une
requête provenant d'un navigateur Web et un autre service HTTP.

Les tâches d’une servlet :

1. Lire toutes les données envoyées par l'utilisateur.


2. Chercher d'autres informations sur la requête, à l'intérieur de cette requête http.
3. Générer des résultats.
4. Formater le résultat dans un document.
5. Définir les paramètres de la réponse HTTP.
6. Renvoyer le document au client.

Web.xml :
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>com.sdzee.servlets.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/toto</url-pattern>
</servlet-mapping>

- <servlet-name> : permet de donner un nom à une servlet, qui sera utilisé comme référence à la
servlet.

- <servlet-class> : sert à préciser le chemin de la classe de la servlet.

- <url-pattren> : permet de préciser la ou les urls relatives au travers desquelles la servlet sera
accessible.

Servlet.java :
class Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExceptin,
IOException {
PrintWriter out = response.getWriter() ;
out.println(″<html><head></head><body></body>″);
String nom = resquest.getParameter(″nom″);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletExceptin,
IOException {
doGet(request,response);
}
Une servlet représente un CGI, et c'est un programme qui ne fonctionne qu'au sein d'un serveur Web.
Ce programme est spécialisé et adaptée au protocole HTTP. C'est le serveur Web qui se charge de le
démarrer au moment opportun.

L'interface ServletRequest définit plusieurs méthodes permettant de lire les données présentes dans
la requête :

- public String[] getParameterValues(String nom) : retourne les valeurs du paramètre dont le nom est
passé en argument.

- public Enumeration getParameterNames() : retourne une énumération des noms des paramètres de
la requête.

- public Map getParameterMap() : retourne tous les paramètres stockés dans un objet de type Map.
Chaque nom de paramètre est une clé.

- public String getProtocol() : retourne le protocole employé par la requête de (HTTP...).

- public String getServerName() : le nom du serveur ayant reçu la requête.

- public String getRemoteAddr() : l'adresse IP du client ayant envoyé la requête.

- public String getRemoteHost() : le nom du client ayant envoyé la requête.

- public String getQueryString() : lit les paramètres ajoutés à la fin de l’URL.

Cycle de vie d’une servlet :

Chaque servlet passe par quatre étapes :

- Chargement et instanciation.

- Initialisation.

- Traitement des requêtes.

- Fin de vie.

web.xml :

<servlet>
...
<init-param>
<param-name> jdbc.Driver </param-name>
<param-value> com.mysql.jdbc.Driver </param-value>
</init-param>
</servlet>

Dans une servlet, pour récupérer le nom de l’objet instancié dans le web.xml, on utilise la fonction
getInitParam() :
String pilote = getInitParam(″jdbc.Driver″) ;
Paramètres d’une application web :

web.xml :

<context-param>
<param-name> jdbc.Driver </param-name>
<param-value> com.mysql.jdbc.Driver </param-value>
</context-param>

Dans une servlet, pour récupérer le nom de l’objet instancié dans le web.xml, on utilise la fonction :
String pilote = getServletContext().getInitParam(″jdbc.Driver″) ;

Gestion des exceptions :

Dans une application web, on peut gérer les exceptions renvoyé par la page, en redirigeant l’utilisateur
vers une page HTML où on lui affiche un message d’erreur.

Pour cela, on doit ajouter la balise <error-page> dans le fichier web.xml :

web.xml :

<error-page>
<exception-type> java.lang.NumberFormatException </exception-type>
<location> WEB-INF/NumberIncorrect.html </location>
</error-page>

- <exception-type> : on précise le type d’exception à gérer.


- <location> : on indique la page HTML où on va rediriger l’utilisateur au cas de déclenchement de
l’exception.

Les sessions :

Toutes les données constituant une session sont conservées sur le serveur dans l'application Web
correspondante.

Pour commencer, la méthode getSession() de l’objet HttpServletRequest permet de récupérer la


session associé à la requête HTTP en cours :
- si elle existe déjà, elle renvoie la session active
- sinon, elle crée une nouvelle session.

Ensuite, lorsque la session est créée, on utilise les méthodes setAttribute() et getAttribute() de l’objet
créé afin de gérer cette session.

HttpSession session = request.getSession(); // création de la session


session.setAttribute("nom", "hindi"); // attribuer une valeur à la session
String nom = (String) session.getAttribute("nom"); // récupérer une valeurs stockée dans la session
session.invalidate(); // détruire la session définitivement
- JavaServer Pages (JSP) :

Les JSP sont des documents de type texte, contenant du code HTML ainsi que des scriptlets (et/ou des
expressions). Ces pages étant basées sur du code HTML ou XML.

Les pages JSP s'exécutent sous la forme de servlets. JSP définit des balises pour délimiter le code Java.

- Ces balises permettent de définir trois catégories d'éléments :

1. les directives ; 2. les scripts ;


3. les actions.

Les directives :

Les directives sont des éléments fournissant au conteneur des informations relatives à la page.

- page :
<%@ page attributs %>
ou en format XML
<jsp:directive.page attributs />

- include :
<%@ include file = "..." %>
ou en format XML
<jsp:directive.include file = "..." />

Une page JSP peut contenir plusieurs directives page. La directive include est employée pour inclure une
autre page, ou un fragment de page, dans la page JSP. Il peut s'agir d'un en-tête ou d'un pied de page.

Les scripts :

Les éléments de script permettent de placer du code java dans les pages JSP. Il en existe trois formes :

- les déclarations : employées pour déclarer, initialiser un attribut ou déclarer une méthode.
<%! déclaration %>
ou en format XML
<jsp:declaration>déclaration</jsp:declaration>

- les scriptlets : contiennent des instructions Java. Les scriptlets peuvent contenir n'importe quel code
Java valide.
<% fragment de code %>
ou en format XML
<jsp:scriptlet>fragment de code</jsp:scriptlet>

- les expressions : utilisées pour renvoyer directement au client.

1. la valeur d'une variable

2. la valeur retour d'une méthode.


<%= expression %>
ou en format XML
<jsp:expression>expression</jsp:expression>
Les actions :

Il est possible de définir de nouvelles actions et les utiliser dans nos pages JSP.

Dans les pages JSP, il est toujours très difficile de lire ce mélange à la fois de code HTML et de code Java.
De préférable, utiliser une écriture plus proche du HTML en utilisant la syntaxe du XML.

<jsp:useBean> :

Cet élément permet de rendre un JavaBean (objet) accessible dans la page. C’est simplement une
classe Java respectant un certain nombre de conventions. Les plus importantes :
- La classe d'un JavaBean doit posséder un constructeur par défaut.
- La classe d'un JavaBean doit posséder un ensemble de propriétés.

L'action <jsp:useBean> prend le paramètres suivants :


- id : le nom utilisé pour accéder au bean dans le reste de la page.
- scope : la portée du bean. Les valeurs possibles sont page, request, session et application.
- class : le nom de la classe bean.
- type : le type de la variable référençant le bean.

public class Personne {


private String nom ;
private String prenom ;

public Personne() { }

public String getNom() { return this.nom ; }


public void setNom(String nom) { this.nom = nom ; }

public String getPrenom() { return this.prenom ; }


public void setPrenom(String prenom) { this.prenom = prenom ; }
}
<jsp:useBean id="utilisateur" class="Personne" />
<jsp:setProperty name="utilisateur" property="prenom" prenom="Zakariya"/>
<jsp:getProperty name="utilisateur" property="prenom" /> // retourne "Zakariya"

<jsp:include> :

Elle est comme la directive <%@ page attributs %>, elle permet d’inclure une partie, de la page
appelée, au sein de la page jsp au moment de la compilation.
<jsp:include page="page.jsp">

<jsp:forward> :

Cette action permet de redirigé l’utilisateur vers une autre page jsp ou html.
<jsp:forward page="accueil.html">
- Java server pages Standard Tag Library (JSTL) :

JSTL est un ensemble de marqueurs standard permettant d’éviter le mélange du code Java et des
marqueurs XHTML. C’est l’ensemble standard d'actions personnalisées.

Les actions possibles :


- affectation d’une valeur (objet). - capture des exceptions.
- conditions. - l’accès aux bases de données.

Bibliothèques de marqueurs JSTL :

Domaine URI Préfixe classique


Noyau htt://java.sun.com/jsp/jstl/core c
Traitement XML htt://java.sun.com/jsp/jstl/xml x
i18n et formatage htt://java.sun.com/jsp/jstl/fmt fmt
Accès aux BD htt://java.sun.com/jsp/jstl/sql sql
Fonctions htt://java.sun.com/jsp/jstl/functions fn

La JSP doit importer l’URI de la bibliothèque et choisir un préfixe. Il y a deux manières pour cela :
<%@ taglib uri="http://java.sun.com/jsl/jstl/core" prefix="c" %>
ou bien format XML
<jsp:root xmlns:jsp="htt://java.sun.com/JSP/Page" xlmns:c="http://java.sun.com/jsp/jstl/core">

Ensuite, on peut utiliser toutes les actions de la bibliothèque du marqueur spécifié :


Action Description Exemple
<c:set> Initialise la valeur d’un objet <c:set var="upperLimit" value="20" />
<c:out> Evalue une expression et affiche son résultat <c:out value="Valeur de i : ${i}" />
<c:remove> Supprime une variable <c:remove var="maVar" />
<c:catch> Capture une exception java.lang.Throwable <c:catch var ="catchException">...</c:catch>
<c:if> Teste si une expression est vraie <c:if test="{i < 10}> ... </c:if>
<c:choose> Fournit plusieurs alternatives exclusives <c:choose>
<c:when> Représente une alternative (utilisé avec <c:when test="${i%2==0}"> ... </c:when>
choose) <c:otherwise> ... </c:otherwise>
<c:otherwise> Représente la dernière alternative (utilise </c:choose>
avec choose)
<c:forEach> Répète son corps pour chaque élément <c:forEach begin="3" end="{end} step="1">
d’une collection <c:forEach var="item" items="${tirage}" >
<c:forTokens> Itère sur une liste de tokens séparés par des <c:forTokens var="char" items="Bonjour
virgules tout le monde" delims=" "> ...</c:forTokens>
<c:import> Importe une ressource <c:import url="exemple.html"/>
<c:url> Encode une URL <c:url value="test.jsp" var="lien" />
<c:param> Ajoute des paramètres de requête ç une URL <c:param name="date"
(utilisé avec url) value="22/06/2010">
<c:redirect> Redirige vers une URL précise <c:redirect url="connexion.jsp">

Vous aimerez peut-être aussi