Outils pour utilisateurs

Outils du site


helloworld:web:java:jsp

Ceci est une ancienne révision du document !


Une page JSP utilise du code HTML dans lequel est mis du code Java. Le code généré par les appels aux fonctions JSP est du HTML 4.01.

<note>Tous les exemples ci-dessous utilisent le BeanPersonne.</note>

Cycle de vie

Création du projet

Nécessite un projet de type Dynamic Web Project.

Architecture du projet

Source, Archive

Exemple 1 - La base

indexjsp.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
  <p>
    <%
      if (15 % 2 == 0)
      {
        out.print ("15 est un nombre pair.");
      }
      else
      {
        out.print ("15 est un nombre impair.");
      }
    %>
    <br />
    <%
      switch (16 % 2)
      {
        case 0:
          out.print ("16 est un nombre pair.");
          break;
        default:
          out.print ("16 est un nombre impair.");
          break;
      }
    %>
  </p>
</body>
</html>

Rendu :

15 est un nombre impair. 
16 est un nombre pair.

Exemple 2 - Utilisation d'un Bean

indexjsp2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
  <jsp:useBean id="perso1" scope="session" class="com.llgc.BeanPersonne">
    <jsp:setProperty property="taille" name="perso1" value="170" />
  </jsp:useBean>
  <jsp:setProperty property="yeuxBleus" name="perso1" value="true" />
  <jsp:useBean id="perso2" scope="session" class="com.llgc.BeanPersonne">
    <jsp:setProperty property="taille" name="perso2" value="160" />
  </jsp:useBean>
  <jsp:setProperty property="yeuxBleus" name="perso2" value="false" />
  <p>
    La personne 1 possède une taille de ${sessionScope.perso1.taille} cm et
    <%
      if (!perso1.isYeuxBleus ())
      {
        out.print ("n'a pas");
      }
      else
      {
        out.print ("a");
      }
    %>
    les yeux bleus.<br />
    La personne 2 possède une taille de <jsp:getProperty property="taille" name="perso2"/> cm et
    <%
      if (!perso2.isYeuxBleus ())
      {
        out.print ("n'a pas");
      }
      else
      {
        out.print ("a");
      }
    %>
    les yeux bleus.
  </p>
</body>
</html>

Rendu :

La personne 1 possède une taille de 170 cm et a les yeux bleus.
La personne 2 possède une taille de 160 cm et n'a pas les yeux bleus.

Exemple 3 - Formulaire avec Bean global et session

index3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
  <jsp:useBean id="persoloc" scope="session" class="com.llgc.BeanPersonne" />
  <jsp:setProperty name="persoloc" property="*" />
  <jsp:useBean id="perso" scope="application" class="com.llgc.BeanPersonne" />
  Valeur par défaut du bean application : ${perso.taille}.<br />
  Valeur en cours du bean session : ${persoloc.taille}
  <br />
  <form method="post" action="index3.jsp">
    Taille : <input name="taille" type="text" />
    <input type="submit" value="Submit" />
  </form>
</body>
</html>

Rendu du formulaire : Rendu du formulaire

Rendu de la réponse : Rendu de la réponse

Exemple 3b - avec validation des données

Dans le cas d'un JSP, la vérification des données se fait après la modification des propriétés des Beans, lors de l'appel d'une méthode dédiée. Le Javascript peut être utilisé en pré-traitement.

Méthode à ajouter au Bean :

BeanPersonne.java
  public boolean validate ()
  {
    if (taille < 30 || taille > 250)
    {
      return false;
    }
    return true;
  }
index3b.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
  <jsp:useBean id="persoloc" scope="session"
    class="com.llgc.BeanPersonne" />
  <jsp:setProperty name="persoloc" property="*" />
  <%
    if (!persoloc.validate ())
    {
  %>
    <jsp:forward page="index3b-fail.jsp" />
  <%
    }
  %>
  <br />
  <form method="post" action="index3b.jsp">
    Taille : <input name="taille" type="text" /> <input type="submit"
      value="Submit" />
  </form>
