JavaServer Pages: Introduzione



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

19. LA PROGRAMMAZIONE LATO SERVER

Application Server per sviluppare applicazioni Java Enterprise

Panoramica: che cosa è necessario

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Protocolli applicativi: FTP

Capitolo 4 Pianificazione e Sviluppo di Web Part

Corso basi di dati Introduzione alle ASP

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Il Protocollo HTTP e la programmazione di estensioni Web

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Svantaggi delle servlet

Corso basi di dati Installazione e gestione di PWS

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Indice. Introduzione. Capitolo 1

MANUALE D USO DELLA PIATTAFORMA ITCMS

Sistema Informativo di Teleraccolta EMITTENTI

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

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

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

Presidenza del Consiglio dei Ministri

Funzioni in C. Violetta Lonati

Progetto di Basi di Dati e Multimidia Laboratorio Struttura dell applicazione web

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Laboratorio di Basi di Dati

Il web server Apache Lezione n. 3. Introduzione

Corso di PHP. Prerequisiti. 1 - Introduzione

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

Siti interattivi e dinamici. in poche pagine

Con.Te Gestione Console Telematici

Studio Legale. Guida operativa

BDCC : Guida rapida all utilizzo

Il Web Server e il protocollo HTTP

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

Access. P a r t e p r i m a

EXPLOit Content Management Data Base per documenti SGML/XML

SCOoffice Address Book. Guida all installazione

Al giorno d oggi, i sistemi per la gestione di database

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

SPSS Statistics per Windows - Istruzioni di installazione per (Licenza per utenti singoli)

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

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

MANUALE UTENTE Fiscali Free

Corso di Informatica Modulo T3 B1 Programmazione web

ESERCITAZIONE Semplice creazione di un sito Internet

Esercitazione n. 10: HTML e primo sito web

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Client - Server. Client Web: il BROWSER

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

Lezione II: Web server e ambiente di lavoro

Aggiornamento programma da INTERNET

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 /

Componenti Web: client-side e server-side

Il seguente Syllabus è relativo al Modulo 7, Reti informatiche, e fornisce i fondamenti per il test di tipo pratico relativo a questo modulo

Programmare in Java. Olga Scotti

Appunti di Informatica 1

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Struttura di un programma Java

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

Guida alla registrazione on-line di un DataLogger

Laboratorio di reti II: Java Server Pages

Guida Compilazione Piani di Studio on-line

Mon Ami 3000 MACommerce La soluzione per il commercio elettronico totalmente integrata con Mon Ami 3000

Javascript: il browser

Dexma Newsletter System

SendMedMalattia v Manuale d uso

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

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

Integrazione InfiniteCRM - MailUp

Reti di Calcolatori. Il Livello delle Applicazioni

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

GERARCHIE RICORSIVE - SQL SERVER 2008

Software Servizi Web UOGA

Q U E S T U R A di V A R E S E Ufficio di Gabinetto

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito)

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

Estensione di un sistema per la gestione semi-automatica di siti didattici con XML

ARCHIVIA PLUS - ARCHIFILE

GESTIONE INFORMATICA DEI DATI AZIENDALI

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Installazione, configurazione e utilizzo di IIS

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

Introduzione al Linguaggio C

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Guida utente alla compilazione delle richieste di contributo on-line per le Associazioni dei Consumatori

Database e reti. Piero Gallo Pasquale Sirsi

Manuale Utente Albo Pretorio GA

Introduzione al linguaggio Java: Servlet e JSP

PORTALE CLIENTI Manuale utente

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Registratori di Cassa

Portale Sintesi Procedure Base e di Registrazione

Transcript:

JavaServer Pages: Introduzione Gianluca Moro gianluca.moro@unibo.it Dipartimento di Elettronica, Informatica e Sistemistica Università di Bologna Sistemi reali in JSP!! ofoto.com: stampa e gestisce foto digitali e convenzionali JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 2

Sistemi reali in JSP!! Una delle più grandi banche nel mondo per l emissione di carte di credito e servizi on-line JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 3 Sistemi reali in JSP!! Delta Airlines: intero sito incluse informazioni real-time sugli orari JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 4

Sistemi reali in JSP!! wine.com: leader nella vendita del vino al dettaglio sulla rete internet JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 5 Sistemi reali in JSP!! American Century Investments: più di 70 fondi comuni, 90USD miliardi in gestione, 2 milioni di investitori JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 6

Concetti di base!! Una pagina JSP è un unità di elaborazione serverside ed è strutturata in TAG!! portabile su piattaforme eterogenee senza nemmeno la ricompilazione!! L esecuzione del codice nella pagina è a carico del Web server o di suoi componenti!! Tomcat: web server freeware (componente di Apache)!! Il risultato dell elaborazione può essere:!! una pagina HTML, XML, WML etc (restituita al browser) e/o operazioni compiute su componenti server-side: oggetti, database... JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 8 Tipi di TAG JSP!! Dichiarazioni;!! Espressioni;!! Scriptlet;!! Direttive; JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 9

