JSP (Java Server Pages)
Objectifs Pré-requis : Objectifs : HTML Java Principes de la programmation de pages web dynamiques (PHP, etc.) Configuration Apache TomCat Objectifs : Se familiariser avec les fonctionnalités et la syntaxe JSP Ne contient que quelques exemples Pour plus de détails sur la problématique de la programmation de pages web dynamiques (méthodes POST et GET, etc.), voir le cours de PHP.
Qu'est-ce que JSP ? Java Server Pages Du PHP... en Java ! Génère des .class (des servlets) lors de l'appel Comme le Java, les JSP sont : Multithreadées Portables Orientées object Plus sûres Slide client/serveur php
JSP : exemples Même résultat ! <%@ page import="java.util.*" %> <html> <body> <% Date date = new Date();%> Bonjour ! Il est <%= date %> </body> </html> Même résultat ! <html> <body> <% java.util.Date date = new java.util.Date();%> Bonjour ! Il est <%= out.println(String.valueOf(date)) ; %> </body> </html>
JSP : exemples <table border="2"> <% for ( int i = 0; i < n; i++ ) { %> <tr> <td>Nombre</td> <td><%= i+1 %></td> </tr> } </table> <% if ( hello ) { %> <p>Bonjour!</p> <% } else { %> <p>Au revoir!</p> }
Inclusion de JSP dans du HTML <html> <body> Le contenu de la page est généré par un fichier JSP séparé : <br/> <%@ include file="script.jsp" %> </body> </html> = copier-coller du fichier script.jsp : Variables du script principal visibles On continue ensuite l'exécution du script principal
Inclusion de JSP dans du HTML <html> <body> Le contenu de la page est généré par un fichier JSP séparé : <br/> <jsp:include page="script.jsp" %> </body> </html> = appel à une classe séparée Environnement différent, variables du script principal non visibles On continue ensuite l'exécution du script principal
Inclusion de JSP dans du HTML <% if(!strPassword.equals("*********")) { %> <jsp:forward page="login.jsp"> <jsp:param name="raison" value="Mauvais mot de passe"/> </jsp:forward> } <h2>Bienvenue !</h2> = on redirige définitivement vers la nouvelle page On ne revient pas à la page principale Attention, la redirection doit avoir lieu avant que du contenu ait été créé sur la page principale Attention, le navigateur n'est pas informé de la redirection (l'URL ne change pas)
Sessions en JSP <form method="POST" action="savename.jsp"> Quel est votre nom ? <input type="text" name="username" size="20"> <input type="submit"/> </form> index.html <% String name = request.getParameter( "username" ); session.setAttribute( "nom_utilisateur", name ); %> <a href="next.jsp">Continuer</a> savename.jsp Bonjour, <%= session.getAttribute("nom_utilisateur") %> next.jsp
« Beans » en JSP <form method="POST" action="savename.jsp"> Quel est votre nom ? <input type="text" name="username" size="20"> <input type="submit"/> </form> index.html package user; public class UserData { String username; public void setUsername( String value ) { username = value; } public String getUsername() { return username; } } UserData.java <jsp:useBean id="user" class="user.UserData" scope="session"/> <jsp:setProperty name="user" property="*"/> <a href="next.jsp">Continuer</a> savename.jsp <jsp:useBean id="user" class="user.UserData" scope="session"/> Bonjour, <%= user.getUsername() %> next.jsp
Les objets natifs JSP request L'objet HttpServletRequest associé à la requête response L'objet HttpServletResponse associé à la réponse au client out L'objet PrintWriter utilisé pour écrire une sortie sur le client session L'objet HttpSession associé à la requête application L'objet ServletContext associé au contexte de l'application config L'objet ServletConfig associé à la page pageContext Des caractéristiques spécifiques au serveur (ex : JspWriters) page Équivalent de this 11
Les méthodes de l'objet request getCookies() getHeader(String name) getHeaderNames() getAttribute(String name) getAttributeNames() getMethod() getParameter(String name) getParameterNames() getParameterValues(String name) getQueryString() getRequestURI() getServletPath() setAttribute(String,Object) removeAttribute(String) 12
Les méthodes de l'objet response setContentType() addCookie(Cookie cookie) addHeader(String name, String value) containsHeader(String name) setHeader(String name, String value) sendRedirect(String) sendError(int status_code)