Verso l architettura MVC-2 Java Server Pages (JSP)

Похожие документы
Laboratorio di reti II: Java Server Pages

Java Server Pages. Corso di Applicazioni Telematiche. A.A Lezione n.18 Prof. Roberto Canonico

Laboratorio di Basi di Dati

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_1 V1.7. JSP parte A

JavaServer Pages: Introduzione

Laboratorio di sistemi Prima Web Application JSP [Java]

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet

Svantaggi delle servlet

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

Introduzione al linguaggio Java: Servlet e JSP

Progettazione di siti web centrati sui dati (Data-Intensive Web Applications) Dispensa del corso di Basi di dati e Web

Progettazione di siti web centrati sui dati (Data-Intensive Web Applications) Dispensa del corso di Basi di dati ( )

Linguaggi di Programmazione

D B M G Il linguaggio HTML

Corso di Applicazioni Telematiche

Il Web, HTML e Java Corso di Laurea in Ingegneria Informatica Progetto S.C.E.L.T.E.

Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

Laboratorio di Basi di Dati e Web

Introduzione alla programmazione Http lato server in Java

Architetture Web: un ripasso

Le JavaServer Pages - Lezione 7 I JavaBean

Java J2EE JSP e Servlets

Introduzione a JSP (Java Server Pages) MC 2005

Java Servlet & Java Server Pages (una semplice introduzione) SAPIENZA Università di Roma Corso di Progetto di Applicazioni Software

Tecnologie di Sviluppo per il Web

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Strutture di accesso ai dati

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 8 novembre Corso di laurea in Economia

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

APPENDICE A Servlet e Java Server Page

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di dati

Programmazione server-side: Java Servlet


Laboratorio di programmazione

UNIVERSITÀ DEGLI STUDI DI PARMA REALIZZAZIONE DI UNO STRUMENTO PER LA GESTIONE DI BASI DI DATI IN APPLICAZIONI WEB

Come funziona internet

Laboratorio di sistemi MVC versione 2 Jsp (NetBeans)

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Framework di Middleware. per Architetture Enterprise

Servlet API. Programmazione in Ambienti Distribuiti A.A

Server-side Programming: Java servlets Parte II

SWIM v2 Design Document

Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL)

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Java Native Interface Appunti

Definizione di metodi in Java

Gestione delle eccezioni in Java

Architetture Web I Server Web e gli Standard della Comunicazione

1 Applicazione J2EE sul SAP WAS con SAP NWDS

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Introduzione a JSF: Le basi in un esempio. Giulio Rossetti 20/09/2007

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Web & basi di dati. Basi di dati & Web. Problema. Pregi e difetti di basi di dati e Web. Architettura generale a livelli. Una gerarchia di soluzioni

Introduzione al Linguaggio C ed all IDE DEV-C++

Architettura MVC-2: i JavaBeans

SERVLET & JSP DISPENSE

Comunicazione Digitale

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java]

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Proprietà delle Classi e degli Oggetti in Java

3 ServletContext. Marco Tessarotto Programmazione dei Web Server Anno Accademico

Argomenti della lezione JSP Introduzione Introduzione Architettura Ciclo di vita

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

Laboratorio di Basi di Dati

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Cosa è importante: pom.xml Goal Plug-in Repository

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Siti web centrati sui dati (Data-centric web applications)

Capitolo 7. Sviluppi futuri. 7.1 Generazione automatica di pagine WML

Транскрипт:

Verso l architettura MVC-2 Java Server Pages (JSP) 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3

JSP Una pagina JSP può essere vista come uno schema di pagina Web dove: le parti statiche sono scritte in HTML e le parti dinamiche sono generate attraverso porzioni di codice Java. Le pagine JSP vengono gestite da un componente operante sul web server chiamato JSP container. Questo componente traduce le JSP in servlet Java, che poi esegue. Riferimento: http://www.oracle.com/technetwork/java/javaee/jsp/index.html 2

Funzionamento JSP (1) 3 Codice sorgente JSP: è scritto dal programmatore dell applicazione web, con la collaborazione di altri esperti per la parte di presentazione (grafici, ). Si tratta di un file con estensione.jsp contenente: Codice HTML: parti statiche e grafica Istruzioni Java (scripting JSP): parti dinamiche Marcatori speciali JSP: descrivono il modo in cui generare la servlet associata alla JSP e consentono di gestire oggetti speciali (java data beans, ecc ).

