Tutorial JSTL, Esempio Tag JSTL

JSTL sta per JSP Standard Tag Library. JSTL è la libreria di tag standard che fornisce tag per controllare il comportamento della pagina JSP. I tag JSTL possono essere utilizzati per iterazioni, istruzioni di controllo, internazionalizzazione, SQL, ecc. Esamineremo i tag JSTL in dettaglio in questo tutorial su JSTL. In precedenza abbiamo visto come possiamo utilizzare JSP EL e Tag di azione JSP per scrivere codice JSP come HTML, ma le loro funzionalità sono molto limitate. Ad esempio, non possiamo eseguire un loop attraverso una collezione utilizzando EL o elementi di azione e non possiamo escapare i tag HTML per mostrarli come testo nel lato client. Ecco dove i tag JSTL sono utili perché possiamo fare molto di più con i tag JSTL.

JSTL

JSTL fa parte dell’API di Java EE ed è inclusa nella maggior parte dei contenitori servlet. Ma per utilizzare JSTL nelle nostre pagine JSP, è necessario scaricare i file JSTL per il proprio contenitore servlet. Per la maggior parte delle volte, è possibile trovarli negli esempi dei progetti di download del server e utilizzarli. È necessario includere queste librerie nel progetto dell’applicazione web nella directory WEB-INF/lib.

File JSTL

I file JSTL sono specifici del contenitore, ad esempio in Tomcat è necessario includere i file jar jstl.jar e standard.jar nel percorso di compilazione del progetto. Se non sono presenti nella directory lib del contenitore, è necessario includerli nella propria applicazione. Se si dispone di un progetto Maven, le dipendenze seguenti devono essere aggiunte nel file pom.xml, altrimenti si otterrà il seguente errore nelle pagine JSP – eclipse Impossibile trovare il descrittore della libreria dei tag per "https://java.sun.com/jsp/jstl/ core".

<dependency>
	<groupId>jstl</groupId>
	<artifactId>jstl</artifactId>
	<version>1.2</version>
</dependency>
<dependency>
	<groupId>taglibs</groupId>
	<artifactId>standard</artifactId>
	<version>1.1.2</version>
</dependency>

Tag JSTL

In base alle funzioni di JSTL, i tag sono suddivisi in cinque tipi.

  1. Tag di base JSTL: I tag di base JSTL forniscono supporto per l’iterazione, la logica condizionale, la gestione delle eccezioni, l’url, il reindirizzamento della risposta, ecc. Per utilizzare i tag di base JSTL, dovremmo includerli nella pagina JSP come segue.

    <%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
    

    In questo articolo, esamineremo i tag di base JSTL più importanti.

  2. Tag di formattazione e localizzazione JSTL: I tag di formattazione JSTL sono forniti per la formattazione di numeri, date e supporto i18n tramite impostazioni locali e bundle di risorse. Possiamo includere questi tag JSTL in JSP con la seguente sintassi:

    <%@ taglib uri="https://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    
  3. Tag SQL JSTL: I tag SQL JSTL forniscono supporto per l’interazione con database relazionali come Oracle, MySql, ecc. Utilizzando i tag SQL JSTL possiamo eseguire query al database, includiamo questi tag JSTL in JSP con la seguente sintassi:

    <%@ taglib uri="https://java.sun.com/jsp/jstl/sql" prefix="sql" %>
    
  4. Tag JSTL XML: i tag JSTL XML vengono utilizzati per lavorare con documenti XML come il parsing XML, la trasformazione dei dati XML e la valutazione delle espressioni XPath. La sintassi per includere i tag JSTL XML in una pagina JSP è:

    <%@ taglib uri="https://java.sun.com/jsp/jstl/xml" prefix="x" %>
  5. Tag JSTL Functions: i tag JSTL forniscono diverse funzioni che possiamo utilizzare per eseguire operazioni comuni, la maggior parte di esse riguarda la manipolazione delle stringhe come la concatenazione delle stringhe, la divisione delle stringhe, ecc. La sintassi per includere le funzioni JSTL in una pagina JSP è:

    <%@ taglib uri="https://java.sun.com/jsp/jstl/functions" prefix="fn" %>

Nota che tutti gli URI dei tag standard JSTL iniziano con https://java.sun.com/jsp/jstl/ e possiamo utilizzare qualsiasi prefisso che vogliamo, ma è una buona pratica utilizzare il prefisso definito sopra perché tutti lo utilizzano, quindi non creerà confusione.

Tag Core JSTL

I tag Core JSTL sono elencati nella tabella sottostante.