</body>
</html>

Exemple 4 - context-param et init-param

Ajout de :

  • un servlet et son servlet-mapping s'appliquant à indexjsp4.jsp,
  • trois context-param,
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1">
  <display-name>EL</display-name>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>JSP</servlet-name>
    <jsp-file>/indexjsp4.jsp</jsp-file>
    <init-param>
      <param-name>user2</param-name>
      <param-value>utilisateurServlet</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>JSP</servlet-name>
    <url-pattern>/indexjsp4.jsp</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>user</param-name>
    <param-value>utilisateur</param-value>
  </context-param>
  <context-param>
    <param-name>password</param-name>
    <param-value>mot de passe</param-value>
  </context-param>
  <context-param>
    <param-name>driver</param-name>
    <param-value>com.mysql.jdbc.Driver</param-value>
  </context-param>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping></web-app>
indexjsp4.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
  <p>
    <%
      out.println ("nom : " + getServletContext ().getInitParameter ("user") + "<br />");
      out.println ("pass : " + getServletContext ().getInitParameter ("password") + "<br />");
      out.println ("driver : " + getServletContext ().getInitParameter ("driver") + "<br />");
      out.println ("nom2 : " + getServletConfig().getInitParameter ("user2"));
    %>
  </p>
</body>
</html>

Rendu :

nom : utilisateur
pass : mot de passe
driver : com.mysql.jdbc.Driver
nom2 : utilisateurServlet

Exemple 5 - Cookies

indexjsp5.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
  <p>
    <%
      Cookie[] cookies = null;
      int compteur = 0;
      // Get an array of Cookies associated with this domain
      cookies = request.getCookies ();
      if (cookies != null)
      {
        int i;
        for (i = 0; i < cookies.length; i++)
        {
          if (cookies[i].getName ().compareTo ("compteur") == 0)
          {
            compteur = Integer.parseInt (cookies[i].getValue ());
            out.println ("compteur : " + compteur);
            break;
          }
        }
        if (i == cookies.length)
        {
          out.println ("Pas de cookie, allez cuisiner !!!");
        }
      }
      else
      {
        out.println ("Pas de cookie, allez cuisiner !!!");
      }
      compteur++;
      Cookie c = new Cookie ("compteur", "" + compteur);
      c.setMaxAge (3600);
      response.addCookie (c);
    %>
  </p>
</body>
</html>

Rendu 1 :

Pas de cookie, allez cuisiner !!!

Rendu 2 :

compteur : 1

Exemple 6 - Affichage d'une liste dans un tableau

La liste est générée par une classe Java Liste6 et affiche un type BeanPersonne.

indexjsp6.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"
  import="java.util.List, com.llgc.BeanPersonne, com.llgc.Liste6"%>
<!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>Insert title here</title>
</head>
<body>
  <table border="1">
    <tr>
      <td>Taille</td>
      <td>Yeux bleus</td>
    </tr>
    <%
      List <BeanPersonne> liste = Liste6.getListePersonne ();
      for (BeanPersonne beanPersonne : liste)
      {
        out.println ("      <tr>");
        out.println ("        <td>" + beanPersonne.getTaille () + "</td>");
        out.println ("        <td>" + beanPersonne.isYeuxBleus () + "</td>");
        out.println ("      </tr>");
      }
    %>
  </table>
</body>
</html>

Rendu : Rendu exemple 6

Exemple 7 - Erreur - Page non dynamique

Même si c'est possible, il n'est pas vraiment utile d'avoir des pages statiques dans un projet exploitant les JSP (ou autres).

maPage.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
  </head>
  <body>
    <p>Ma première page HTML.</p>
  </body>
</html>

Puis consultez la page à http://localhost:8080/nomProjet/maPage.html

Exemple 8 - Erreur - JSP + Servlet

<note warning>NON. PAS DE SERVLET AVEC DU JSP !!!!! Il devrait être possible de s'en passer.</note>

helloworld/web/java/jsp.1478384174.txt.gz · Dernière modification : 2016/11/05 23:16 de root