Funzionamento JSP (2) 4 Richiesta HTTP Risposta HTML JSP servlet aggiornata Sì No Attivazione e caricamento JSP servlet JSP servlet attiva Generazione codice HTML Server HTTP JSP Container Page Compiler Servlet Generazione JSP servlet Compilazione JSP servlet

Sintassi JSP Una JSP può essere vista come un documento HTML esteso con alcuni marcatori speciali per immergere codice Java nell HTML. Il linguaggio JSP fornisce 4 gruppi principali di marcatori speciali: Direttive (directives) Scripting: Dichiarazione (declarations) Espressione (expressions) Scriptlet Azioni (Actions) Commenti 5

Direttive (Directives) 6 È l'insieme dei marcatori che consentono di definire come il container deve elaborare la JSP. Le direttive non influenzano la gestione di una singola richiesta HTTP ma influenzano le proprietà generali della JSP e come questa deve essere tradotta in una servlet. Una direttiva è introdotta con il tag <%@ tipo attrib_1= val1 ; attrib_n= valn %> o il suo equivalente XML <jsp:directive.tipo... />. Ad esempio, la seguente direttiva di tipo page stabilisce che il tipo MIME del contenuto della pagina che verrà generata: <%@ page contenttype="text/html; charset=iso-8859-1">

Direttive (Directives) 7 Direttiva PAGE <%@page attributi %> Attributi significativi import: consente di precisare classi o package da importare per la compilazione della jsp sevlet errorpage: consente di precisare l URI di una pagina jsp da invocare in caso di errore iserrorpage: indica se la pagina è una pagina di gestione dell errore o no. Se true consente l accesso all oggetto implicito exception

Direttive (Directives) 8 Direttiva INCLUDE <%@include attributi %> Attributi significativi file: consente di precisare l URL del file da includere. Si noti che l include si suppone eseguito prima della compilazione della jsp servlet (include statico).

Scripting 9 È il gruppo dei marcatori che permettono di inserire delle istruzioni di un linguaggio di programmazione all'interno di codice HTML. Le istruzioni devono essere scritte nel linguaggio di programmazione designato per la pagina (di default Java!) e vengono eseguite ad ogni richiesta della pagina JSP. Un elemento di scripting è introdotto con uno dei seguenti tag: <%!...%> o <%=...%> o <%...%> che individuano rispettivamente i seguenti tipi di scripting: Dichiarazioni Espressioni Scriptlet

Scripting: Dichiarazioni 10 <%! dichiarazione; [ dichiarazione; ]+... %> oppure <jsp:declaration> dichiarazione; [ dichiarazione; ]+ </jsp:declaration> Le dichiarazioni consentono di inserire dichiarazioni di variabili di classe (comuni a più istanze) o metodi statici. Tali metodi possono essere chiamati senza richiedere l'accesso ad una istanza, ad esempio: nomeclasse.nomemetodo() Esempio: <%! static private int x = 4; %>

Scripting: Espressioni 11 <%= espressione %> oppure <jsp:expression> espressione </jsp:expression> Viene valutata l'espressione JAVA e il risultato viene sostituito al tag <%= %> nella pagina HTML generata. Esempio: <%= bean.getmatricola() %> Questo tag viene sostituito nella pagina HTML con il valore della proprietà Matricola contenuta nel bean.

Scripting: Scriptlet 12 <% codice su una o più linee %> oppure <jsp:scriptlet> espressione </jsp:scriptlet> Frammento di codice Java che può modificare anche il flusso del codice HTML generato. Solitamente gli operatori condizionali (if,?,..) ed i cicli (for, while,..) possono essere utilizzati per produrre dinamicamente porzioni diverse di codice HTML in funzione dei parametri della richiesta HTTP o dei dati estratti dalla base di dati. Tale codice diventerà parte dei metodi doget (dopost) della servlet che viene associata la JSP.

Scriptlet 13 Gli scriptlet permettono di modificare il flusso del codice HTML prodotto. Servlet: for (int i=0; i<10; i++) { out.println(i+" è "); if (i%2==0) { out.println("pari"); } else { out.println("dispari"); } out.println("<br>"); } JSP: <% for (int i=0; i<10; i++) { %> <%= i %> è <% if (i%2==0) { %> pari <% } else { %> dispari <% } %> <br> <% } %>

