Programmation JEE/JSP
Le JSP est une technologie permettant de coder une page web dynamique en java et de le mixer au contenu HTML de la page à l'aide de scriptlets.
Sections |
Installation [modifier]
Windows et Ubuntu ne permettent pas de lire les fichiers .jsp par défaut. Il faut donc télécharger et installer Tomcat.
Une fois lancé (dans Windows : démarrer, exécuter..., services.msc, ou bien en commande DOS : net start "Tomcat7") il suffit de placer les fichiers .jsp dans le répertoire adéquate pour qu'ils soient interprétés par le serveur (par défaut sur Windows 7 dans C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\examples\). L'URL pointant vers ce répertoire est http://localhost:8080/examples/.
Directives JSP [modifier]
@page [modifier]
Définit le code généré durant le traitement de la page JSP
<%@page contentType="text/html" pageEncoding="UTF-8" errorPage="erreur.jsp" import="java.util.*" %>
Attributs :
- language="language" : langage à utiliser dans la jsp
- extends="package.nomDeClasse" : nom de la classe dont la page JSP va hériter
- import="nomDePackage1, nomDePackage2..." : noms des packages importés dans le code
- session="booléen" : détermine si la session est accessible depuis la JSP
- buffer="taille" : détermine la taille du buffer utilisé par JspWriter de la JSP
- autoFlush="booléen" : indique si le contenu du buffer doit être envoyé automatiquement vers le client une fois plein
- isThreadSafe="booléen" : indique le modèle de thread utilisé pour le traitement de la requête HTTP concernant la page JSP
- errorPage="url relative" : ressource appelée quand une exception est déclenchée et qu'il n'y a pas de try{}catch{} dans la page
- isErrorPage="booléen" : indique si la page gère les exceptions
- contentType="type Mime" : indique le type de documents contenus dans la réponse HTTP généré par la JSP
- pageEncoding="type d'encodage" : détermine le type d'encodage des caractères de la réponse HTTP
@include [modifier]
Permet d'inclure une autre ressource dans la page JSP
<%@include file="./chunk.jsp" %>
@taglib [modifier]
Permet de pointer sur les namespaces de tags JSP à utiliser
<%@taglib prefix="fmt" uri="http://http://java.sun.com/jsp/jstl/fmt" %> <%-- Par la suite on utilise les namespace suivant --%> <fmt:setBundle basename="informatique.ressources" /> <fmt:message key="service" />
Scriptlets [modifier]
Les scriptlets permettent l'injection de scripts interprétables dans une pile HTML.
<%! %> [modifier]
Déclaration de variables ou de méthodes
<%! double tva=1.21; double calculTarif(double prix) { return prix*tva; } %>
<% %> [modifier]
Insertion d'instructions de code
<% double tva=1.21; out.println(Double.parseDouble(request.getParameter("prix"))*tva); %>
<%= %> [modifier]
Evaluation d'expression, le résultat est retourné en out.println()
<%=new Date().toLocalString() %>
<%-- --%> [modifier]
Commentaires
<%-- Ceci est un commentaire --%>
Exemple [modifier]
<%-- index.jsp --%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" errorPage="erreur.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <%! String[] langages = {"Java", "CLisp", "Scheme", "OCaml"}; %> <% // levée d'une ArrayIndexOutOfBoundsException for (int i=0; i < 4; i++) { out.println(langages[i]); } %> </body> </html>
Lorsqu'une erreur est levée par exemple en remplaçant le nombre d'itérations de 4 à 5, la directive page renvoie sur erreur.jsp
<%-- erreur.jsp --%> <%@ page isErrorPage="true"%> <html> <body> exception levée <b> <%= exception %> </b> <hr> <h3>trace de la pile</h3> <pre> <% java.io.PrintWriter pw = new java.io.PrintWriter(out); exception.printStackTrace(pw); %> </pre> </body> </html>
Objets implicites [modifier]
Ensemble de variables prédéfinies pour accéder directement à certains objets
request [modifier]
permet d'avoir une référence à HttpServletRequest utilisé pour contacter la JSP
response [modifier]
permet d'avoir une référence à HttpServletResponse qui transfert le résultat du traitement de la JSP au client
pageContext [modifier]
permet d'avoir un accès à pageContext de la JSP.
session [modifier]
permet d'avoir une référence à HttpSession associé au client.
application [modifier]
référence ServletContext associé à l'application contenant la JSP.
out [modifier]
référence le flux de sortie de JspWriter permettant d'écrire dans la réponse HTTP.
config [modifier]
permet de référencer ServletConfig associé à la JSP.
exception [modifier]
est disponible seulement dans une page dédiée aux erreurs et permet de référencer Exception qui redirige sur cette page de gestion d'erreur.
Balises JSP [modifier]
jsp:useBean [modifier]
Crée une instance d'un objet javabean.
Attributs :
- id :
- scope :
- class :
- type :
- beanName :
Exemple :
<jsp:useBean> id="leManager" type="pack.Personne" class="pack.Manager" scope="request" </jsp:useBean>
jsp:getProperty [modifier]
Prend la valeur d'une propriété d'un javabean.
Attributs :
- name :
- property :
Exemple :
<jsp:getProperty name="leManager" property="nom" />
jsp:setProperty [modifier]
Assigne une valeur à la propriété d'un javabean.
Attributs :
- name :
- property :
- value :
Exemple :
<jsp:useBean id="manager" scope="session" class="pack.Manager" type="pack.Manager" /> <jsp:setProperty name="manager" property="heureConnexion" value="<%=new Date().toLocaleString()%>" />
jsp:include [modifier]
Inclut une ressource statique ou dynamique et possède la balise <jsp:param> permettant de transmettre des paramètres à la ressource par l'attribut name (nom du paramètre) et l'attribut value (valeur du paramètre).
Attributs :
- page :
- flush :
Exemple :
<jsp:include page="/NbColis"> <jsp:param name="code" value="<%=request.getParameter("codeClient") %>" /> </jsp:include>
jsp:forward [modifier]
Forward une requête client.
Exemple :
<jsp:forward page="/servlet/login"> <jsp:param name="username" value="jsmith" /> </jsp:forward>
jsp:plugin [modifier]
Gère l'insertion d'un applet dans une page JSP.
Attributs :
- type :
- code :
- codebase :
- archive :
- name :
- align :
- width :
- height :
- vspace / hspace :
- jreversion :
- nspluginurl :
- iepluginurl :
Exemple :
<jsp:plugin type=applet code="Molecule.class" codebase="/html"> <jsp:params> <jsp:param name="molecule" value="molecules/benzene.mol" /> </jsp:params> <jsp:fallback> <p>Impossible de charger l'applet</p> </jsp:fallback> </jsp:plugin>
Syntaxe XML [modifier]
| Syntaxe JSP | Syntaxe XML | Commentaires |
| <%@page %> | <jsp:expression></jsp:expression> | attributs identiques pour les deux versions |
| <%@include %> | <jsp:expression></jsp:expression> | attributs identiques pour les deux versions |
| <%@taglib %> | pas de correspondance | utiliser xmnls:XXX de la balise <jsp:root> |
| <%! %> | <jsp:declaration></jsp:declaration> | // |
| <% %> | <jsp:scriptlet></jsp:scriptlet> | // |
| <%= %> | <jsp:expression></jsp:expression> | // |
| <%-- --%> | pas de correspondance | // |