
JSP : introduction
Un JSP est un composant web qui permet la génération dynamique de page HTML.
D'une façon plus générale un JSP est un mélange de SGML et de code Java.
Le rôle d'un JSP est de prendre en charge la présentation des données.
Avantage des JSP :
- Séparation traitement-présentation
- Introduction des info-graphistes dans le cycle de développement
Les JSPs sont compilés à l'exécution et dès que le source change. Le JSP devient
donc un fichier à extension class. Cette classe est une servlet. L'on va donc
retrouver les éléments des servlets :
- request
- response
- pageContext
- config
- session
Composition d'un JSP :
- Elément HTML
- Ensemble de directives
- Code Java
Exemple de JSP :
<HTML>
<Title>Premier JSP</Title>
<BODY>
<p>
Identifiant de session : <%=request.getSession(true).getId()%>
</p>
</BODY>
</HTML>
|
Directives PAGE :
Directive définie au début de la page. Elle permet de préciser les attributs de la page :
- import : importer les classes à utiliser
- extends : héritage
- charset : page de code
- ...
Exemple :
<%@ page import="java.io.*,java.util.*" contentType="text/html;charset=ISO-8859-1" %>
Syntaxe :
<%@ page
[extends = "package.classe"]
[import="package.classe,package.*"]
[session="true|false"]
[errorPage="url"]
[contentType="type_mime;charset=valeur"]
[isErrorPage="true|false"]
[pageEncoding="valeur"]
[autoFlush="true|false"]
%>
extends : Héritage
import : importation de classe
session : indique si la session HTTP est accessible ou non dans le JSP
autoflush : Envoie automatiquement le buffer vers le client quand il est plein
errorPage : Url d'une page d'erreur à envoyer si plantage
contenType : indique contenu de la page ainsi que le jeu de caractères
pageEncoding : Indique le jeu de caractères
Déclaration :
Il est possible de déclarer des variables globales et des méthodes qui seront
utilisés dans la page.
Syntaxe :
<%! instructions %>
<%! int compteur=0;
Vector vec = new Vector();
%>
Scriptlet :
Un traitement Java à l'intérieur d'un JSP est appelé scriptlet.
Syntaxe :
<% instructions %>
<% vec.addElement("elem1");
vec.addElement("elem2");
%>
Expression :
Une expression permet d'inclure dans la page une donnée dynamique.
Syntaxe :
<%= expression %>
<%=(String)vec.elementAt(0)%>
Commentaire :
Syntaxe :
<%-- commentaire --%>
Inclusion :
Il est possible d'inclure dans un JSP un autre JSP, une page HTML, texte, ...
L'include permet de factoriser les développements.
Syntaxe :
<%@ include file="URL" %>
<@ include file="/jsp/entete.jsp" %>
<@ include file="/jsp/logo.html" %>
|
Les éléments action :
L'objectif des éléments actions est l'utilisation d'objets permettant de limiter
au maximum le code Java se trouvant dans la page.
<jsp:usebean>
Ce tag permet de récupérer un objet provenant de la servlet. Dans le modèle MVC,
le JavaBean traite les données et les encapsulent dans un objet résultat. Cet
objet résultat est retourner à la servlet qui le passe au JSP.
Syntaxe :
<jsp:usebean id="monbean" scope="request" class="formation.mvc.MaClasse" />
- id : Identifiant de l'objet
- scope : Portée dans laquelle l'on va retrouver l'objet
- Page : L'objet peut être utiliser dans la page
- Request : L'objet est un attribut de le requête
- session : L'objet est un attribut de la session
- application : L'objet est stockée dans le ServletContext
- class : Classe de l'objet. Si l'objet n'est pas trouvé dans la portée,
une instance de cette classe est créée.
<jsp:getProperty>
Ce tag permet de récupérer la valeur d'un attribut d'un composant javaBean.
Ce tag est utilisable uniquement si l'attribut possède un accesseur (méthode get).
Syntaxe :
<jsp:getProperty name="nom du bean" property="nom de l'attribut" />
Exemple d'utilisation :
<jsp:usebean id="user" scope="session" class="gestion.utilisateur" />
<html>
<body>
Nom utilisateur : <jsp:getProperty name="utilisateur" property="nom" />
</body>
</html>
Equivalent sans <jsp:getProperty />
<jsp:usebean id="user" scope="session" class="gestion.utilisateur" />
<html>
<body>
Nom utilisateur : <%=user.getNom()%>
</body>
</html>
<jsp:setProperty>
Ce tag permet de donner une valeur à un attribut d'un composant javaBean.
Ce tag est utilisable uniquement si l'attribut possède un accesseur (méthode set).
Syntaxe :
<jsp:setProperty name="nom du bean" property="nom de l'attribut" value="valeur"/>
Exemple d'utilisation :
<jsp:usebean id="user" scope="session" class="gestion.utilisateur" />
<html>
<body>
<jsp:getProperty name="utilisateur" property="nom" value="Volubis"/>
</body>
</html>
Equivalent sans <jsp:setProperty />
<jsp:usebean id="user" scope="session" class="gestion.utilisateur" />
<html>
<body>
Nom utilisateur : <%=user.setNom("Volubis")%>
</body>
</html>
<jsp:include>
Inclusion d'une ressource Web statique ou dynamique avec ou sans passage de paramètre.
Syntaxe :
<jsp:include page="/jsp/entete.jsp" />
<jsp:include page="/jsp/entete.jsp">
<jsp:param name="user" value="formation2">
</jsp:include>
<jsp:forward>
Permet de rediriger la réponse vers un autre JSP. Correspond au RequestDispatcher
des servlets.
Il est aussi possible de passer des paramètres.
Cette action est utile notamment pour rediriger les erreurs vers une page spécialisée.
Syntaxe :
<jsp:forward page="/jsp/entete.jsp" />
<jsp:forward page="/jsp/entete.jsp">
<jsp:param name="user" value="formation2">
</jsp:forward>
<jsp:plugin>
Permet d'exécuter un bean ou une applet dans le navigateur du client.
Syntaxe :
<jsp:plugin
type="bean|applet"
code="nomClasse"
codeBase="chemni d'accès à la classe"
[name="nomInstance"]
[archive="nom de l'archive JAR"]
[align="bottom|top|middle|left|right]
[height="hauteur en pixel"]
[width="largeur en pixel"]
[nspluginurl="url du plugin netscape"]
[iepluginurl="url du plugin internet explorer"]>
[<jsp:params>
[<jsp:param value="valeur" name="nom paramètre" />]
</jsp:params>]
</jsp:plugin>
Exemple :
<jsp:plugin type="applet" code="MonApplet.class" codebase="/applet"
height="300" width="300">
<jsp:params>
<jsp:param name="couleurFond" value="blue"/>
<jsp:param name="police" value="arial"/>
</jsp:params>
</jsp:plugin>
|