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> |