Programmation JEE/JSP

Un livre de Wikibooks.
Aller à : Navigation, rechercher

Wikipedia-logo-v2.svg

Wikipédia propose un article sur : « JavaServer Pages ».

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

Voir aussi [modifier]