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

Quel est votre langage serveur prfr pour le Web en 2015 ?

Suite au prcdent sondage 2014 sur votre langage serveur prfr pour le Web en 2014, qui a
vu 321 votants, nous avons dcid de le renouveler, pour cette anne 2015.
Le trio gagnant en 2014 tait :

1. PHP avec 115 avis favorables soit 35,83 %


2. Java avec 65 avis favorables soit 20,25 %
3. C# (ASP.Net) avec 50 avis favorables soit 15,58 %

Serveur d'applications
Un serveur d'applications est un logiciel d'infrastructure offrant un contexte d'excution
pour des composants applicatifs. Le terme est apparu dans le domaine des applications web.
Au sens strict les composants hbergs par le serveur d'applications ne sont pas de simples
procdures ou scripts mais de rels composants logiciels conformes un modle de
composants (EJB, COM, Fractal, etc.).

Principaux serveurs d'applications

Apache Geronimo de la Fondation Apache


GlassFish serveur d'application Open Source de Oracle
IBM Websphere Application Server
Microsoft ASP.NET
LTSP Cluster, une infrastructure libre pour le dploiement massif et centralis de terminaux
Novell exteNd Application Server
Oracle Application Server
Oracle WebLogic Server
Orion Application Server (en)
Sun Java System Application Server
Sybase EAServer
Systancia AppliDis Fusion 4
WebDev PC SOFT
WildFly (anciennement JBoss)

1
Interfaces de programmation

Ci-dessous, une liste de composants pouvant tre contenus dans une implmentation Java EE :

Servlet : Composant reprsentant le C (Controller) du Paradigme MVC


Portlet : Conteneur Web (extension de lAPI Servlet)
JavaServer Pages (JSP) : Framework Web
Java Standard Tag Library (JSTL) : bibliothque de balises pour les JSP
JavaServer Faces (JSF) : Java Server Face, Framework Web
EJB : Composants distribus transactionnels
JNDI : API de connexion des annuaires, notamment des annuaires LDAP, et espace de noms dobjet
(ENC)
JDBC : API de connexion des bases de donnes
Java Message Service (JMS) : API de communication asynchrone par message
JCA : API de connexion, notamment des PGI
JavaMail : API de gestion des mails
JMX : Extension dadministration des applications
JPA : API de gestion de la persistance des donnes
JTA : API de gestion des transactions
Java API for XML Processing (JAXP) : API danalyse XML
JAXM : API de communication asynchrone par XML
JAX-RPC / JAX-WS : API de communication synchrone par XML, par exemple laide du protocole
SOAP
JAXB : API de srialisation par XML
JAXR : API de gestion des registres XML, permettant denregistrer des Web Services en ebXML
Java RMI : API de communication distante entre des objets Java
Java IDL : API de communication entre objets Java et objets non-Java, via le protocole CORBA

2
Structure des fichiers d'une application web JSP/Servlet Standard

Quelques prcisions :
La racine de l'application, en violet sur le schma, est le dossier qui porte le nom de votre
projet et qui contient l'intgralit des dossiers et fichiers de l'application.
Le dossier nomm WEB-INF est un dossier spcial. Il doit obligatoirement exister et tre
plac juste sous la racine de l'application. Il doit son tour obligatoirement contenir :
o le fichier de configuration de l'application (web.xml) ;
o un dossier nomm classes, qui contient son tour les classes compiles (fichiers .class) ;
o un dossier nomm lib, qui contient son tour les bibliothques ncessaires au projet (archives
.jar).

Bref, tous les dossiers et fichiers marqus en rouge sur le schma doivent obligatoirement tre
nomms et placs comme indiqu sur le schma.

Les fichiers et dossiers perso placs directement sous la racine, en bleu sur le schma, sont
publics et donc accessibles directement par le client via leurs URL. (*)
Les fichiers et dossiers perso placs sous le rpertoire WEB-INF, en orange sur le schma,
sont privs et ne sont donc pas accessibles directement par le client. (*)

3
Structure des fichiers d'une application web JSP/Servlet Sous Eclipse

Le vert sur le schma, Eclipse a dplac la structure standard de l'application vers un dossier
nomm WebContent, et ajoute sous la racine un dossier src qui contiendra le code source de
vos classes (les fichiers .java). En outre (je ne les ai pas reprsents ici), sachez qu'Eclipse
ajoute galement sous la racine quelques fichiers de configuration qui lui permettront, via une
tambouille interne, de grer correctement l'application !

Sur le serveur d'applications que nous lui avons intgr. Ceci implique donc deux choses trs
importantes :

le dossier WebContent n'existe lgitimement qu'au sein d'Eclipse. Si vous dveloppez sans
IDE, ce rpertoire ne doit pas exister et votre application doit imprativement suivre la
structure standard prsente prcdemment ;
pour cette mme raison, si vous souhaitez utiliser votre application en dehors de l'IDE, il
faudra obligatoirement utiliser l'outil d'export propos par Eclipse. Raliser un simple copier-
coller des dossiers ne fonctionnera pas en dehors d'Eclipse

