'' : boucle soit d'une variable variant de ''n'' à ''m'', soit en parcourant tous les éléments de type liste (''HashMap'', ''Collection'', …).
|
|
''%%%%'' : ajout avant la base l'équivalent d'un ''#{pageContext.request.contextPath}''. Le rendu sera, par exemple : ''/jstl/urlbase/?param=valeur'' et le lien renverra alors vers ''http://localhost:8080/jstl/urlbase/?param=valeur''.
=====Exemple 1 - La base=====
Bien importer la JSTL 1.2 (et 1.1) avec ''%%uri="http://java.sun.com/jsp/jstl/core"%%'' et non pas la JSTL 1.0 qui s'importe avec ''%%uri="http://java.sun.com/jstl/core"%%''. [[http://stackoverflow.com/questions/13285826/can-not-find-the-tag-library-descriptor-for-http-java-sun-com-jsp-jstl-core|Can not find the tag library descriptor for “http://java.sun.com/jsp/jstl/core”]] {{ :helloworld:web:java:jsp_jstl_el:eclipse_-_can_not_find_the_tag_library_descriptor_for_http_java.sun.com_jsp_jstl_core_-_stack_overflow_2020-04-26_8_15_17_pm_.html |Archive du 08/11/2012 le 26/04/2020}}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Insert title here
Rendu :
15 est un nombre impair.
16 est un nombre pair.
=====Exemple 2 - Utilisation d'un Bean=====
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Insert title here
La personne 1 possède une taille de ${sessionScope.perso1.taille} cm et
n'a pas
les yeux bleus.
La personne 2 possède une taille de ${perso2.taille} cm et
n'a pas
les yeux bleus.
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=====
Voir [[helloworld:web:java:jsp#exemple_3_-_formulaire_avec_bean_global_et_session|JSP]]
=====Exemple 3b - avec validation des données=====
Voir [[helloworld:web:java:jsp#exemple_3b_-_avec_validation_des_donnees|JSP]]
=====Exemple 4 - context-param et init-param=====
Ajout de :
* un ''servlet'' et son ''servlet-mapping'' s'appliquant à ''indexjsp-jstl4.jsp'',
* trois ''context-param'',
EL
Faces Servlet
javax.faces.webapp.FacesServlet
JSP2
/indexjsp-jstl4.jsp
user2
utilisateurServlet
JSP2
/indexjsp-jstl4.jsp
user
utilisateur
password
mot de passe
driver
com.mysql.jdbc.Driver
Faces Servlet
/faces/*
…
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Insert title here
nom : ${initParam['user']}
pass : ${initParam['password']}
driver : ${initParam['driver']}
nom2 : <%=config.getInitParameter("user2")%>
Il se semble pas possible de pouvoir accéder aux ''init-param'' qui sont contenus dans le bloc ''servlet'' sans passer par des ''scriptlets''. Il convient donc d'utiliser de préférence les ''context-param'' qui sont accessibles via ''initParam['nom']'' [[https://coderanch.com/wiki/660120/Init-Params-Expression-Language|Init Params Thru Expression Language]] {{ :helloworld:web:java:jsp_jstl_el:init_params_thru_expression_language_wiki_forum_at_coderanch_2020-04-26_8_20_42_pm_.html |Archive du 03/01/2016 le 26/04/2020}}.
Rendu :
nom : utilisateur
pass : mot de passe
driver : com.mysql.jdbc.Driver
nom2 : utilisateurServlet
=====Exemple 5 - Cookies=====
Tout comme pour l'exemple 4, il n'est pas possible de modifier les cookies sans passer par des commandes Java. Il est donc nécessaire de passer par l'intermédiaire d'une ''servlet''.
package com.llgc;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ServletJSP5
*/
@WebServlet ("/ServletJSP5")
public class ServletJSP5 extends HttpServlet
{
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setCharacterEncoding ("UTF-8");
String value = getCookie (request.getCookies (), "compteur");
response.setContentType ("text/html");
int compteur = 0;
if (value != null)
{
compteur = Integer.parseInt (value);
}
compteur++;
Cookie c = new Cookie ("compteur", "" + compteur);
c.setMaxAge (3600);
response.addCookie (c);
this.getServletContext ().getRequestDispatcher ("/WEB-INF/indexjsp-jstl5.jsp").forward (request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGet (request, response);
}
// Renvoie la valeur d'un cookie.
protected static String getCookie (Cookie[] cookies, String cookieName)
{
if (cookies == null)
{
return null;
}
for (int i = 0; i < cookies.length; i++)
{
if (cookieName.equalsIgnoreCase (cookies[i].getName ()))
{
return cookies[i].getValue ();
}
}
return null;
}
}
Le fichier ''.jsp'' est mis dans le dossier ''WEB-INF''. Ainsi, seulement la ''servlet'' a accès au fichier.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Insert title here
compteur : ${cookie.compteur.value}
Pas de cookie, allez cuisiner !!!
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 [[helloworld:web:java:servlet#exemple_6_-_affichage_d_une_liste_dans_un_tableau|Liste6]] et affiche un type [[helloworld:design_pattern:bean:java#cas_general|BeanPersonne]].
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Insert title here