Esempio di pagina JSP <%-- questo è un commento: segue una direttiva di pagina --%> <%@ page import= java.util.* info= Login errorpage= error.jsp %> <%-- questa è una direttiva di inclusione di file --%> <%@ include file= banner.html %> <%-- dichiarazione che può contenere variabili e metodi --%> <%! int i = 0; String s= hello world ;%> <%-- segue un espressione java di cui viene visualizzato il risultato --%> <%= 2002+i+ +s %> <%-- questo è uno Scriptlet con codice Java e HTML --%> <% for (i=1; i<3; i++) { %> <H<%=i%>><%=s%></H<%=i%>> <% } %> JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 10 Ciclo di vita di una pagina JSP (i)!! La pagina viene salvata in una cartella pubblica del server web!! alla prima richiesta ricevuta dal Web server la pagina JSP è automaticamente:!! tradotta in un sorgente Java chiamato Servlet!! compilata come programma Java!! caricata in memoria ed eseguita!! nelle chiamate successive la pagina JSP (i.e. la servlet corrispondente) viene solo eseguita JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 11

Ciclo di vita di una pagina JSP (ii)!! ad ogni invocazione Il server web verifica se la pagina JSP è più recente della corrispondente Servlet!! se lo è, perché ad esempio la pagina JSP è stata modificata, allora la pagina viene di nuovo tradotta, compilata, caricata e eseguita!! feature molto comoda in fase di sviluppo ma da disattivare al rilascio dell applicazione perché è costosa JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 12 Servlet!! sviluppare Servlet richiede maggiore conoscenza di Java rispetto a quanto ne richiede JSP!! con JSP è possibile ottenere risultati analoghi!! JSP facilita la separazione tra codice Java e di presentazione (es: HTML)!! questa unità didattica introduttiva non tratta le Servlet JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 13

Configurazione per lavorare con JSP!! Necessario un web server JSP compliant:!! es: Tomcat 3.2 http://jakarta.apache.org/!! scaricare il file compresso con i file compilati!! l installazione consiste nel decomprimere il file compresso in una directory (es: c:\tomcat)!! necessario installare il Java Development Kit!! definire in Tomcat la propria HOME e quella del JDK!! variabile JAVA_HOME nel file...\bin\tomcat.bat!! variabile TOMCAT_HOME nel file...\bin\startup.bat!! pagine HTML e JSP inserite in directory contenute in \webapps JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 14 Avvio e test dell ambiente Tomcat!! Avviare Tomcat eseguendo \bin\startup.bat!! accedendo a http://localhost:8080/ deve comparire questa finestra!! Per verificare l installazione JDK eseguire uno degli esempi disponibili!! link JSP Examples JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 15

Contesto dell applicazione JSP (i)!! Ogni applicazione JSP può avere il proprio contesto cosi strutturato:!! una propria directory contenente i file JSP e HTML!! esempio: \webapps\myapp!! una directory WEB-INF con tutte le risorse della applicazione!! \webapps\myapp\web-inf\classes classi Java che costituiscono l applicazione!! \webapps\myapp\web-inf\lib classi Java di terze parti usate dall applicazione, esempio driver JDBC, framework (EJB ) JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 16 Contesto dell applicazione JSP (ii)!! Il contesto si definisce nel file \conf\server.xml aggiungendo quanto segue: JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 17

Schema di funzionamento JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 19 Java come linguaggio per JSP!! In linea di principio la tecnologia JSP è pensata per permettere lo sviluppo con qualsiasi linguaggio:!! <%@page language=... >!! Il linguaggio attualmente supportato è Java:!! in Java è necessario dichiarare ogni variabile utilizzata!! A differenza di altri linguaggi di scripting lato server, quali VBScript, le variabili devono essere tipizzate!! La sintassi, le regole di visibilità ed i tempi di vita delle variabili sono conformi a Java JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 20

Dichiarazioni di variabili condivise!! <%! %>!! TAG per dichiarare variabili condivise; posto (di norma) all inizio della pagina!! esempio: dichiarazione di una variabile intera i e una stringa s!! <%! int j=0; String s = fattoriale di ; %>!! le variabili così dichiarate sono visibili all interno della pagina e sono condivise tra tutti gli utilizzatori della pagina JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 21 Variabili condivise:precisazione!! una pagina JSP è una Servlet ossia una classe Java con metodi e attributi!! le variabili dichiarate con <%! %> diventano usuali variabili istanza della classe!! per eseguire una Servlet il web server istanzia un oggetto dalla classe!! ogni richiesta (browser request) viene soddisfatta avviando un thread sull oggetto istanziato!! i thread di un oggetto condividono le variabili istanza (ma non quelle locali all interno dei metodi)!! variabili istanza = variabili condivise JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 22

Dichiarazioni di funzioni!! Con gli stessi TAG <%! %> si possono dichiarare delle funzioni (i.e. metodi) utilizzabili nella pagina!! Esempio: <%! %> int fatt(int n) { } if (n == 0) return 1; else return n*fatt(n-1);!! Il metodo così dichiarato diventa un metodo della Servlet JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 23 Espressioni <%= %>!! questo TAG ospita un espressione Java!! esempio: <%=s+j+ = +fatt(j++)%> notare la terminazione senza punto e virgola!! valutazione:!! l espressione viene valutata e il risultato viene convertito in stringa!! la stringa risultante viene posta nella pagina di output inviata all utente!! l esempio calcola alla n-esima richiesta il fattoriale di n-1 JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 24