4
Dans une application Java EE le Framework est compos de :
la couche Modle est constitue d'objets Java ;
la couche Vue est constitue de pages JSP ;
la couche Contrle est constitue de servlets.

<!-- URL sans paramtres -->


/page.jsp

<!-- URL avec un paramtre nomm 'cat' et ayant pour valeur 'java' -->
/page.jsp?cat=java

<!-- URL avec deux paramtres nomms 'lang' et 'admin', et ayant pour valeur
respectivement 'fr' et 'true' -->
/page.jsp?lang=fr&admin=true

5
Chemin JSP complet en Servlet par Eclipse
C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalin
a\localhost\test\org\apache\jsp\test_jsp.java

Apple du JSP dans une servlet


public void doGet (HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {

this.getServletContext().getRequestDispatcher("/WEB-INF/test.jsp").forward(
request, response );
}

depuis notre instance de servlet (this), nous appelons la mthode getServletContext().


Celle-ci nous retourne alors un objet ServletContext, qui fait rfrence au contexte
commun toute l'application : celui-ci contient un ensemble de mthodes qui
permettent une servlet de communiquer avec le conteneur de servlet ;
celle qui nous intresse ici est la mthode permettant de manipuler une ressource,
getRequestDispatcher(), que nous appliquons notre page JSP. Elle retourne un objet
RequestDispatcher, qui agit ici comme une enveloppe autour de notre page JSP. Vous
pouvez considrer cet objet comme la pierre angulaire de votre servlet : c'est grce lui
que notre servlet est capable de faire suivre nos objets requte et rponse une vue. Il
est impratif d'y prciser le chemin complet vers la JSP, en commenant obligatoirement
par un / (voir l'avertissement et la prcision ci-dessous) ;
nous utilisons enfin ce dispatcher pour rexpdier la paire requte/rponse HTTP vers
notre page JSP via sa mthode forward()

6
Une page JSP ressemble en apparence une page HTML, mais en ralit elle est bien
plus proche d'une servlet : elle contient des balises derrire lesquelles se cache du code
Java.
Une page JSP est excute sur le serveur, et la page finale gnre et envoye au client
est une simple page HTML : le client ne voit pas le code de la JSP.
Idalement dans le modle MVC, une page JSP est accessible l'utilisateur travers une
servlet, et non pas directement.
Le rpertoire /WEB-INF cache les fichiers qu'il contient l'extrieur de l'application.
La mthode forward() de l'objet RequestDispatcher permet depuis une servlet de
rediriger la paire requte/rponse HTTP vers une autre servlet ou vers une page JSP.

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

Configuration dun BEAN

7
Apprendre utiliser un Bean depuis une page JSP sans utiliser de code Java !

Un Bean est un objet Java rutilisable qui reprsente une entit, et dont les
donnes sont reprsentes par des proprits.
Un Bean est une classe publique et doit avoir au moins un constructeur par dfaut,
public et sans paramtres.
Une proprit d'un Bean est un champ non public, qui doit tre accessible travers
un couple de getter/setter.
Il faut configurer le build-path d'un projet web sous Eclipse pour qu'il y dpose
automatiquement les classes compiles depuis les codes sources Java de vos
objets.
Un Bean peut par exemple tre transmis d'une servlet vers une page JSP (ou une
autre servlet) en tant qu'attribut de requte.

8
La technologie JSP
Les balises
Balise Fonctionnement
<%--Commentaire --%> Commentaires
<%@ page pageEncoding="UTF-8" %> Changer lencodage de la page
out.println("") Ecrire du Code
request.getParameter("") Rcupration du paramtre partir du URL
request.getAttribute("") Rcupration du un Objet partir du request
request.setAttribute("","") Stockage du un Objet dans l'objet request
Retourne le contenu d'une chane, Notez bien
<%= "Text" %>
l'absence de point-virgule
<%! String chaine = "." ; %> Dclarer une variable l'intrieur d'une JSP
<%@ et %> elles contrlent comment le conteneur de servlets va
grer votre JSP
<%@ page import="java.util.List, importer des classes Java :
java.util.Date" %>

9
Les directives
Les Directives JSP Permettent :

d'importer un package ;
d'inclure d'autres pages JSP ;
d'inclure des bibliothques de balises (nous y reviendrons dans un prochain chapitre) ;
de dfinir des proprits et informations relatives une page JSP.

Il existe trois types de directives :

1. Taglib : inclut une bibliothque personnalise


2. Page : La directive page dfinit des informations relatives la page JSP

<%@ page
Language = "..."
extends = "..."
import = "..."
session = "true | false"
buffer = "none | 8kb | sizekb"
autoFlush = "true | false"
isThreadSafe = "true | false"
isELIgnored = "true | false"
info = "..."
errorPage = "..."
contentType = "..."
pageEncoding = "..."
isErrorPage = "true | false"
%>

3. include. Inclut le contenu d'un autre fichier dans le fichier courant

<%@ page import="java.util.ArrayList" %>


<%@ include file="test_inc.jsp" %>

<%@ page import="java.util.ArrayList" %>


<jsp:include page="test_inc.jsp" />

10
La porte des objets
Il existe au total quatre portes diffrentes dans une application :

page (JSP seulement) : les objets dans cette porte sont uniquement accessibles dans
la page JSP en question ;
requte : les objets dans cette porte sont uniquement accessibles durant l'existence de
la requte en cours ;
session : les objets dans cette porte sont accessibles durant l'existence de la session en
cours ;
application : les objets dans cette porte sont accessibles durant toute l'existence de
l'application.

11
Laction standard

Les actions standard sont de nombres 5 :

A). <jsp:include> :
Inclure une page JSP dans une autre, au moment o la requte est traite.