Azioni 14 Questi marcatori permettono di supportare diversi comportamenti della pagina JSP. Vengono processati ad ogni invocazione della pagina JSP. Permettono di trasferire il controllo da una JSP all'altra, di interagire con i Java Data Beans, ecc. Un'azione è introdotta con un tag del tipo: <jsp:tipoazione.../> Ad esempio, se si vuole all'interno di una JSP, includere dinamicamente un'altra JSP, è sufficiente inserire nel punto dove si vuole includere l'altra JSP l'azione: <jsp:include page="localurl" />

Azioni per l uso dei Java Data Bean 15 <jsp:usebean id= nome_bean class= nome_classe scope= context /> dove: id: definisce un nome univoco da assegnare al bean class: specifica la classe del bean scope: indica il periodo di vita del bean, può essere: page (default): il bean viene creato ad ogni richiesta della pagina request: in questo caso il bean viene recuperato dall oggetto request (utile nell approccio MVC).

Azioni per l uso dei Bean 16 <jsp:getproperty name= nome_bean property= nome_prop /> dove: name: è il nome del bean da cui leggere la proprietà (assegnato nell azione usebean attraverso l attributo id) property: è la proprietà da leggere

Azioni per l uso dei Bean 17 <jsp:setproperty name= nome_bean property= nome_prop value= valore /> dove: name: è l id del bean da modificare (assegnato nell azione usebean attraverso l attributo id) property: è la proprietà da modificare value: è il nuovo valore da assegnare alla proprietà

Commenti 18 Questi marcatori permettono di inserire diversi tipi di commenti all'interno delle JSP. Ci sono tre tipi di commenti: <!-- commenti di contenuto -->: sono i tipici commenti di HTML, visibili anche dal browser. <% /* commenti di scripting */ %>: sono i commenti all interno della parte di codice della JSP e sono visibili anche nella servlet equivalente ma non dal browser <%-- commenti JSP --%>: sono i commenti visibili solo nel sorgente della JSP. (La servlet equivalente non conterrà nulla di questi commenti).

Oggetti impliciti 19 Ogni pagina JSP rende disponibile un insieme di oggetti che possono essere utilizzati all'interno della pagina. Questi oggetti impliciti sono accessibili sia attraverso azioni specifiche sia attraverso elementi di scripting.

Oggetti impliciti (2) 20 Oggetto Classe o interfaccia Descrizione page javax.servlet.jsp.httpjsppage Rappresenta l'istanza della servlet generata da questa JSP. Raramente utilizzato. config javax.servlet.servletconfig Rappresenta la configurazione dell'istanza della servlet generata da questa JSP. Raramente utilizzato. request javax.servlet.http.httpservletrequest È l'oggetto request dell'invocazione http. response javax.servlet.http.httpservletresponse È l'oggetto response dell invocazione http. out javax.servlet.jsp.jspwriter È l'output stream per il contenuto della pagina. session javax.servlet.http.httpsession Rappresenta i dati di una sessione specifica. application javax.servlet.servletcontext Rappresenta i dati condivisi fra tutte le pagine JSP. pagecontext javax.servlet.jsp.pagecontext Rappresenta i dati specifici della pagina utilizzati durante l'esecuzione. Permette un accesso programmatico a tutti gli altri oggetti impliciti exception javax.lang.throwable Permette di gestire gli errori all'interno della pagina JSP.

Esempio di JSP: hello.jsp 21 <%-- hello.jsp stampa il classico saluto --%> <%! static private String str = "world!";%> Dichiarazione <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/rec-html40/loose.dtd"> <html> <head> <title>hello!</title> </head> <body> <h1>hello world!</h1> Espressione <b>hello, <%= str.touppercase() %> </b> </body> </html>

L esecuzione della Servlet hello$jsp.java associata alla jsp produce codice HTML 22 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/rec-html40/loose.dtd"> <html> <head> <title>hello!</title> </head> <body> </body> </html> <h1>hello world!</h1> <b>hello, WORLD!</b>

Gestione degli errori 23 Quando si verifica un errore nell'esecuzione di una jsp (ovvero nell'esecuzione della servlet equivalente), il container inoltra il controllo ad una specifica pagina JSP alla quale viene fornito l'accesso all'oggetto implicito exception. Ogni pagina jsp definisce qual è la pagina di errore (la pagina a cui inoltrare il controllo in caso di errore) tramite la direttiva page: <%@page errorpage="/jsp/error.jsp" iserrorpage="false" %> Mentre un file JSP che DEVE gestire errori (error.jsp), conterrà la seguente direttiva: <%@page iserrorpage="true" %>

Vediamo alcuni esempi di JSP 24