Java Server Pages : pages Java côté serveur

Besoin

Construire dynamiquement des IHM Web.

Analyse

Les JSP permettent de décrire des IHM Web sous la forme de pages Web (HTML) dans lesquelles on insère des portions de code Java.

Conception

Les JSP ne sont en fait qu'une autre manière d'écrire des servlets qui vont construire la présentation voulue.

A la demande d'une page JSP par un client, le conteneur Web :

  1. écrit le code source d'une servlet retournant la présentation décrite dans la JSP
  2. compile ce code source
  3. charge la servlet compilée et lui demande de traiter la demande du client
  4. retourne la réponse de la servlet générée au client

Exemples

Un exemple de JSP est :

<jsp:usebean id="userBean" class="org.javarome.sample.UserBean" scope="session" />
<html>
  <head>
    <title>Bienvenue <%= userBean.getName() %></title>
  </head>
  <body>
    Texte de la page.
  <body>
</html>

Implémentation

Version 0 1 2 Commentaire
Release 9 0 1 2 0
Domaine Technologie Fixpack 1 2
J2SE 1.2+ 1.4
API Servlets 2.1 2.2 2.3 2.4
Variables request Oui
response Oui
pageContext Non Oui
session Non Oui
application Non Oui
in Oui
out Oui
config Non Oui
page Non Oui
exception Non Oui
Balises <jsp:page> method Oui Non
implements Oui Non
language Oui
extends Oui Non Oui
import Oui
session Oui
buffer Oui
autoFlush Oui
isThreadSafe Oui
info Oui
errorPage Non Oui
isErrorPage Non Oui
contentType content_type Oui
pageEncoding Non Oui
isELEnable Non Oui
isScriptingEnabled Non Oui
<jsp:usebean> bean Oui
type Non Oui
introspect Oui Non
name beanname Oui
scope lifespan = page, session lifespan = application, page, session Oui
class Oui type Oui
<jsp:getProperty> Non display property, loop property Oui
<includeif>, <excludeif> Non Oui Non
<jsp:include> Non Oui
flush="false" Non Oui
<jsp:taglib> Non Oui
<jsp-config> Non Oui
<jsp:text> Non <jsp:cdata> Oui
web.xml <jsp-properties-group> Non Oui
Langage d'expression Non Oui Idem à celui de la JSTL
TLD <tag-class> Non Autre nom Oui
<tei-class> Non Autre nom Oui
<tlib-version> Non Autre nom Oui
<jsp-version> Non Autre nom Oui
<shortname> Non Autre nom Oui
<body-content> Non Autre nom Oui
<description> Non <info> Oui
<tag> <example> Non Oui
API JSPException Non Oui
JSPError Non Oui
Tag Non abstract Oui
initialize Non Oui
release Non Oui
doBeforeBody Non doBody Oui
doAfterBody Non doBody Oui
Non Oui
TagData Non NodeData Oui
PageData PageInfo Oui
TagSupport getId Non Oui
setId Non Oui
PageContext pushBody Non Oui
popBody Non Oui
handleException Non Oui
BodyContent Non BodyEvaluation Oui
ValidatorClass Non Oui
TagValidatorInfo Non Oui
JspContext getExpressionEvaluator Non Oui
JspPage Non Oui
IteratorTag Non Oui
TryCatchFinally Non Oui
VariableResolver Non Oui
ExpressionEvaluator Non Oui
AttributeNotSupportedException Non Oui
DynamicAttributes Non Oui
JSPFragment Non Oui
SimpleTag getPageContext Non Oui

Notes

  • Mêmes caractéristiques que les servlets.
  • Des balises personnalisées peuvent être développées et utilisées via des TagLibs.
  • JSP 2.0 fut initialement prévu comme JSP 1.3.

Conseils

  • N'insérez pas beaucoup de code Java dans vos JSP. Si vous en avez vraiment besoin, considérez l'utilisation de servlets ou de taglibs
  • Ne traitez pas vos requêtes dans vos JSP, mais dans des servlets en amont. Ces dernières sauront rediriger l'affichage vers vous si besoin (modèle de conception MVC)
  • Ne mettez pas à jour des données dans les JSP. Les mises à jour se font typiquement à partir d'une servlet (voir modèle MVC ci-avant)

Voir