Outils pour utilisateurs

Outils du site


helloworld_web_java_el

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
helloworld_web_java_el [2015/07/29 09:07] – Création (en cours) roothelloworld_web_java_el [2015/08/08 21:47] (Version actuelle) – supprimée root
Ligne 1: Ligne 1:
-Nécessite l'[[eclipse_howto_install_lib|installation]] de la librairie [[https://jstl.java.net/download.html|JSTL]] (bien installer les 2 parties API et Implementation). 
- 
-Les EL permettent de réaliser des opérations arithmétiques et logiques simples ainsi que l'accès et la modification de propriétés des [[helloworld_design_pattern_bean|Bean Java]]. L'objectif est aussi de ne plus utiliser de scriptlets. 
- 
-<note important> 
-Il sera présenté l'utilisation de la JSTL et des EL pour JSP et JSF. Il convient donc de bien vérifier que le code correspond bien à la technologie utilisée. 
-</note> 
- 
-=====Préparation du projet===== 
-Nécessite un projet de type [[eclipse_howto_dwp|Dynamic Web Project]]. Une fois le projet créé ainsi qu'au minimum un Bean (ici [[helloworld_design_pattern_bean|BeanPersonne]]), il faut choisir entre travailler avec des fichiers ''.jsp'' ou ''.xhtml''. Le format ''.jsp'' est exclusivement pour travailler avec des ''JSP'' (''JavaServer Pages'') et ''JSF 1.2'' (''JavaServer Faces'') alors que le format ''.xhtml'' est compatible ''JSP'' mais nécessite les ''JSF 2.0'' (et donc d'[[eclipse_howto_dwp#Activer le support des JSF|activer les JSF]] dans le projet). Enfin ajoutez le fichier au format choisi via ''File|New|Other'', puis ''Web/JSP File'' ou ''Web/HTML'' et validez. 
- 
-=====Entête de base===== 
-  * Ensuite, il faut déclarer les entêtes ''JSP'' : 
-<code html> 
-<%@ page language="java" contentType="text/html; charset=UTF-8" 
-  pageEncoding="UTF-8"%> 
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
-<html> 
- 
-</code> 
-  * ou au format ''xhtml'' : 
-<code xml> 
-<?xml version="1.0" encoding="UTF-8" ?> 
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
-<html xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:c="http://java.sun.com/jsp/jstl/core" 
-  xmlns:h="http://java.sun.com/jsf/html"> 
-</code> 
- 
-=====EL sans Java===== 
-Une expression language se déclare avec le symbole ''${…}''. Par exemple : 
- 
-Il est à noter que les EL ne permettent pas l'utilisation de ''if-then-else''. Cependant, il est possible d'utiliser un équivalent au ''case-switch-default'' : 
-<file xml index.jsp> 
-<%@ page language="java" contentType="text/html; charset=UTF-8" 
- pageEncoding="UTF-8"%> 
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
-<!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>Titre</title> 
-</head> 
-<body> 
-  <p> 
-    <c:if test="${15 % 2 == 0}"> 
-      <c:out value="15 est un nombre pair."></c:out> 
-    </c:if> 
-    <c:if test="${15 % 2 == 1}"> 
-      <c:out value="15 est un nombre impair."></c:out> 
-    </c:if> 
-    <br /> 
-    <c:choose> 
-      <c:when test="${16 % 2 == 0}"> 
-        <c:out value="16 est un nombre pair."></c:out> 
-      </c:when> 
-      <c:otherwise> 
-        <c:out value="16 est un nombre impair."></c:out> 
-      </c:otherwise> 
-    </c:choose> 
-  </p> 
-</body> 
-</html> 
-</file> 
- 
-''c:out'' n'est compatible qu'avec des fichiers ''JSP''. Dans le cas de fichier ''xhtml'', il est nécessaire d'utiliser ''h:outputText'' à la place. 
- 
-<file xml index.xhtml> 
-<?xml version="1.0" encoding="UTF-8" ?> 
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
-<html xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:c="http://java.sun.com/jsp/jstl/core" 
-  xmlns:h="http://java.sun.com/jsf/html"> 
-<head> 
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
-  <title>Insert title here</title> 
-</head> 
-<body> 
-  <p> 
-    <c:if test="${15 % 2 == 0}"> 
-      <h:outputText value="15 est un nombre pair."></h:outputText> 
-    </c:if> 
-    <c:if test="${15 % 2 == 1}"> 
-      <h:outputText value="15 est un nombre impair."></h:outputText> 
-    </c:if> 
-    <br /> 
-    <c:choose> 
-      <c:when test="${16 % 2 == 0}"> 
-        <h:outputText value="16 est un nombre pair."></h:outputText> 
-      </c:when> 
-      <c:otherwise> 
-        <h:outputText value="16 est un nombre impair."></h:outputText> 
-      </c:otherwise> 
-    </c:choose> 
-  </p> 
-</body> 
-</html> 
-</file> 
- 
-=====Objets implicites===== 
-Les objets implicites sont ([[http://adiguba.developpez.com/tutoriels/j2ee/jsp/el/|Source]], {{:wiki:helloworld:web:java:jsp:les_expressions_languages.htm.maff|Archive}}) : 
-  * ''pageContext'' : Accès à l'objet PageContext de la page JSP. 
-  * ''pageScope'' : Map permettant d'accéder aux différents attributs du scope 'page'. 
-  * ''requestScope'' : Map permettant d'accéder aux différents attributs du scope 'request'. 
-  * ''sessionScope'' : Map permettant d'accéder aux différents attributs du scope 'session'. 
-  * ''applicationScope'' : Map permettant d'accéder aux différents attributs du scope 'application'. 
-  * ''param'' : Map permettant d'accéder aux paramètres de la requête HTTP sous forme de String. 
-  * ''paramValues'' : Map permettant d'accéder aux paramètres de la requête HTTP sous forme de tableau de String. 
-  * ''header'' : Map permettant d'accéder aux valeurs du Header HTTP sous forme de String. 
-  * ''headerValues'' : Map permettant d'accéder aux valeurs du Header HTTP sous forme de tableau de String. 
-  * ''cookie'' : Map permettant d'accéder aux différents Cookies. 
-  * ''initParam'' : Map permettant d'accéder aux init-params du web.xml. 
- 
-=====Manipulation des Beans===== 
-  * Pour les JSP, il est possible d'instancier plusieurs variables d'une même classe, de modifier leurs attributs et de les afficher. Il n'est pas nécessaire de définir la classe comme ''ManagedBean'' ou ses méthodes comme ''ManagedProperty'' que ce soit par annotation ou par le fichier ''faces-config.xml''. 
-<file xml index2.jsp> 
-<%@ page language="java" contentType="text/html; charset=UTF-8" 
-  pageEncoding="UTF-8"%> 
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
-<!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 
-    <c:if test="${!perso1.yeuxBleus}"> 
-      n'a pas 
-    </c:if> 
-    <c:if test="${perso1.yeuxBleus}"> 
-      <c:out value="a" /> 
-    </c:if> 
-    les yeux bleus.<br /> 
-    La personne 2 possède une taille de ${perso2.taille} cm et 
-    <c:if test="${!perso2.yeuxBleus}"> 
-      n'a pas 
-    </c:if> 
-    <c:if test="${perso2.yeuxBleus}"> 
-      <c:out value="a" /> 
-    </c:if> 
-    les yeux bleus. 
-  </p> 
-</body> 
-</html> 
-</file> 
-  * Sous JSF, il n'est possible d'instancier un Bean qu'une seule fois. Par exemple, ci-dessous un exemple pour travailler avec le BeanPersonne, le modifier et l'afficher. 
-<note important>Notez la majuscule au début du Bean dans ''<c:set target="${BeanPersonne}"'' et son absence dans ''${beanPersonne.taille}''. En effet, dans l'un, on travaille avec la classe, dans l'autre, son unique instanciation.</note> 
-<file xml index2.xhtml> 
-<?xml version="1.0" encoding="UTF-8" ?> 
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
-<html xmlns="http://www.w3.org/1999/xhtml" 
-  xmlns:c="http://java.sun.com/jsp/jstl/core" 
-  xmlns:h="http://java.sun.com/jsf/html"> 
-<head> 
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
-  <title>Insert title here</title> 
-</head> 
-<body> 
-  <c:set target="${BeanPersonne}" property="taille" value="170" /> 
-  <c:set target="${BeanPersonne}" property="yeuxBleus" value="true" /> 
-  <p> 
-    La personne possède une taille de ${beanPersonne.taille} cm et 
-    <c:if test="${beanPersonne.yeuxBleus}"> 
-      <h:outputText value="a" /> 
-    </c:if> 
-    <c:if test="${!beanPersonne.yeuxBleus}"> 
-    n'a pas 
-    </c:if> 
-    les yeux bleus. 
-  </p> 
-</body> 
-</html> 
-</file> 
-Il est nécessaire de déclarer le Bean comme ''ManagedBean'' (''javax.faces.bean'') et ces attributs ''ManagedProperty''. 
-<file java BeanPersonne.java> 
-package com.llgc; 
- 
-import java.util.Arrays; 
- 
-import javax.faces.bean.ManagedBean; 
-import javax.faces.bean.ManagedProperty; 
- 
-@ManagedBean 
-public class BeanPersonne 
-{ 
-  @ManagedProperty(value="#{taille}") 
-  private int taille = 150; 
-  @ManagedProperty(value="#{yeuxBleus}") 
-  private boolean yeuxBleus = false; 
-  @ManagedProperty(value="#{diplomes}") 
-  private int[] diplomes = null; 
- 
-  public int getTaille () 
-  { 
-    return taille; 
-  } 
- 
-  public void setTaille (int taille) 
-  { 
-    this.taille = taille; 
-  } 
- 
-  public boolean isYeuxBleus () 
-  { 
-    return yeuxBleus; 
-  } 
- 
-  public void setYeuxBleus (boolean yeuxBleus) 
-  { 
-    this.yeuxBleus = yeuxBleus; 
-  } 
- 
-  public int[] getDiplomes () 
-  { 
-    return diplomes; 
-  } 
- 
-  public void setDiplomes (int[] diplomes) 
-  { 
-    this.diplomes = diplomes; 
-  } 
- 
-  public int getDiplomes (int index) 
-  { 
-    return diplomes[index]; 
-  } 
- 
-  public void setDiplomes (int index, int diplome) 
-  { 
-    this.diplomes[index] = diplome; 
-  } 
- 
-  @Override 
-  public String toString () 
-  { 
-    return "BeanPersonne [taille=" + taille + ", yeuxBleus=" + yeuxBleus + ", diplomes=" + Arrays.toString (diplomes) 
-        + "]"; 
-  } 
-} 
-</file> 
- 
-=====Les Beans et les formulaires===== 
-L'utilisation la plus courante des Beans et des EL est certainement celui des formulaires pour mémoriser les valeurs des champs d'une page à l'autre (scope session). 
  
helloworld_web_java_el.1438153634.txt.gz · Dernière modification : de root