Java EE 3. Ingegneria del Software (parte II) Andrea Bei

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

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

Introduzione alle JSP

Siti web centrati sui dati Architettura MVC-2: JSP

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

Introduzione a Java Server Pages (JSP) (estratto) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi

6 JavaServer Pages. Marco Tessarotto Programmazione dei Web Server Anno Accademico

Antonio d Acierno 13/01/2006

Tito Flagella - Introduzione alla programmazione di Servlet

JSP [2] Uso dei Costrutti JSP. Tag di azione. Uso di Bean Interazione fra pagine JSP. Uso di oggetti bean. Tre tag di azione per manipolare bean

Programmazione Java Avanzata. MVC Model, View,, Controller. Ing. Gianluca Caminiti

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

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

Introduzione a Java Servlet Technology

Servlet 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 /

D B M G Il linguaggio HTML

Laboratorio di reti II: Java Server Pages

Programmazione Web D B M G. Il linguaggio HTML

@2011 Politecnico di Torino 1

Introduzione alla programmazione Http lato server in Java

Il Web come Interfaccia Utente di un Sistema Informativo

modulo: siti web centrati sui dati

Programmazione modulare

Tecnologie di Sviluppo per il Web

Architettura MVC-2 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Verso l architettura MVC-2

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript

Java Server Pages A.A

Svantaggi delle servlet

Java Server Side JSP. Ing. Cesare Monti

Programmazione Web D B M G. Il linguaggio HTML

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript

Architettura MVC-2. Alberto Belussi. Anno accademico 2006/2007

Linguaggi di Programmazione

Le JavaServer Pages - Lezione 5 Le Standard Action

Introduzione. Java HTTP. G. Prencipe

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1

Corso di Applicazioni Telematiche

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

Java e i Tipi di dati primitivi. Parte 3

MVC - Principio. MVC Model View Controller. MVC - Terminologia. MVC - Funzionamento. Richiesta. Controller. Model. Risposta. View

Lato client: vuol dire che le operazioni programmate vengono svolte e visualizzate direttamente sul computer dell'utente collegato

Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste. Basi di Dati e Web. Credits to: Prof. M. Di Felice UniBO

Applicazioni web. Sommario. Parte 4 http. http Metodi, intestazioni e codici di stato get post Parametri e cookie. Applicazioni web.

Modulo o Form in Html

JavaScript. Caratteristiche del JavaScript. Javascript consente di rendere dinamiche le pagine HTML

Programmazione modulare

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1

@2011 Politecnico di Torino 1

@2011 Politecnico di Torino 1

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

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati/ Basi di dati per Bioinformatica

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

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

Il linguaggio PHP. Insegnarvi tutto il PHP? Non esattamente Obiettivo: insegnarvi ad interagire via web con una base dati

Prova scritta del 13 luglio 2010

Il World Wide Web. Marco Porta - CIM: Web Design & Technologies

PHP & MySQL. Giselda De Vita

Tito Flagella - Il protocollo HTTP

JavaServer Pages JSP. Java. JSP e Servlet JSP

Capitolo 7. Soluzione: <P align= center > Form di invio nome e cognome </P> <FORM action= nomecognome.exe method= post >

Programmazione server-side: Java Servlet

La connessione ai database MySQL tramite script PHP versione 5.5

Servlet e JDBC. Programmazione in Rete e Laboratorio

Corso di Telematica II

Laboratorio di Basi di Dati e Web

Laboratorio di Programmazione di Rete. Docente: : Novella Bartolini

Tecnologie di Sviluppo per il Web

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

Applicazioni web. Sommario. Parte 7 Java Server Pages. Applicazioni web - JSP. Alberto Ferrari 1 JSP. JavaBeans JSTL. Architettura e sintassi di base

PRIMO MODULO. DURATA: 80 ore CONTENUTI

Basi di Dati-IX. Basi di dati e web. Introduzione. Schema. Basi di dati e web. Corso di Laurea in Informatica Anno Accademico 2013/2014

Introduzione al linguaggio Java: Servlet e JSP

Introduzione. Applicazione web con Java. servlet

Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet:

1. (6 punti) Spiegare il significato, in modo dettagliato, del pezzo di codice seguente di una servlet:

Lezione 5 Namespace e JavaDoc

Il linguaggio PHP. Elementi base

AJAX. Riccardo Rosati

Basi di Dati Architetture Client/Server

scrivere window.alert(). 2 Nell esempio sarebbe scritto solo var hello, senza pertanto attribuire alla variabile hello alcun valore

Prova d Esame Compito A

Laboratorio di sistemi Prima Web Application JSP [Java]

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Anno Accademico Corso di Tecnologie Web Web Application: JSP

