Cours - Intro JSP

Transcription

Cours - Intro JSP
Module de découverte
Développement web en
Java
Mathieu Chatelain
JSP
◦ Introduction – conteneur web – cycle de vie – Servlet
◦ Tags JSP
◦ Les objets implicites
◦ Les actions
Sommaire
JSP : JavaServer Page.
Concurrent de PHP et ASP.
Avantages :
◦ Puissance de Java
◦ Gratuit
◦ Facile à développer
Inconvénients :
◦ Infrastructure lourde à mettre en place
Extension : fichier .jsp
Version actuelle : JSP 2.1 – Servlet 2.5
Page JSP : mélange HTML et Java.
S’exécute dans un conteneur web.
JSP
Index.jsp
<html>
<head>
<title>ma première jsp</title>
</head>
<body>
<% out.println("hello world"); %>
</body>
</html>
1er exemple
Logiciel qui exécute des applications orientées web.
Implémente les spécifications J2EE fournis par Sun.
Fournit notamment les API pour la sécurité et la gestion de la concurrence.
Les plus connus : Tomcat (projet Apache, gratuit), WebSphere (IBM), Weblogic
(BEA), JOnAS (OW2, gratuit).
Ce cours utilise Tomcat.
◦ Version 5.0.28
◦ Servlet 2.4 – JSP 2.0
Conteneur web
Cycle de vie
Le serveur reçoit la demande du navigateur.
Transformée en Servlet (classe java exécutée dans un conteneur web) lorsque la JSP est
appelée pour la première fois.
La Servlet est compilée.
La machine virtuelle exécute la Servlet.
Le résultat est stocké sous forme d’un buffer de texte.
Le buffer est renvoyé par le serveur vers le navigateur.
3 méthodes essentielles:
◦ jspInit () qui est appelée après le premier chargement (compilation)
◦ _jspService() qui est appelée à chaque fois que la JSP est sollicitée.
◦ jspDestroy() qui est appelée lors du déchargement (nouvelle version de la JSP
compilée).
Cycle de vie
Classe java pur.
Hérite de javax.servlet.http.HttpServlet
S’exécute aussi dans un conteneur web.
5 méthodes essentielles:
◦ init() pour l’initialisation.
◦ destroy() pour détruire la servlet après exécution.
◦ service() pour l’exécution.
◦ doGet() appelée par service() pour traiter les requêtes de type GET.
◦ doPost() appelée par service() pour traiter les requêtes de type POST.
Servlet
Permettent de distinguer le code java du code HTML.
Plusieurs tags :
◦ Les tags de directives:
<%@
%>
◦ Les tags de déclarations:
<%!
%>
◦ Les tags de scriptlets:
<%
%>
◦ Les tags d’expression:
<%=
%>
◦ Les tags de commentaires:
<%--
--%>
Les tags JSP
Placés entre <%@ et %>
3 types :
◦ include : sert à inclure d’autres fichier dans la JSP. Le fichier tout entier (variables,
entrée/sortie etc.. ) est incorporé dans la JSP au moment de la transformation en
Servlet.
<%@ include file = "unfichier.html“ %>
◦ taglib : indique le chemin et le préfixe utilisé pour une librairie de tag.
<%@ taglib prefix= "monprefix" uri= "WEB-INF/library.tld" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
◦ page : définit les attributs de la page (type de contenu, librairies java importées, pages
d’erreur ou non…).
<%@ page import=" java.util.Date" contentType="application/vnd.ms-excel"
isErrorPage="false" %> pour pouvoir utilisé la librairie java.util.Date, que le contenu
reçu par le navigateur soit ouvrable avec Excel et que préciser ce n’est pas une page
d’erreur.
Les tags de directives
Placés entre <%! et %>
Permet de déclarer des variables et des méthodes accessibles dans toute la page.
<%!
public Objet monObjet=new Objet();
private int i=5;
public int getValeur() { return i; }
public void jspInit() {System.out.println("redéfinition de la méthode d’initialisation") ;
%>
Il est possible de redéfinir les méthode jspInit() et jspDestroy (mais pas _jspService()).
Les tags de déclaration
Placés entre <% et %>
Permet d’insérer du code java dans la JSP, qui sera compilé lors de la transformation Servlet.
Permet aussi d’accéder aux objet, variables et méthodes déclarés dans la partie déclarative.
<%!
private int i=5;
public int getValeur() { return i; }
%>
<%
for (int j = 1 ; j <= getValeur() ; j++ ){
out.print(j);
%>
<br />
<% } %>
Les tags de scriptlet
Placés entre <%= et %>
Servent à évaluer une variable ou une expression et à renvoyer la valeur.
Sont équivalent à <% out.println(variable);%>
<%! int i=5;%>
<%=i%> => affichera 5 sur la page.
Les tags d’expressions
accessibles seulement dans la partie scriptlet et expressions.
request: Instance de la classe javax.servlet.http.HttpServletRequest, cet objet possède les
méthodes qui permettent d'accéder aux informations de la requête en cours, comme les
paramètres de requête via la méthode getParameter et les entêtes HTTP comme les cookies, le
référent, etc...
response: Instance de la classe javax.servlet.http.HttpServletResponse, cet objet possède les
méthodes qui permettent de spécifier les entêtes HTTP comme les cookies, il contient de ce fait
la réponse de la page JSP.
session: Instance de la classe javax.servlet.http.HttpSession, cet objet est par défaut disponible
à toutes les pages qui participe à une session sauf si l'attribut session de la directive page est
positionné à faux. Il permet d'accéder aux objets dont la portée est session via la méthode
getAttribute.
out: Instance de la classe javax.servlet.jsp.JspWriter, cet objet représente le canal de sortie
utilisé pour communiquer la réponse au client (navigateur).
Les objets implicites
application: Instance de la classe javax.servlet.ServletContext, cet objet contient le
contexte de la servlet.
context: Instance de la classe javax.servlet.jsp.PageContext, cet objet permet
d'accéder à différentes informations sur l'environnement du serveur.
config: Instance de la classe javax.servlet.ServletConfig, cet objet permet d'accéder
à la configuration de la servlet.
page: instance de la classe java.lang.Object, cet objet désignant la page JSP ellemême, c'est l'équivalent à this de Java. Prévu initialement pour permettre l'accès à
des objets Java lorsqu'un autre langage de script était utilisé.
exception: instance de la classe java.lang.Throwable, cet objet représentant une
exception non interceptée par le code Java, très utile dans les pages d'erreur.
Les objets implicites
Permettent d’exécuter du code java au moment où la page est requise.
Plusieurs possibilités :
◦ Inclusion dynamique de beans,
◦ Inclusion dynamique de fichier,
◦ Redirection vers une autre page.
Syntaxe semblable à XML.
<balise:action . . .>
...
...
</balise:action>
JSP – Les actions
Syntaxe: <jsp:useBean id= "nomDuBean" class="com.package.class" scope=
"request" />
◦ id : nom du bean,
◦ class: classe du bean,
◦ scope: permet de déterminer la portée du bean avec les valeurs suivantes:
request: pour la requête courante uniquement,
session: pour la durée de la session entière,
application: accessible dans toute l’application.
Création de beans
Besoin de connaître le nom du bean et ses méthodes.
3 méthodes d’accès aux beans:
◦ Via la partie scriptlet avec du code java « classique »
<%out.println(unePersonne.getNom())%>
◦ Via la partie expression
<%= unePersonne.getNom()%>
◦ Via la partie action
<jsp:getProperty name= "unePersonne" property= "nom"/>
Utilisation de beans
Modification des attributs
<jsp:setProperty name= "unePersonne" property= "nom" value= "toto" />
<jsp:setProperty name= "unePersonne" property= "nom"
value= "<%=request.getParameter("nom")%>" />
Ceci ne fonctionne pas
<jsp:setProperty name= "unePersonne" property= "age"
value="<jsp:getProperty name= "unePersonne" property= "age"/>+1" />
Remplacer par
<jsp:setProperty name= "unePersonne" property= "age"
value="<%=unePersonne.getAge()+1%>" />
Utilisation de beans
Syntaxe: <jsp:include page= "/mapage.jsp"/> .
Inclusion dynamique, effectuée au moment de la requête.
Possibilité de transmettre des infos à la page incluse.
<jsp:include page= "/mapage.jsp">
<jsp:param name= "maVariable" value= "laValeur" />
</jsp:include>
Récupération :
<%out.println(request.getParameter(maVariable));%>
Inclusion de pages
Syntaxe: <jsp:forward page= "/mapage.jsp"/> .
redirection dynamique, effectuée au moment de la requête.
Possibilité de transmettre des infos à la page incluse.
<jsp:forward page= "/mapage.jsp">
<jsp:param name= "maVariable" value= "laValeur" />
</jsp:forward>
Récupération :
<%out.println(request.getParameter(maVariable));%>
Tous les traitements codés à la suite de la redirection ne sont pas exécutés.
Redirection

Documents pareils