B). <jsp:useBean> :

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.

Action permet de stocker un Bean (nouveau ou existant) dans une


variable, qui sera identifie par la valeur saisie dans l'attribut id.

12
C). <jsp:getProperty>

D). <jsp:setProperty>

E). <jsp:forward>

La dernire action que nous allons dcouvrir permet d'effectuer une redirection vers une autre
page. Comme toutes les actions standard, elle s'effectue ct serveur et pour cette raison il est
impossible via cette balise de rediriger vers une page extrieure l'application. L'action
de forwarding est ainsi limite aux pages prsentes dans le contexte de la servlet ou de la JSP
utilise :

13
Il faut savoir que lorsque vous utilisez le forwarding, le code qui existe aprs cette balise dans la
page il ne sexcute pas

Expression Langage

La ralisation de tests

oprateurs arithmtiques, applicables des nombres : +, -, *, /, % ;


oprateurs logiques, applicables des boolens : &&, ||, ! ;
oprateurs relationnels, bass sur l'utilisation des mthodes equals() et compareTo()
des objets compars : == ou eq, != ou ne, < ou lt, > ou gt, <= ou le, >= ou ge.
les conditions ternaires, de la forme : test ? si oui : sinon ;
les vrifications si vides ou null, grce l'oprateur empty. ${empty '' }

Les objets implicites

Les objets implicites. Il en existe deux types :

ceux qui sont mis disposition via la technologie JSP ;


ceux qui sont mis disposition via la technologie EL.

N Identifiant Type de l'objet Description


Il fournit des informations utiles relatives au contexte
d'excution. Entre autres, il permet d'accder aux attributs
1 pageContext PageContext
prsents dans les diffrentes portes de l'application. Il contient
galement une rfrence vers tous les objets implicites suivants.
Il permet depuis une page JSP d'obtenir ou de modifier des
2 application ServletContext informations relatives l'application dans laquelle elle est
excute.
Il reprsente une session associe un client. Il est utilis pour
3 session HttpSession
lire ou placer des objets dans la session de l'utilisateur courant.
Il reprsente la requte faite par le client. Il est gnralement
4 request HttpServletRequest utilis pour accder aux paramtres et aux attributs de la
requte, ainsi qu' ses en-ttes.
Il reprsente la rponse qui va tre envoye au client. Il est
5 response HttpServletResponse gnralement utilis pour dfinir le Content-Type de la rponse,
lui ajouter des en-ttes ou encore pour rediriger le client.

14
Il est uniquement disponible dans les pages d'erreur JSP. Il
6 exception Throwable reprsente l'exception qui a conduit la page d'erreur en
question.
Il reprsente le contenu de la rponse qui va tre envoye au
7 out JspWriter
client. Il est utilis pour crire dans le corps de la rponse.
Il permet depuis une page JSP d'obtenir les ventuels paramtres
8 config ServletConfig
d'initialisation disponibles.
Il est l'quivalent de la rfrence this et reprsente la page JSP
9 page objet this courante. Il est dconseill de l'utiliser, pour des raisons de
dgradation des performances notamment.

Les objets de la technologie EL


Catgorie Identifiant Description
JSP pageContext Objet contenant des informations sur
l'environnement du serveur.
Portes pageScope Une Map qui associe les noms et valeurs des attributs
ayant pour porter la page.
requestScope Une Map qui associe les noms et valeurs des attributs
ayant pour porter la requte.
sessionScope Une Map qui associe les noms et valeurs des attributs
ayant pour porter la session.
applicationScope Une Map qui associe les noms et valeurs des attributs
ayant pour porter l'application.
Paramtres de param Une Map qui associe les noms et valeurs des paramtres
requte de la requte.
paramValues Une Map qui associe les noms et multiples valeurs ** des
paramtres
de la requte sous forme de tableaux de String.
En-ttes de header Une Map qui associe les noms et valeurs des paramtres
requte des en-ttes HTTP.
headerValues Une Map qui associe les noms et multiples valeurs ** des
paramtres
des en-ttes HTTP sous forme de tableaux de String.
Cookies cookie Une Map qui associe les noms et instances des cookies.
Paramtres initParam Une Map qui associe les donnes contenues dans les
dinitialisation champs <param-name> et <param-value> de
la section <init-param> du fichier web.xml.

15
16

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