STRUTTURA BASE DELLA PAGINA HTML

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

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

Server-side Programming: Java servlets Parte I

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione Riepilogo

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione 09 Riepilogo

Laboratorio di Basi di Dati e Web

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Transcript:

Java EE 3 Ingegneria del Software (parte II) Andrea Bei

Architettura di media complessità: JSP e Servlet In una architettura J2EE di media complessità convivono Servlet e pagine JSP con responsabilità diverse JSP (Java Server Page) è una tecnologia che definisce un linguaggio di "scripting server side". Tale linguaggio permette di inserire, all interno di pagine HTML, sezioni di codice Java che verranno eseguite dal web container. di creare applicazioni web, che accettano richieste dai client e generano dinamicamente le risposte sotto forma di pagine html. Le pagine JSP si presentano come pagine HTML, all interno delle quali sono inserite sezioni di codice Java Le sezioni di codice HTML costituiscono la parte "template" del documento, ovvero ciò che è inviato "tale e quale" ai browser ed è invariante Le sezioni di codice Java costituiscono la "parte dinamica" e può generare dinamicamente parti del documento HTML (es: tabelle HTML riempite con dati di un database) che sarà inviato ai client Eseguire qualsiasi metodo scritto in Java (es: un componente DAO per l inserimento dei dati in un DB)

JSP: Esempio <html> <head> <title> Somma di due numeri - JSP Example </title> </head> <body> <h1> Somma di due numeri - JSP Example 2 </h1> <p> <form method="post" action="jspexample.jsp"> <p> <table> <tr><td>inserisci il primo numero<td> <input type=text name="n1"> <tr><td>inserisci il secondo numero<td> <input type=text name="n2"> <tr><td> <td><input type=submit value="somma"> </table> </form> </body> </html>

JSP: Esempio jspexample.jsp <html> <head> <title> JSP Example </title> </head> <body> <h1>jsp Example </h1> <% String sn1; String sn2; int n1,n2; sn1 = request.getparameter("n1"); sn2 = request.getparameter("n2"); n1 = Integer.parseInt(sn1); n2 = Integer.parseInt(sn2); %> <p>i numeri sono </p> <%=sn1%> e <%=sn2%> <br>la somma è <%=(n1+n2)%> </body> </html> Codice HTML Codice Java

JSP: Vantaggi Rispetto alle Servlet le JSP consentono una più chiara separazione delle parti statiche di una pagina web (codice HTML) da quelle dinamiche (codice Java). Lo sviluppo delle pagine JSP può essere organizzato in due fasi distinte con responsabilità diverse: I Web Designer producono i template (parte statica del documento); Gli sviluppatori Java ricevono i template dai Web Designer e vi aggiungono le parti dinamiche.

JSP: Ciclo di vita Il web container ospita le pagine JSP all interno di una particolare directory. Quando la pagina JSP è richiesta per la prima volta da un client, il container (il componente JSP Engine) la traduce in una servlet HTTP, la compila e la invia al Servlet Engine che la esegue. La traduzione e la compilazione sono effettuate solo la prima volta che la pagina è richiesta da un client. (infatti la prima richiesta della pagina comporta un tempo di risposta superiore alle successive) Una volta generata la HttpServlet, questa seguirà il ciclo di vita delle normali servlet.

JSP: Elementi Fondamentali Template text Commenti e sequenze di escape Costrutti Scripting elements Direttive Azioni Oggetti impliciti

JSP: Template Text HTML statico Editabile con qualsiasi tool di sviluppo HTML (es: DreamWeaver) Non è processato dal parser Java È inserito automaticamente all'interno della servlet come argomento della funzione out.print()

JSP: Commenti e sequenze di escape Commenti: JSP: <%-- commento --%>. Non riportato nella servlet. HTML: <!-- commento -->. Riportato nella servlet, ignorato dal browser Sequenze di escape Il backslash è usato come simbolo di non intepretazione <\% : usato per rappresentare <%. %\>: usato per rappresentare %>. \' : usato per rappresentare ' \" : usato per rappresentare "

JSP: Costrutti Scripting elements: codice Java eseguito a run-time incluse tra "<%" e "%>". Es: <% n2 = Integer.parseInt(sn2); %> Direttive: direttive considerate nella traduzione JSP- >Servlet. incluse tra "<%@" e "%>". Es: <%@ page import="java.util.math"%> permette l uso della classe Math nella pagina Nella Servlet viene inserita import java.util.math Azioni: azioni eseguite a runtime. Sono tag XML associati al namespace "jsp". Es: <jsp:include page="listapergenere.jsp" /> Permette di includere a run-time, nella pagina JSP in cui è invocata, la pagina JSP ListaPerGenere