Scriptlet!! Il TAG <% %> permette di ospitare codice con sintassi e semantica Java!! esempio:!! alla richiesta j-esima calcola tutti i fattoriali da 0 a j-1 <% j++; for (int i=0; i<j; i++) { %> <% } %> <H<%=i+1%>> <%=s+i+ = +fatt(i)%> </H<%=i+1%>>!! espressioni e scriptlet vengono inseriti in un metodo della Servlet chiamato _jspservice(...) JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 25 Risultato!! j aumenta di 1 ad ogni richiesta poiché è una variabile istanza (condivisa)!! dopo 6 richieste si ottiene questo risultato JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 26

Attenzione alla concorrenza <HTML><HEAD><TITLE>Dichiarazioni</TITLE> </HEAD> <BODY> <H1>Dichiarazioni JSP</H1> <%! int identificatore = 1; %> <H2>il tuo identificatore è <%= identificatore %> <% ++identificatore; %> </H2> </BODY> </HTML> JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 27 Sincronizzazione!! La modifica di una risorsa condivisa in situazioni di concorrenza può originare anomalie!! Una soluzione è sequenzializzare le sezioni critiche: <% synchronized(this) { %> } %> <H2>il tuo identificatore è <%= identificatore %> <% ++identificatore;!! questo caso (banale) si risolve anche senza: <H2>il tuo identificatore è <%= ++identificatore %> JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 28

Tipi di direttive 1.! Le direttive forniscono indicazioni per l ambiente di esecuzione e riguardano: 1.! Commenti 2.! Inclusione di file 3.! Reindirizzamento delle richieste 4.! Pagina!! Altre direttive, quelle deputate all utilizzo dei bean, verranno introdotte in seguito JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 30 Commenti!! E possibile inserire commenti in una pagina JSP utilizzando la seguente direttiva: <%-- commento --%>!! Si noti che questo commento non viene inviato al browser!! Per inserire commenti visibili a livello di codice HTML inviato al cliente, utilizzare i commenti HTML: <!-- commento --> JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 31

Inclusione a compile-time!! E possibile includere a compile-time un file JSP o qualsiasi altro file ad una pagina JSP: <%@ include file= URL del file %>!! corrisponde a quanto ottenibile con un qualsiasi editor facendo il paste di un file in un altro!! permette di includere porzioni di pagine comuni a più pagine localizzando così le modifiche ad un solo file JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 32 Inclusione a request-time!! E possibile includere un file esterno ogni volta che la pagina JSP viene richiesta:!! <jsp:include page= URL della pagina flush= true />!! diversamente dalla precedente inclusione, questa permette di includere sempre l ultima versione del file!! si possono passare parametri alla pagina inclusa aggiungendo righe del tipo:!! <jsp:param name= name value= value />!!!! </jsp:include> JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 33

Pagine Template attraverso semplici Include parametrici!! ad esempio con un solo file jsp si può realizzare uno schema di pagina HTML!! le sezioni dello schema possono cambiare in base ai param. di inclusione:!! i contenuti delle pagine di un qualsiasi sito di e-commerce cambiano forse ogni giorno ma lo schema è quasi sempre il medesimo!! idem per siti di giornali web, siti informativi!! la pag. template (schema) viene istanziata attraverso la sua inclusione in un altra pagina jsp che stabilisce i contenuti del template JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 34 Recupero dei parametri nel template!! ad es. in una sezione del template ci può essere un immagine passata come parametro e recuperata cosi :!! <img src="<%=request.getparameter("photo.gif")%>">!! si possono anche includere files il cui nome non è noto a design time!! <% String s = request.getparameter("file");%>!! <jsp:include page="<%=s%>" flush="true"> </jsp:include> JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 35

Reindirizzamento del client!! E possibile indicare al browser di richiedere/ richiamare un altra pagina:!! <jsp:forward page= pagina destinazione />!! La pagina contenente la direttiva non può spedire nulla al browser chiamante prima della direttiva stessa!! è possibile passare parametri alla pagina richiamata:!! <jsp:forward page= pagina destinazione />!! <jsp:param name= name value= value />!! </jsp:forward>!! la pagina richiamata riceve i parametri tramite l oggetto request.getparameter( name ) JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 36 Attributi di pagina!! Tramite questa direttiva, è possibile definire una serie di attributi relativi all intera pagina (di supporto all interprete della pagina): <%@ page language = linguaggio di scripting buffer= dimensione buffer da usare prima di spedire l output autoflush= se buffer è attivo allora questo vale true info= informazioni descrittive sulla pagina errorpage= URL pagina di gestione degli errori di questa pagina contenttype= tipo MIME del contenuto iserrorpage= se vale true allora la pagina gestisce errori %>!! MIME: Multipurpose Internet Mail Extensions - standard internet che specifica come i messaggi devono essere formattati per essere spediti JavaServer Pages: Introduzione G. Moro - DEIS Università di Bologna 37