JSTL Core Tag Description
<c:out> To write something in JSP page, we can use EL also with this tag
<c:import> Same as jsp:include or include directive
<c:redirect> redirect request to another resource
<c:set> To set the variable value in given scope.
<c:remove> To remove the variable from given scope
<c:catch> To catch the exception and wrap it into an object.
<c:if> Simple conditional logic, used with EL and we can use it to process the exception from <c:catch>
<c:choose> Simple conditional tag that establishes a context for mutually exclusive conditional operations, marked by <c:when> and <c:otherwise>
<c:when> Subtag of <c:choose> that includes its body if its condition evalutes to ‘true’.
<c:otherwise> Subtag of <c:choose> that includes its body if its condition evalutes to ‘false’.
<c:forEach> for iteration over a collection
<c:forTokens> for iteration over tokens separated by a delimiter.
<c:param> used with <c:import> to pass parameters
<c:url> to create a URL with optional query string parameters

Tutorial JSTL

Vediamo alcuni esempi di utilizzo dei tag Core JSTL in una semplice applicazione web. Il nostro progetto includerà un Java Bean e creeremo una lista di oggetti e impostiamo alcuni attributi che verranno utilizzati nella JSP. La pagina JSP mostrerà come iterare su una collezione, utilizzare la logica condizionale con EL e alcuni altri utilizzi comuni.

Tutorial JSTL – Classe Java Bean

package com.journaldev.model;

public class Employee {

	private int id;
	private String name;
	private String role;
	public Employee() {
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getRole() {
		return role;
	}
	public void setRole(String role) {
		this.role = role;
	}

}

Tutorial JSTL – Classe Servlet

package com.journaldev.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.journaldev.model.Employee;

@WebServlet("/HomeServlet")
public class HomeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		List<Employee> empList = new ArrayList<Employee>();
		Employee emp1 = new Employee();
		emp1.setId(1); emp1.setName("Pankaj");emp1.setRole("Developer");
		Employee emp2 = new Employee();
		emp2.setId(2); emp2.setName("Meghna");emp2.setRole("Manager");
		empList.add(emp1);empList.add(emp2);
		request.setAttribute("empList", empList);
		
		request.setAttribute("htmlTagData", "<br/> creates a new line.");
		request.setAttribute("url", "https://www.journaldev.com");
		RequestDispatcher rd = getServletContext().getRequestDispatcher("/home.jsp");
		rd.forward(request, response);
	}

}

Tutorial JSTL – Pagina JSP

home.jsp codice:

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Home Page</title>
<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<style>
table,th,td
{
border:1px solid black;
}
</style>
</head>
<body>
<%-- Using JSTL forEach and out to loop a list and display items in table --%>
<table>
<tbody>
<tr><th>ID</th><th>Name</th><th>Role</th></tr>
<c:forEach items="${requestScope.empList}" var="emp">
<tr><td><c:out value="${emp.id}"></c:out></td>
<td><c:out value="${emp.name}"></c:out></td>
<td><c:out value="${emp.role}"></c:out></td></tr>
</c:forEach>
</tbody>
</table>
<br><br>
<%-- simple c:if and c:out example with HTML escaping --%>
<c:if test="${requestScope.htmlTagData ne null }">
<c:out value="${requestScope.htmlTagData}" escapeXml="true"></c:out>
</c:if>
<br><br>
<%-- c:set example to set variable value --%>
<c:set var="id" value="5" scope="request"></c:set>
<c:out value="${requestScope.id }" ></c:out>
<br><br>
<%-- c:catch example --%>
<c:catch var ="exception">
   <% int x = 5/0;%>
</c:catch>

<c:if test = "${exception ne null}">
   <p>Exception is : ${exception} <br>
   Exception Message: ${exception.message}</p>
</c:if>
<br><br>
<%-- c:url example --%>
<a href="<c:url value="${requestScope.url }"></c:url>">JournalDev</a>
</body>
</html>

Ora quando eseguiamo l’applicazione con URL https://localhost:8080/JSTLExample/HomeServlet, otteniamo una risposta come nell’immagine sottostante. Nel precedente esempio JSTL, stiamo utilizzando c:catch per catturare l’eccezione all’interno del metodo di servizio JSP, è diverso dal Gestione eccezioni JSP con configurazioni delle pagine di errore. Questo è tutto per un breve riassunto dei tag JSTL e dell’esempio di utilizzo dei tag core JSTL. Riferimento: Pagina Wikipedia JSTL

Source:
https://www.digitalocean.com/community/tutorials/jstl-tutorial-jstl-tags-example