Beruflich Dokumente
Kultur Dokumente
4 Introduire du code Java 4.1 4.2 Utilisation du code Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les variables implicites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Les actions JSP 5.1 5.2 5.3 5.4 5.5 5.6 Inclusion dynamique de JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cha nage de JSP Utiliser des JavaBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Acc`s aux proprits des JavaBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e ee Modier des JavaBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Gestion des erreurs 7 Une application JSP 8 Conguration dune application JSP 9 Les librairies de balises 9.1 9.2 9.3 Installation dune librairie de balises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation dune librairie de balises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduction
Constat : - La production de pages HTML ` laide de Servlet est une opration fastidieuse. a e - Le respect dune charte graphique est dicile. - Les graphistes ne peuvent travailler sur des servlets. Solution : - Introduire du code Java dans une page HTML (ou XML). 1
- Excuter ce code ` la vole et le remplacer par le rsultat de son excution. e a e e e Version courante : 2.2
Dans une page JSP on trouve du code HTML (ou XML), des directives, des actions et du code Java.
<html><body> <p><% for(int i=0; i<10; i++) out.print(i + " "); %></p> </body></html>
Forme gnrale e e
<%@ directive attribut1=valeur1 ... %>
Les directives vont agir sur ltape de compilation (JSP --> Java). e
3.1
La directive page
Forme gnrale : e e
<%@ page import="java.io.*;java.sql.*" session="true" isThreadSafe="true" errorPage="bug/erreur.html" isErrorPage="false" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<%@ page import="java.io.*" %> <%@ page import="java.sql.*" %> <%@ page isThreadSafe="true" %> ...
3.2
La directive taglib :
<%@ taglib uri="monTag" prefix="jlm" %> ... <jlm:debut> ... </jlm:debut>
Les dclarations : e
<%! int i; int inc(int j) { return j+10; } %>
Les scriplets :
<% i = inc(10); out.println(i); i = inc(i); %>
4.1
Un exemple de test :
<% if (age > 30) { %> <p>Lage est suprieur ` 30</p> e a <% } else { %> <p>Lage est infrieur ` 30</p> e a <% } %>
Un exemple de boucle :
<% for(int i=0; i<10; i++) { %> <p>i = <%= i %>.</p> <% } %>
4.2
Requte et rponse : e e HttpServletRequest request Tout sur la requte, le navigateur, le protocole et le client. e HttpServletResponse response Tout sur la rponse, le codage, les erreurs, le tampon de sortie. e javax.servlet.jsp.JspWriter out Acc`s ` limpression formatte. e a e Acc`s aux donnes : e e javax.servlet.http.HttpSession session Tout sur la session courante. javax.servlet.ServletContext application Tout sur lapplication. Contexte et param`tres : e javax.servlet.jsp.PageContext pageContext Tout sur la page : requte, rponse, session, sortie. e e javax.servlet.ServletConfig config Tout sur la conguration de la servlet : param`tres, nom. e
Les actions JSP sont des balises qui agissent sur le droulement de lexcution. e e Forme gnrale : e e
<jsp:action attribut1="valeur1" attribut2="valeur2" ... />
5.1
et son utilisation :
<html><body> <h1>Essai de jsp:include</h1> <jsp:include page="banniere.jsp" flush="true"> <jsp:param name="titre" value="Premier titre"/> </jsp:include> <jsp:include page="banniere.jsp" flush="true"> <jsp:param name="titre" value="Deuxi`me titre"/> e </jsp:include> </body></html>
5.2
ou bien
<jsp:forward page="banniere.jsp"> <jsp:param name="titre" value="Premier titre"/> </jsp:forward> <p>paragraphe ignor !</p> e
5.3
La page afficheProduit.jsp suivante ralise son achage (le scope peut tre page, request ou application) : e e 5
<jsp:useBean id="produit" scope="session" class="fr.massat.Produit" > <p>Nouveau produit !</p> </jsp:useBean> <p>Nom: <%= produit.getNom() %></p> <p>Prix: <%= produit.getPrix() %></p> <p>Desc: <%= produit.getDesc() %></p>
Le code JSP plac dans laction <jsp:useBean> est excut si le bean est cr. e e e ee
5.4
<jsp:useBean id="produit" scope="session" class="fr.massat.Produit" > <p>Nouveau produit !</p> </jsp:useBean> <p>Nom: <jsp:getProperty name="produit" property="nom"/> </p> <p>Prix: <jsp:getProperty name="produit" property="prix"/> </p> <p>Desc: <jsp:getProperty name="produit" property="desc"/> </p>
5.5
5.6
Un exemple complet
Quelques essais
affect_produit.jsp affect_produit.jsp?nom=voiture&prix=200 affect_produit.jsp affect_produit.jsp?desc=blablabla
Structure des chiers dune application WEB JSP/Servlet : | +----------------+----+----------+ | | | WEB-INF *.html *.jsp | *.jpg +---------+----------+ ... | | | web.xml classes lib config. *.class *.jar
ces chiers peuvent tre rangs dans une WAR (Web Application aRchive) en fait une archive jar. e e
le chier web.xml :
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> ... premi`res dclaration ... e e ... dclaration des servlets ... e ... configuration des sessions ... <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <error-page> <exception-type>java.lang.Exception</exception-type> <location>/erreurs.jsp</location> </error-page> <jsp-config> </web-app> ... </jsp-config>
amliorer lapproche dclarative et limiter la prsence du code Java, e e e rutilisation de code JSP. e
9.1
Un exemple datetime :
taglibs-datetime.jar taglibs-datetime.tld datetime-doc.war datetime-examples.war
Copier taglibs-datetime.jar dans le rpertoire /WEB-INF/lib e Copier taglibs-datetime.tld dans le rpertoire /WEB-INF e Ajouter dans /WEB-INF/web.xml la dclaration e
<jsp-config> <taglib> <taglib-uri>http://jakarta.apache.org/taglibs/datetime</taglib-uri> <taglib-location>/WEB-INF/datetime.tld</taglib-location> </taglib> ... </jsp-config>
9.2
Dans chaque page JSP qui a besoin dutiliser les balises de datetime il faut ajouter :
<%@ taglib uri="http://jakarta.apache.org/taglibs/datetime" prefix="dt" %>
9.3
La JSTL 1.1 ore une multitude de balises pour traiter : - linternationalisation, - la lecture, le traitement de documents XML, - le traitement de requtes SQL, e - les tests, les tudes de cas, les boucles, e
<% if (personne.getVille().equals("Marseille")) { %> <p>de Marseille</p> <% } %>
10