JSP: Scripting elements Espressioni: <%= espressione %>. L espressione è valutata ed il risultato è inserito nell'output HTML della servlet. Es: <%= new java.util.date() %>. Mostra la data corrente Scriptlet: <% codice java %>. Il codice java è inserito nel metodo service() della servlet. Es: <% if (Math.random() < 0.5) {%> <font face="verdana">hai vinto!</font> <%} else {%> <font face="verdana">hai perso!</font> <% } %> Dichiarazioni: <%! codice java %>. Il codice java è inserito al di fuori del metodo service() ma nel corpo della servlet. Es: <%! private int accessi=0; %> Accessi alla pagina dall avvio del server: <%= ++accessi %>

JSP: Direttive - Page Direttiva Page Permette di configurare proprietà della servlet quali: classi e package importati; pagina di errore verso la quale il client è ridiretto nel caso in cui la servlet sollevi un eccezione; MIME type del contenuto della pagina (es.: text/html). Esempio: <%@ page import="java.util.*" %> importa il package java.util.*

JSP: Direttive Page Attributi principali import="[classi e package separati da virgole]" permette di importare classi e/o package. Esempio: <%@ page import="java.util.*" %> contenttype="[mime-type]; charset=[set di caratteri]" Permette di impostare il MIME type ed il set di caratteri dell output della servlet. Il MIME-Type di default è "text/html" Es: <%@ page contenttype="text/plain" %> indica chel output della servlet è costituito da semplice testo. errorpage="url" permette di specificare la pagina verso la quale sarà rediretto il browser nel caso in cui la servlet sollevi un eccezione senza gestirla. iserrorpage="true false" Indica se la pagina può agire da pagina di errore per un'altra pagina, ovvero se gestisce oggetti Throwable per conto di un altre pagine. MIME (Multipurpose Internet Mail Extension) stabilisce una codifica per i tipi di file (testo="text/plain", html="text/html", etc.). Nato per gli attachment nelle e- mail, ma ormai usato diffusamente anche in altri contesti.

JSP: Direttive - Include Direttiva Include Permette di includere il contenuto di un file, al momento della traduzione JSP -> Servlet Il file può contenere semplice testo, codice HTML, codice JSP o Java. Sintassi: <%@ include file="[url relativo]" %> Se l URL comincia con il carattere "/", il percorso da esso specificato è relativo al contesto applicativo della servlet (application context), altrimenti è relativo alla directory che contiene la pagina JSP. Application Context L URL di una pagina JSP ha la seguente forma: http://[indirizzo server]/[application context]/[percorso pagina] L application context è la directory radice dell applicazione web

JSP: Azioni Sono specificate tramite tag XML. Permettono di specificare azioni eseguite a "runtime" Es.: inclusione del contenuto di altri file, inoltro della request ad altre pagine JSP, utilizzo di java beans etc..

JSP: Azioni - include <jsp:include/> Permette di includere il contenuto di un altro file al momento della richiesta da parte del client Sintassi: <jsp:include page="[url_relativo]" flush="[true false]"/> Rispetto alla direttiva "include" Comporta un tempo di risposta maggiore e non consente di includere codice java. Non comporta la rigenerazione della servlet ad ogni modifica del file incluso. Risulta conveniente quando si deve includere codice html statico che può essere modificato molto frequentemente.

JSP: Azioni usebean 1/2 <jsp:usebean/>: Localizza o istanzia un JavaBean. Sintassi semplificata: (unico tag) <jsp:usebean id="[nome istanza]" class="[nome completo della classe] scope="[page request session application]" /> Sintassi completa: (tag di apertura e chiusura) <jsp:usebean id="[nome istanza]" class="[nome completo della classe]" scope=[page request session application]"> [codice JSP] </jsp:usebean> Scope: visibilità del JavaBean Page:visibile all interno della pagina JSP che contiene l azione <jsp:usebean> o in file inclusi con la direttiva <%@ include %>, Request:visibile in ogni pagina JSP che processa la stessa request Session: visibile da ogni pagina JSP richiamata nella stessa sessione della pagina contenente l azione <jsp:usebean>. Il bean esiste per tutta la sessione ed è visibile da ogni pagina che vi partecipi. La pagina in cui è creato deve contenere una direttiva <%@ page %> con l attributo session="true". Application: visibile in qualunque pagina appartenente alla stessa applicazione della pagina che lo ha istanziato. Il bean esiste finchè l applicazione è attiva e ogni pagina dell applicazione può usarlo.

