JavaServer Pages: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Funzionalità collegamenti suggeriti: 1 collegamento inserito. |
||
(29 versioni intermedie di 20 utenti non mostrate) | |||
Riga 1:
{{Formato file
In [[informatica]] '''JavaServer Pages''', di solito indicato con la sigla '''JSP''' (letto anche talvolta come '''Java Scripting Preprocessor'''), è una tecnologia di [[programmazione Web]] in [[Java (linguaggio)|Java]] per lo sviluppo della ''logica di presentazione'' (tipicamente secondo il pattern [[Model View Controller|MVC]]) di [[applicazione Web|applicazioni Web]], fornendo [[pagine web dinamiche|contenuti dinamici]] in formato [[HTML]] o [[XML]]. Si basa su un insieme di speciali [[Tag HTML|tag]], all'interno di una pagina HTML, con cui possono essere invocate [[funzione (informatica)|funzioni]] predefinite sotto forma di [[codice sorgente|codice]] [[Java (linguaggio)|Java]] ([[JSTL]]) e/o funzioni [[Javascript]]. In aggiunta, permette di creare librerie di nuovi tag che estendono l'insieme dei tag standard (JSP [[Custom Tag Library]]). Le librerie di tag JSP si possono considerare estensioni [[portabilità|indipendenti dalla piattaforma]] delle funzionalità di un [[Web server]].▼
| nome = JSP
| icona =
| logo =
| immagine =
| didascalia =
| estensione = .jsp
| mime = application/jsp
| sviluppatore =
| proprietario =
| licenza =
| data_pubblicazione =
| ultima_versione =
| data_ultima_versione =
| genere =
| estensione_di =
| esteso_a =
| standard =
| aperto =
}}
▲In [[informatica]] '''JavaServer Pages''', di solito indicato con la sigla '''JSP''' (letto anche talvolta come '''Java Scripting Preprocessor'''), è una tecnologia di [[programmazione
==Descrizione==
Nel contesto della [[piattaforma Java]], la tecnologia JSP è correlata con quella delle [[servlet]]: all'atto della prima invocazione, le pagine JSP vengono infatti [[compilatore|tradotte]] automaticamente da un [[compilatore JSP]] in [[servlet]]. Una pagina JSP può quindi essere vista come una rappresentazione ad alto livello di un servlet. Per via di questa dipendenza concettuale, anche l'uso della tecnologia JSP richiede la presenza, sul [[
JSP è una tecnologia alternativa rispetto a numerosi altri approcci alla generazione di pagine
=== Paradigma MVC ===▼
[[Sun Microsystems]] raccomanda di utilizzare il [[Design pattern|pattern]] [[Model-View-Controller]] con le pagine JSP in modo da dividere il [[livello di presentazione]] da quello dell'elaborazione della request e dalla memorizzazione dei dati. Le normali [[servlet]] o delle pagine JSP dedicate vengono utilizzate per processare i dati. Dopo che l'eleborazione è terminata, il controllo passa ad una pagina JSP che serve solo a visualizzare l'output. Quest'ultima pagina JSP dovrebbe contenere solo [[HTML]], [[XML]] e action e tag JSP; la pagina dovrebbe far uso dei [[JavaBean]]s per ottenere i dati.▼
In altri termini nello sviluppo di un'[[applicazione web]] la convenzione vuole che nelle JSP ci sia meno codice Java possibile e quello presente vada a richiamare codice Java nativo (oggetti e [[metodo (programmazione)|metodi]]) implementato in classi separate apposite dette appunto JavaBeans. Questa separazione consente infatti un facile [[riuso di codice]] dei Java beans una volta richiamato in un qualsiasi punto richiesto dell'applicazione web.▼
== Struttura di una pagina JSP ==
Una '''
=== Contenuti statici ===
I contenuti statici sono porzioni della pagina JSP che devono essere mantenute integralmente nella pagina
=== Direttive ===
Le direttive JSP si possono interpretare come comandi rivolti al motore JSP. Questi comandi vengono eseguiti in una fase di ''[[preprocessore|preprocessing]]'', prima che siano elaborate le porzioni della pagina contenenti [[script]]. Le due direttive principali sono <code>include</code> e <code>page</code>.
* '''<code>include</code>''': ordina al motore JSP di includere un altro file in quello corrente. È un'operazione equivalente a quella di [[copia e incolla|copiare e incollare]] il contenuto del file indicato in quello corrente. (Una direttiva di questo tipo è simile a quella prevista dal [[preprocessore]] del [[C (linguaggio)|C]]/[[C++]]). Questa direttiva può essere usata, per esempio, per realizzare contenuti ricorrenti in diverse pagine di un [[sito
:<code><nowiki><%@ include file="filedaincludere.ext" %></nowiki></code>
Riga 28 ⟶ 55:
: '''<code>page isErrorPage</code>''' indica se quella corrente è una pagina di errore
::<code><nowiki><%@ page isErrorPage=false %> //specifica che non è una pagina di errore</nowiki></code>
: '''<code>page isThreadSafe</code>''' indica se il servlet generato dalla pagina JSP è ''[[Thread safety|thread safe]]''
: '''<code>page taglib</code>''' indica che la pagina JSP fa uso di una [[libreria di tag]]. La libreria deve essere identificata tramite una [[Uniform Resource Identifier|URI]] (Uniform Resource Identifier)
::<code><nowiki><%@ taglib prefix="myprefix" uri="taglib/miataglib.tld" %></nowiki></code>
=== Scripting ===
La terza categoria di elementi presenti in una pagina JSP sono frammenti di [[codice sorgente]] (Java). Questi frammenti di codice sono quindi eseguiti dalla [[Java Virtual Machine]] e producono in output un testo, che va a contribuire al sorgente della pagina
==== Dichiarazioni ====
Riga 40 ⟶ 67:
==== Espressioni ====
Le espressioni sono introdotte dalla sequenza '''<%=''', e contengono una qualsiasi espressione Java. Durante l'elaborazione della pagina JSP, l'espressione viene valutata dal motore JSP, il risultato viene convertito in stringa, e la stringa
::<code><body></code>
::<code>Sei l'utente registrato nr. <%= registroUtenti.conta() %></code>
::<code></body></code>
==== Scriptlet ====
Gli scriptlet sono frammenti di codice immersi in un qualunque punto del testo. Concettualmente, si può immaginare che durante la costruzione della pagina
==== Variabili implicite ====
Gli elementi di codice in una pagina JSP possono fare riferimento a un insieme di variabili predefinite:
: '''<code>out</code>''': rappresenta il [[
: '''<code>page</code>''': rappresenta il servlet generato dalla pagina JSP
: '''<code>pageContext</code>''': un oggetto di classe <code>PageContext</code>, che contiene dati associati all'intera pagina. L'oggetto può essere trasferito da una pagina JSP a un'altra
: '''<code>request</code>''': l'oggetto di classe <code>HttpServletRequest</code> che rappresenta la richiesta [[
: '''<code>response</code>''': l'oggetto di classe <code>HttpServletResponse</code> che rappresenta la risposta HTTP da inviare
: '''<code>session</code>''': l'oggetto di classe <code>HttpSession</code> che rappresenta la sessione HTTP all'interno della quale è stata invocata la pagina JSP
Riga 60 ⟶ 87:
=== Azioni JSP ===
Le azioni JSP sono tag [[XML]] che consentono di controllare alcuni aspetti del comportamento del [[
:'''<code><nowiki>jsp:include</nowiki></code>''': cede il controllo a un'altra pagina JSP, con ritorno del controllo a elaborazione terminata; simile a una [[chiamata di procedura]]
:'''<code><nowiki>jsp:forward</nowiki></code>''': cede il controllo, definitivamente, a un'altra pagina JSP
Riga 75 ⟶ 102:
</myprefix:myaction> <%-- il tag di chiusura %>
...
Il compilatore JSP caricherà il file ''mytaglib.tld'' e vedrà che il tag 'myaction' è implementato dalla classe 'MyActionTag'. La prima volta che il tag viene usato nel file, verrà creata un'istanza di 'MyActionTag'. Quindi (e ogni volta che il tag viene usato), verrà invocato il metodo ''''doStartTag()'''' quando viene incontrato il tag di apertura. Viene esaminato il risultato del tag di apertura e si determina come processare il contenuto del tag. Il contenuto è il testo compreso fra il tag di apertura e quello di chiusura. Il metodo ''
* SKIP_BODY - il contenuto del tag non verrà esaminato.
* EVAL_BODY_INCLUDE - processa il contenuto del tag.
Riga 104 ⟶ 131:
== Esempi ==
Il seguente frammento suggerisce come si potrebbe creare un'intestazione a diverse pagine
<jsp:include page="intestazione.jsp" > //includo una parte standard
Riga 138 ⟶ 165:
* un Expression Language (EL) che permette agli sviluppatori di creare template di stile (come quelli di [[Jakarta Velocity|Velocity]]);
* un metodo più semplice e veloce di creare nuovi tag.
▲== Paradigma MVC ==
▲[[Sun Microsystems]] raccomanda di utilizzare il [[Design pattern|pattern]] [[Model-View-Controller]] con le pagine JSP in modo da dividere il livello di presentazione da quello dell'elaborazione della request e dalla memorizzazione dei dati. Le normali [[servlet]] o delle pagine JSP dedicate vengono utilizzate per processare i dati. Dopo che l'eleborazione è terminata, il controllo passa ad una pagina JSP che serve solo a visualizzare l'output. Quest'ultima pagina JSP dovrebbe contenere solo [[HTML]], [[XML]] e action e tag JSP; la pagina dovrebbe far uso dei [[JavaBean]]s per ottenere i dati.
▲In altri termini nello sviluppo di un'[[applicazione web]] la convenzione vuole che nelle JSP ci sia meno codice Java possibile e quello presente vada a richiamare codice Java nativo (oggetti e [[metodo (programmazione)|metodi]]) implementato in classi separate apposite dette appunto JavaBeans. Questa separazione consente infatti un facile [[riuso di codice]] dei Java beans una volta richiamato in un qualsiasi punto richiesto dell'applicazione web.
== Voci correlate ==
Riga 150 ⟶ 172:
* [[Servlet]]
* [[JHTML]]
* [[JavaScript]]
== Altri progetti ==
{{interprogetto}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
▲* [http://www.oracle.com/technetwork/java/javaee/jsp/ Pagina ufficiale]
*
*
* {{cita web | 1 = http://www.courses.coreservlets.com/Course-Materials/ | 2 = Tutorial e guide free | accesso = 12 ottobre 2006 | dataarchivio = 19 gennaio 2007 | urlarchivio = https://web.archive.org/web/20070119124040/http://courses.coreservlets.com/Course-Materials/ | urlmorto = sì }}
{{Portale|informatica}}
[[Categoria:Java EE]]
|