La **JSTL** (*JavaServer Pages Standard Tag Library*) è una collezione di tag personalizzati che permettono di implementare logica comune (cicli, condizioni, formattazione) nelle JSP senza ricorrere agli scriptlet Java.
Per usarla, bisogna dichiarare la taglib nell'intestazione della JSP:
```jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
```
## Tag Core Principali (`c:`)
### Ciclo `forEach` (Iterazione)
Usato per iterare su collezioni (Liste, Array, Mappe) o per cicli numerici.
**Esempio Numerico (da 1 a 10):**
```jsp
Conteggio: ${i}
```
**Esempio su Collezione:**
```jsp
- ${prodotto.nome} - ${prodotto.prezzo} €
```
### Condizione `if`
Esegue il contenuto solo se la condizione è vera. **Nota:** Non esiste il tag `c:else`.
```jsp
Benvenuto, ${user.nome}!
```
### Scelta Multipla `choose`
Equivale al costrutto `switch-case` o `if-else if-else`.
```jsp
Bocciato
Sufficiente
Ottimo!
```
## Gestione degli URL (`c:url`)
Il tag `` è fondamentale per gestire correttamente gli URL all'interno dell'applicazione, gestendo automaticamente l'aggiunta del nome del contesto (context path) e l'URL rewriting (per il mantenimento della sessione).
```jsp
<%-- Creazione link sicuro --%>
Torna alla Home
<%-- Inserimento parametri dinamici --%>
Modifica
```
## Perché usare JSTL invece degli Scriptlet?
1. **Leggibilità:** Il codice somiglia all'HTML, facilitando il lavoro ai front-end designer.
2. **Meno Errori:** Riduce la complessità sintattica (niente parentesi graffe aperte/chiuse sparse).
3. **Manutenibilità:** Separa nettamente la logica di visualizzazione da quella Java.