Exemple 36. Une première page JSP simple
<!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=UTF-8"> <title>Une première JSP</title> </head> <body> <h1>Bonjour le monde !</h1> </body> </html>
bonjour.jsp
, et rangée à la racine de notre application web. On y accède par l'URL de cette application web, à laquelle il suffit d'ajouter le nom du fichier :
bonjour.jsp
.
Nous avons donc partiellement résolu notre problème : nous n'avons plus à écrire du code HTML dans du code Java pour produire nos pages web. Cela dit, les JSP proposent de nombreuses fonctionnalités supplémentaires.
Il est Thu Oct 28 14:00:58 CEST 2010Il est possible d'inclure des variables Java dans une page JSP, en les plaçant entre les marqueurs
<%=
et
%>
. Ce code Java est alors invoqué, et le résultat placé dans la réponse.
Voyons un dernier exemple, qui nous permet d'écrire trois fois "Bonjour le monde" sans effort.
Exemple 38. Une deuxième JSP dynamique
<p>Trois fois <br> <% for (int i = 0 ; i < 3 ; i++) { %> Bonjour le monde ! <br> <% } %> sans effort !</p>
<%
. Il indique que la suite est du code Java, qui doit être exécuté en l'état. D'où l'affichage :
Trois fois Bonjour le monde ! Bonjour le monde ! Bonjour le monde ! sans effort !
index_jsp.java
et
index_jsp.class
. Dans une installation standard de Tomcat, ces deux fichiers sont dans la sous-arborescence du répertoire
work
.
Le premier fichier
index_jsp.java
contient le code d'une servlet classique, dans laquelle on trouve le code suivant :
Exemple 39. Génération d'une servlet à partir d'une JSP
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n"); out.write(" \"http://www.w3.org/TR/html4/loose.dtd\">\n"); out.write("\n"); out.write("<html>\n"); out.write(" <head>\n"); out.write(" <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n"); out.write(" <title>JSP Page</title>\n"); out.write(" </head>\n"); out.write(" <body>\n"); out.write(" <h1>Bonjour le monde !</h1>\n"); out.write(" </body>\n"); out.write("</html>\n");
<%= new java.util.Date()%>
dans notre JSP. On ne reproduit ici que le contenu de la balise
<h1>
Exemple 40. Modification du code généré - 1
out.write("<h1>Bonjour le monde !"); out.print(new java.util.Date() ); out.write("</h1>\n");
<%= ... %>
a été ajouté en paramètre des appels à
out.write()
.
Observons enfin la modification du code généré lorsque nous avons ajouté notre boucle.
Exemple 41. Modification du code généré - 2
out.write("<p>Trois fois <br>\n"); for (int i = 0 ; i < 3 ; i++) { out.write("\tBonjour le monde ! <br>\n"); } out.write("sans effort</p>\n");
<% ... %>
a été recopié sans modification dans le code de la servlet. C'est ainsi que ces deux balises fonctionnent.