……..
Correspondance JSP/Servlet
• Servlet généré par Tomcat public final class XXX_jsp
extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent{
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
throws java.io.IOException, ServletException{
response.setContentType(« text/html »);
JspWriter out = response.getWriter();
out.write(« <h1>Time on server</h1>\r\n »);
out.write(« <p> »);
out.print( new java.util.Date() );
out.write(« </p>\r\n »);
baz();
}
}
• JSP d’origine
<h1>Time on server</h1>
<p> <%= new java.util.Date() %></p>
<% baz(); %>
<%! private int accessCount = 0; %>
private int accessCount = 0;
Cycle de vie d’un servelet
1. Chargement de la classe
2. Instanciation du servlet
• constructeur par défaut
3. Appel de init()
4. Appel(s) de service()
• 1 thread par requête
5. Appel de destroy()
Types des éléments de scripts JSP
• Expressions
– Format : <%= expression %>
Format XML:<jsp:expression> expression </jsp:expression>
– Evaluée et insérée dans la sortie du servlet
Se traduit par out.print(expression)
• Scriptlets
– Format : <% code %>
Format XML:<jsp:scriptlet> code </jsp:scriptlet>
– Inséré tel quel dans la méthode _jspService du servlet (appelée par service)
• Déclarations
– Format : <%! code %>
Format XML: <jsp:declaration> code </jsp:declaration>
– Insérée telle quelle dans le corps de la classe servlet, en dehors de toute méthode existante
Notions supplémentaires sur les JSP :
Les directives de page
• Donnent des informations sur le servlet qui sera généré pour la page JSP
• Principalement utilisées pour:
– L’importation de classes et paquetages
– Le type MIME généré par la JSP
L’attribut «import»
• Format
– <%@ page import= »paquetage.classe » %>
– <%@ page
import= »paquetage.classe1,…,paquetage.classeN » %>
• But
– Générer les instructions d’importation
• Remarque
– Bien que les pages JSP peuvent être n’importe où sur le serveur, les classes utilisées par les pages JSP doivent être dans le répertoire des classes de l’application Web
(c’est-à-dire: …/WEB-INF/classes )
Les attributs «contentType» et «pageEncoding»
• Format
– <%@ page contentType= »MIME-Type » %>
– <%@ page contentType= »MIME-Type;
charset=Character-Set » %>
– <%@ page pageEncoding= »Character-Set » %>
• But
– Spécifier le type MIME de la page générée par le servlet résultant de la page JSP
Intégration des servlets et des JSP:Application du design pattern Model-View-Controller (MVC)
Pourquoi combiner Servlets & JSP?
• Classiquement : utilisation des JSP pour faciliter le développement et la maintenance du contenu HTML
– Pour du code dynamique simple, appel du code d’un servlet à partir de scripts JSP
– Pour des applications un peu plus complexes, utilisation de classes appelées à partir de scripts JSP
• Mais ce n’est pas suffisant
– Pour des traitements complexes, démarrer avec des JSP n’est pas pratique
– Mais surtout, l’idée derrière les JSP est qu’une seule page possède une forme, une présentation de base stable
Possibilités pour traiter une seule requête
• Servlet seuls. Marche bien quand:
– L’ output est de type binaire. Ex : une image
– Il n’y a pas d’ output. Ex : redirections
– La forme/présentation est variable. Ex : portail
• JSP seules. Marche bien quand:
– L’ output est de type caractère. Ex : HTML
– La forme/présentation est stable.
• Architecture MVC. Nécessaire quand :
– Une même requête peut donner des résultats visuels réellement différents
– On dispose d’une équipe de développement conséquente avec une partie pour le dev. Web et une autre pour la logique métier
– Ona un traitement complexe des données mais une présentation relativement fixe