JSP: Azioni usebean 2/2 L azione <jsp:usebean/> opera nel seguente modo: 1. Definisce una variabile con il nome specificato tramite l attributo "id". 2. Cerca di "localizzare" un bean con il nome e lo scope specificati. 1. Se trova il bean, assegna il riferimento alla variabile. 2. Se non trova il bean, lo istanzia a partire dalla classe specificata e ne assegna un riferimento alla variabile 3. Se l azione "jsp:usebean" è nella forma completa <jsp:usebean> [elementi JSP] </jsp:usebean> gli elementi JSP inclusi tra i due tag sono processati solo se il bean è istanziato (e non semplicemente localizzato).

JSP: Azioni setproperty e getproperty <jsp:setproperty/>: Permette di impostare il valore degli attributi dei Java Bean istanziati Sintassi: <jsp:setproperty name="nome_del_bean" property="attributo" value="valore"/> <jsp:getproperty/>: Permette di leggere il valore di un attributo di un bean, convertirlo in una stringa e stamparlo sull'output Sintassi: <jsp:getproperty name="nome_del_bean" property="nome_attributo"/>

JSP: Azioni forward e plugin <jsp:forward/> Permette di inoltrare la richiesta ad un'altra pagina Sintassi: <jsp:forward page="url"/> url può essere un valore statico o un'espressione java racchiusa tra "<%=" e"%>", calcolata a tempo di esecuzione <jsp:plugin/> Permette di inserire nell output html un elemento <OBJECT> o <EMBED>, che istruisce il browser affinché scarichi ed esegua un determinato plugin. Sintassi: <jsp:plugin type= "applet" code= "class" codebase= "url" width="numero_pixel_larghezza" height="numero_pixel_altezza"> <params> <param name="nome" value="valore">... </params> <fallback> codice html visualizzato se il browser ha i plugin disabilitati </fallback> </jsp:plugin>

JSP: Oggetti impliciti Oggetti disponibili all'interno delle pagine jsp senza bisogno di dichiarazione né istanziazione: request session page response out application config pagecontext

JSP: Oggetti impliciti - request request Oggetto che implementa l interfaccia HttpServletRequest (è istanziato con i dati della richiesta del client) Permette di accedere a : Informazioni relative all URL della pagina e ad eventuali query string; Informazioni relative all host locale (il server) ed all host remoto (il client) ; Dati inviati tramite un form.

JSP: Oggetti impliciti - request Informazioni relative all URL della pagina e alla query string getcontextpath(): restituisce la parte di URL che rappresenta la ContextRoot della pagina JSP. getquerystring(): restituisce la query string es: http://server/application/pagina.jsp?var1=val1&var2=val2 getrequesturi(): restituisce la parte di URL che va dalla Context Root al nome della pagina. getservletpath(): restituisce il percorso della pagina (ContextRoot esclusa). Informazioni relative al server a al client getremoteaddr(): restituisce l indirizzo IP della macchina client getremotehost(): restituisce il nome della macchina client getservername(): restituisce il nome del server getserverport(): restituisce il numero della porta in ascolto sul server. getscheme(): restituisce lo schema usato per la richiesta (http, https, ftp). getprotocol(): restituisce nome e versione del protocollo (es: HTTP/1.1) getmethod(): restituisce il metodo usato per la request (GET o POST). getcontenttype(): restituisce il MIME type del contenuto. Dati inviati via Form getparameter(string nomeparametro): restituisce il parametro nomeparametro presente nella request (vedi es. successivo)

JSP: Oggetti impliciti - session Oggetto di tipo HttpSession Usato per conservare lo stato attraverso una serie di richieste consecutive, provenienti da un medesimo client. (es. il carrello di un sito di e-commerce che viene via via riempito durante la navigazione tra diverse pagine di un listino) I principali metodi sono: void setattribute(string nome, Object oggetto): aggiunge un oggetto alla session associandolo ad un nome. Object getattribute(string nomeattributo): permette di recuperare un oggetto dalla session, specificandone il nome. Normalmente è necessario farne il casting. void removeattribute(string nomeattributo): rimuove dalla sessione l oggetto associato al nome passato come parametro. Enumeration getattributenames(): restituisce la lista dei nomi degli oggetti associati alla session, sotto forma di Enumeration.

JSP: Oggetti impliciti - page Sinonimo di this all interno della servlet. Esempio: <%! int attr = 0 %>... <%= page.attr %>

JSP: Oggetti impliciti response e out response Oggetto di tipo HttpServletResponse associato alla servlet. HttpServletResponse è un interfaccia che estende l interfaccia ServletResponse. Permette di impostare le proprietà della risposta da inviare al client (Es.: campi dello header http). Out Oggetto di tipo JspWriter (una versione bufferizzata di PrintWriter) Eso: out.println("hello world!");