JavaServer Pages: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 95:
* session - l'attributo è disponibile per tutta la durata della sessione dell'utente.
* application - l'attributo è disponibile per ogni istanza e non viene mai deferenziato. È lo stesso di definire una variabile statica o globale.
===Librerie di tag JSP===
Oltre alle azioni predefinite, gli sviluppatori possono aggiungere ''action'' sviluppate da loro usando le API per l'estensioni dei tag JSP. Gli sviluppatori scrivo una classe JAva che implementa una delle interfacce Tag e forniscono una descrizione XML della libreria in cui si specificano i tag e le classi java che li implementano.
Consideriamo il seguente codice:
<%@ taglib uri="mytaglib.tld" prefix="myprefix" %>
...
<myprefix:myaction> <%-- il tag di apertura %>
...
</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 prioma volta che iltag 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 esamianto il risultato del tag di apertura e si determina come processare il contenuto del tag. Il contenutp è il testo compreso fra il tag di apertura e quello di chiusura. Il metodo ''doStrtTag()'' può restituire uno dei seguenti valori:
* SKIP_BODY - il contenuto del tag non verrà esaminato.
* EVAL_BODY_INCLUDE - processa il contenuto del tag.
* EVAL_BODY_TAG - processa il contenuto del TAG e invia ilrisultato nello stream di uscita.
'''NOTA''': se il tag estende la classe '''BodyTagSupport''' verrà invocato quando il corpo èstato processato appena prima di invocare il metodo '''doEndTag'''. Questo metodo è implementato per implementatre costrutti di loop.
Quando viene incontrato il tag di chiusura, viene invocato il metodo '''doEndTag'''. Questo metodo può restituire uno dei seguenti valori.
* EVAL_PAGE - indica che il resto della pagina JSP deve essere processato.
* SKIP_PAGE - indica che non ci devono essere ulteriori elaborazioni. Il controllo lascia la pagina JSP. Viene impiegato per le azioni di forward.
Il tag MyAction su descritto potrebbe avere una implementazione simile a questa:
public class MyActionTag extends TagSupport {
//Releases all instance variables.
public void release() {...}
public MyActionTag() { ... }
//called for the start tag
public int doStartTag() { ... }
//called at the end tag
public int doEndTag() throws JspTagException { ... }
}
==Internazionalizzazione==
L'internzionalizzazione delle pagine JSP viene ottenuata nello stesso modo utilizzato nelle normali applicazioni Java, ovvero usanod i [[resource bundles]].
==JSP 2.0==
La nuova versione della specifca JSP include nuove funzionalità tese ad incrementare la produttività dello sviluppatore. In dettaglio
* Un Expression Language (EL) che permette agli sviluppatori di creare templates di stile (come quelli di [[Jakarta Velocity|Velocity]] (tra le altre cose).
* Un metodo più semplice e veloce di creare nuovi tag.
==Paradigma MVC==
[[Sun]] raccomanda di utilizzare il 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 Java beans per ottenre i dati.
==Vedi Anche==
* [[J2EE]]
* [[Java Server Faces]]
* [[Servlet]]
<!--interwiki-->
[[ar:JSP]]
|