Les apports de JSP 2.0
Introduction
Nous avons déjà vu quelques nouveautés de la version 2.0 dans les travaux pratiques précédents (JSTL et langage d'expressions). Il nous reste deux améliorations, l'écriture de balises personnalisées et la production de document XML.
Paramétrage des pages jsp
Pour affiner le paramétrage des pages JSP, vous pouvez ajouter au fichier web.xml les éléments suivants :
...
<jsp-config>
<jsp-property-group>
<description>Toutes les pages</description>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
<include-prelude>/prelude.jsp</include-prelude>
<include-prelude>/copyright.jsp</include-prelude>
<include-coda>/coda.jsp</include-coda>
</jsp-property-group>
</jsp-config>
...
Cette configuration va inclure les pages /prelude.jsp et /copyright.jsp au début et /coda.jsp à la fin de chaque page JSP. Le code de ces pages est ci-dessous :
<!DOCTYPE html>
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
<c:url var="charte" value="/charte.css" />
<html>
<head>
<title>Mon application</title>
<link rel="stylesheet" type="text/css" href="${charte}" />
</head>
<body>
<!-- (c) JL Massat 2017 -->
</body> </html>
Les pages JSP standards deviennent allégées et se concentrent sur le contenu de l'élément body.
Production de documents XML
Vous trouverez ci-dessous un exemple de page JSPX (codage XML des pages JSP). La syntaxe est légèrement différente mais le mode de fonctionnement reste le même. L'idée est de faciliter la production de page XML. Cette approche est moins utilisée aujourd'hui. Essayez la page ci-dessous (avec l'extension .jspx) :
<jsp:root
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:c="http://java.sun.com/jsp/jstl/core"
version="2.0"
>
<!-- fixer l'encodage de sortie -->
<!-- syntaxe XML de la directive @ page -->
<jsp:directive.page contentType="text/xml; charset=iso-8859-1" />
<!-- fixer le format de sortie (comme XSL) -->
<jsp:output
omit-xml-declaration="false"
doctype-root-element="messages"
doctype-system="http://monserveur.fr/messages.dtd"/>
<messages>
<!-- un message en dur -->
<message>
Hello
</message>
<!-- évaluation java comme <%= %> -->
<!-- syntaxe XML des expressions -->
<message>
<jsp:expression>10 + 20</jsp:expression>
</message>
<!-- un message dynamique -->
<jsp:element name="message">
<jsp:attribute name="class">important</jsp:attribute>
<jsp:body>
Bizarre
</jsp:body>
</jsp:element>
<!-- JSTL + EL -->
<message>
<c:out value="${11 + 22}" />
</message>
</messages>
</jsp:root>
Ce document XML est traité par le moteur de servlet et les éléments de l'espace de nom xmlns:jsp sont évalués et remplacés par le résultat de l'évaluation. Les pages JSP sont des documents de texte contrairement aux pages JSPX qui sont des documents XML.
<jsp:root
version="2.0"
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
xmlns="http://www.w3.org/1999/xhtml">
<jsp:output
omit-xml-declaration="false"
doctype-root-element="html"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<html>
<jsp:directive.page contentType="text/html" />
<head>
<title>XHTML en JSPX</title>
</head>
<body>
<p>Un exemple de XHTML en JSPX
<jsp:useBean id="now" class="java.util.Date" />
<fmt:formatDate value="${now}" pattern="MMMM d, yyyy, H:mm:ss"/>
</p>
</body>
</html>
</jsp:root>