JavaServer Pages
Template:Stub informatica JSP o Java Server Pages, a cui talvolta si fa riferimento con Java Scripting Preprocessor è una tecnologia basata su Java che permette agli sviluppatori di generare dinamicamente XML, HTML o altri tipi di pagine web. Questa tecnologia permette di integrare codice Java e alcune azioni predefinite in un contenuto statico.
La sintassi JSP aggiunge ulteriori tag XML, chiamati JSP action, che possono essere usati per invocare funzionalità predefinite. In aggiunta la tecnologia permette la creazione di librerie di tag JSP che fungono da estensioni dei tag standard. Le librerie di tag forniscono un metodo indipendente dalla piattaforma di estendere le capacità di un web server.
All'atto della prima invocazione, le pagine JSP vengono compilate in Servlet da un compilatore JSP. Un compilatore JSP può generare una servlet che poi sarà compilata dal compilatore Java o può direttamente generare il byte code.
JSP e Servlet
Dal punto di vista architetturale, una pagina JSP può essere vista come un'astrazione di alto livello di una servlet che è implementata come estensione delle API Servlet.
Sintassi JSP
Una pagina JSP può essere suddivisa nei seguenti sotto-componenti:
- Dati statici, per esempio HTML.
- Direttive JSP, come la direttiva include.
- Elementi di scripting JSP e variabili
- Actions JSP.
- tag custom.
Dati Statici
I dati statici, come dice il nome, sono dati che non subisco influneze da parte delle interazioni con l'utente e vengono scritti nella risposta HTTP esattamente come appaiono nel file di input. Quindi una pagina JSP valida potrebbe essere anche una pagina HTML senza contenuti dinamici. Tuttavia in qusto caso, gli stessi dati sarebbero mandati in risposta ogni volta dal web server. Ovviamente lo scopo di JSP non è questo ma mandare dei contenuti dinamici che vengono integrati nel contenuto statico.
Direttive JSP
Le direttive JSP controllano il modo in cui il compilatore genera il codice della corrispondente servlet. Sono disponibili le seguenti direttive:
- include - questa direttiva informa il compilatore JSP di includere un altro file in quello corrente. È un'operazione equivalente a quella di copiare e incolare il contenuto de3l file in quello corrente. Questa funzionalità è simile a quella fornita dal preprocessore del C/C++.
<%@ include file="filedaincludere.ext" %>
- page - Esistono diverse opzioni alla direttiva page:
- import permette di definire l' import di una classe pre-esistente o di un package
- contentType specifica il contenuto che viene generato. Deve essere usato se non viene restituito codice HTML o se il set di codifica non è quello standard.
- errorPage specifica la pagina che deve essere visualizzata se viene sollevata un'eccezione durante il soddisfacimento della richiesta HTTP.
- isErrorPage se settata a true, indica chequella corrente è una pagina di errore.
- isThreadSafe indica se la servlet è thread safe.
<%@ page import="java.util.* %> //importa tutte le classi del package java.util <%@ page contentType="text/html" %> //imposta il contenuto a text/html <%@ page isErrorPage=false %> //specifica che non è una pagina di errore <%@ page isThreadSafe=true %> //dice che la pagina è thread safe
Nota: solo la dierettiva "import" può essere usata più volte nella stessa pagina JSP.
- taglib -- La direttiva taglb indica deve essere usata una libreria di tag. La direttiva impone di specificare un prefisso (molto simile ai namespace in C++) e l'URI della descrizione della tag library.
<%@ taglib prefix="myprefix" uri="taglib/miataglib.tld" %>