S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di...

56
INGEGNERIA DEL SOFTWARE Paolo Salvaneschi Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione S1TecnSoft Internet Paolo Salvaneschi 1 S1_1 V1.2 Architetture e tecnologie Web Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e per supporto a lezioni universitarie. Ogni altro uso è riservato, e deve essere preventivamente autorizzato dall’ autore. Sono graditi commenti o suggerimenti per il miglioramento del materiale

Transcript of S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di...

Page 1: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

INGEGNERIA DEL SOFTWARE

Paolo Salvaneschi

Università di BergamoDip. di Ingegneria gestionale, dell'informazione e della produzione

S1TecnSoft Internet Paolo Salvaneschi 1

S1_1 V1.2

Architetture e tecnologie Web

Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e per supporto a lezioni universitarie.Ogni altro uso è riservato, e deve essere preventivamente autorizzato dall’ autore.

Sono graditi commenti o suggerimenti per il miglioramento del materiale

Page 2: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

• Tecnologie

– Pagine Web statiche (HTML,CSS)

– Scripting lato client, JavaScript (DHTML)

– Java Applet

INDICE

S1TecnSoft Internet Paolo Salvaneschi 2

– CGI

– Java Servlet

– Java Server Pages

– Connessione con i Data Base

– Ajax

Page 3: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

• Tecnologie

• Nomenclatura:

Tecnologie

Linguaggio es. Java

S1TecnSoft Internet Paolo Salvaneschi 3

Tecnologia es. JSP

Esempio di Strumento es. Tomcat

Page 4: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

• Pagine Web statiche (HTML,CSS)

• Pagine Web dinamiche lato Client

– Scripting lato client, JavaScript (DHTML)

– Java Applet

Tecnologie

S1TecnSoft Internet Paolo Salvaneschi 4

– Java Applet

• Pagine Web dinamiche lato Server

– CGI

– Servlet, JSP

– Connessione con i Data Base

Page 5: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Pagine Web statiche (HTML,CSS)

BrowserHTML

ClientServer

HT

Server

Data baseHTTP

S1TecnSoft Internet Paolo Salvaneschi 5

HTMLCSS

TTPD

Sistema Informativo

HTTP

Apache Microsoft Internet ExplorerMozilla Firefox

Page 6: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Pagine Web statiche (HTML,CSS)

BrowserHTML

HT

Richiesta HTTP

GET /paginaxx.htm HTTP/1.1…

<html> <body><a href=“http://www.pippo.it/paginaxx.htm”>chiedi pagina xx</a></body></html>

File Paginaxx.htm

http://www.pippo.it:80/….

S1TecnSoft Internet Paolo Salvaneschi 6

HTMLCSS

ClientServer

TTPD

HTTP/1.1 200…<html><head><title>Paginaxx</title>...</body></html>

Risposta HTTP

Page 7: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Pagine Web statiche (HTML,CSS)

S1TecnSoft Internet Paolo Salvaneschi 7

http://httpd.apache.org

Page 8: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

• Pagine Web statiche

– Server di documenti ipermediali

– Distribuzione di documenti codificati in HTML

– Separazione della struttura dalla

Pagine Web statiche (HTML,CSS)

S1TecnSoft Internet Paolo Salvaneschi 8

– Separazione della struttura dalla presentazione (CSS)

Page 9: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Pagine Web statiche (HTML,CSS)

<html>

<head><title>La prima pagina Web di Mario Rossi</title><link type="text/css"

rel="Stylesheet" href="Es2_css_esterno.css"></head>

h1{font-family: Arial;font-size: 20pt;color: blue;font-weight: bold;}

CSS

S1TecnSoft Internet Paolo Salvaneschi 9

<body><h1>Home page di Mario Rossi</h1><p>Questa &egrave; la mia prima pagina in HTML.</p><h1>Intestazione di primo livello</h1><h2>Intestazione di secondo livello</h2><h3>Intestazione di terzo livello</h3>…

Page 10: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Scripting lato client, JavaScript (DHTML)

BrowserHTML

ClientServer

HT

Server

Data baseHTTP

S1TecnSoft Internet Paolo Salvaneschi 10

HTMLCSS

JavaScript

TTPD

Sistema Informativo

HTTP

Apache Microsoft Internet ExplorerMozilla Firefox

Page 11: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

• Pagine Web dinamiche (DHTML)

• Insieme di tecnologie che permettono di modificare le pagine HTML caricate nel browser senza interagire con il server

Scripting lato client, JavaScript (DHTML)

S1TecnSoft Internet Paolo Salvaneschi 11

– Es. modifica della formattazione a seguito di interazione con l’utente

– Es. controllo dell’input

Page 12: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

• HTML+CSS+Java Script

– Integrazione di procedure interpretate nella pagina HTML ; Esecuzione lato client

– Gestione eventi ed interazione locale con l’utente

Scripting lato client, JavaScript (DHTML)

S1TecnSoft Internet Paolo Salvaneschi 12

l’utente

– Definizione oggetti e attributi (DOM Document Object Model) componenti la pagina e modificabilità da programma

Page 13: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

<HTML><HEAD><TITLE>javascript</TITLE>

<SCRIPT language="JavaScript">function presenta(){alert("Sei mai stato in cima all'Adamello?")}

Scripting lato client, JavaScript (DHTML)

Scripting

S1TecnSoft Internet Paolo Salvaneschi 13

{alert("Sei mai stato in cima all'Adamello?")}</SCRIPT>

</HEAD>

<BODY bgcolor="#FFFF00"><BR><BR><BR><BR><IMG src="..\immagini\ada_sal.jpeg" onmouseover="presenta()">

</BODY></HTML>

Gestore degli eventi

Page 14: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

<HEAD><SCRIPT language="JavaScript">function uno(){document.all.container1.style.visibility="visible";document.all.container2.style.visibility="hidden";}function due(){document.all.container1.style.visibility="hidden";document.all.container2.style.visibility="visible";}

Scripting lato client, JavaScript (DHTML)

DOM

Scripting

S1TecnSoft Internet Paolo Salvaneschi 14

document.all.container2.style.visibility="visible";}</SCRIPT>

Page 15: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Scripting lato client, JavaScript (DHTML)

…<STYLE type="text/css">#container1 {

position:absolute;top: 2in;left: 2in;width: 2in;visibility: visible;}

<BODY><DIV id="container1">

<IMG src="..\immagini\ada_sal.jpeg"width="300" height="300" onmouseover="due()">

<P><b>l'Adamello da sud</b></P></DIV><DIV id="container2">

Eventi

S1TecnSoft Internet Paolo Salvaneschi 15

}#container2 {

position:absolute;top: 2in;left: 2in;width: 2in;visibility: hidden;}

</STYLE></HEAD>

<DIV id="container2"><IMG src="..\immagini\ada_lobbie.jpeg"

width="300" height="300" onmouseout="uno()"><P><b>Le Lobbie da Nord</b></P>

</DIV>

</BODY></HTML>

CSS

Page 16: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Applet

BrowserHTML

ClientServer

HT

Server

Data baseHTTP

S1TecnSoft Internet Paolo Salvaneschi 16

HTMLCSS

Applet Java

TTPD

Sistema Informativo

HTTP

Apache Microsoft Internet ExplorerMozilla Firefox(Java Virtual Machine)

Page 17: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

<HTML><HEAD><TITLE>A Clock (1.6)</TITLE></HEAD><BODY> <h1>A Clock (1.6)</h1><applet code="Clock.class"width="170" height="150"><param name="bgcolor" value="000000">

Inserimento oggetto

S1TecnSoft Internet Paolo Salvaneschi 17

<param name="bgcolor" value="000000"><param name="fgcolor1" value="ff0000"><param name="fgcolor2" value="ff00ff"></applet></BODY></HTML>

Page 18: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

CGI

Browser

ClientServer

HT

Server

Data baseHTTP

Linguaggio di CGI

S1TecnSoft Internet Paolo Salvaneschi 18

TTPD

Sistema Informativo

HTTP

Apache Microsoft Internet ExplorerMozilla Firefox

di Programmaz.C, Java, Perl

CGI

Page 19: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

CGI

http://www.pippo.it

Setup del Web server:c:\ilmioserver è la directory radice

Quando il server riceve unarichiesta corrispondente all’URL

S1TecnSoft Internet Paolo Salvaneschi 19

richiesta corrispondente all’URL http://www.pippo.itcerca un file di default nella directory radice(index.html, index.htm, default.html, default.htm).

Ad ogni richiesta di pagina (http://www.pippo.it/paginax.htm)Il server trasmette la pagina.

Page 20: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

CGI

Nella directory radice è creata una directory cgi-bin.

Quando il server riceve una richiesta di un file in cgi-bin

S1TecnSoft Internet Paolo Salvaneschi 20

non serve il filema lo manda in esecuzione eserve l’output dell’esecuzione.

Page 21: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

CGI

#include <stdio.h>int main(){

HTTP/1.1 200…Content-type: text/html...

<html> <body><a href=“http://www.pippo.it/ilmioserver/cgi-bin/esempio.cgi”>attiva cgi</a></body></html>

S1TecnSoft Internet Paolo Salvaneschi 21

int main(){ printf("Content-type: text/html\n\n"); printf("<html>\n"); printf("<body>\n"); printf("<h1>Hello there!</h1>\n"); printf("</body>\n"); printf("</html>\n"); return 0;

}

...

<html> <body><h1>Hello there!</h1></body></html>

Page 22: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

CGI

#include <stdio.h>int main(){ Il programma può includere

<html> <body><a href=“http://www.pippo.it/ilmioserver/cgi-bin/esempio.cgi”>attiva cgi</a></body></html>

S1TecnSoft Internet Paolo Salvaneschi 22

Il programma può includerequalsiasi procedurache accede a banche dati o interagisce con il sistema informativo esistentereturn 0;

}

Page 23: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

• Invio di dati– Metodo GET

– Nomi e valori sono appesi alla URL

– Metodo POST

CGI

http://nome.server/cgi.bin/programma?nome=valore&nome=valore…

S1TecnSoft Internet Paolo Salvaneschi 23

– Metodo POST

– Nomi e valori sono nel corpo del messaggio

nome=valore&nome=valore…

Page 24: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

CGI

• Raccolta dati da client via form

• Method (POST | GET) (case insensitive):

identifica il metodo HTTP utilizzato per trasmettere i dati della form

• Action: indirizza l’applicazione che elabora i dati

S1TecnSoft Internet Paolo Salvaneschi 24

…<body><form method="POST"action="http://nome.server/cgi.bin/programma">………………………….</form></body>…

Page 25: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

• Variabili di ambiente– Il programma attivato

può accedere ad un insieme di varabili di ambiente

CGI

•… •CONTENT_LENGTH •CONTENT_TYPE •GATEWAY_INTERFACE •HTTP_ACCEPT •HTTP_USER_AGENT •PATH_INFO •PATH_TRANSLATED

Contiene i dati passati dal client

S1TecnSoft Internet Paolo Salvaneschi 25

•PATH_TRANSLATED •QUERY_STRING •REMOTE_ADDR •REMOTE_HOST •REMOTE_IDENT •REMOTE_USER •REQUEST_METHOD •SCRIPT_NAME •SERVER_NAME •SERVER_PORT •…

Contiene il metodo usato: GET o POST

Contiene i dati passati dal clientcon il metodo GET

Page 26: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

• Limiti– Ogni richiesta al server via CGI genera un

processo che termina a fine elaborazione

– Se il programma attivato via CGI contiene un accesso a DataBase, ogni volta sarà aperta e

CGI

S1TecnSoft Internet Paolo Salvaneschi 26

accesso a DataBase, ogni volta sarà aperta e chiusa una connessione al DBMS

– Utilizzo di risorse elevato � problemi di scalabilità

Page 27: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Tecnologie

BrowserHTML

ClientServer

HT

Server

Data baseHTTP

Linguaggio di CGI

Integrazione delle tecnologie

S1TecnSoft Internet Paolo Salvaneschi 27

HTMLCSS

JavaScriptJava Applet

TTPD

Sistema Informativo

HTTP

Apache Microsoft Internet ExplorerMozilla Firefox

di Programmaz.C, Java, Perl

CGI

Page 28: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Servlet

Browser

ClientServer

HT

Server

Data baseHTTPJava

Application Server

S1TecnSoft Internet Paolo Salvaneschi 28

TTPD

Sistema Informativo

HTTP

Apache Microsoft Internet ExplorerMozilla Firefox

JavaServlet

TomcatWebsphere

Page 29: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Tomcat

Java Servlet

S1TecnSoft Internet Paolo Salvaneschi 29

http://jakarta.apache.org

Page 30: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Servlet

• Servlet– Oggetti Java particolari che sono caricati ed

eseguiti dal web server che li utilizza come proprie estensioni.

– Il web server mette a disposizione delle Servlet

S1TecnSoft Internet Paolo Salvaneschi 30

– Il web server mette a disposizione delle Servlet un “container” che si occupa della gestione dell’ambiente all’interno delle quali le servlet girano.

– Il “container” passa i dati dal client verso le servlet e viceversa.

Page 31: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Servlet

• Package javax.servlet– Package di base delle Servlet API

– Contiene le classi per definire Servlet standard indipendenti dal protocollo.

– Una Servlet generica è una classe definita a

S1TecnSoft Internet Paolo Salvaneschi 31

– Una Servlet generica è una classe definita a partire dall’interfaccia Servlet contenuta all’interno del package javax.servlet.

Page 32: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Servlet

• Package javax.servlet.http– Le classi del package estendono le funzionalità

di base di una servlet supportando tutte le caratteristiche della trasmissione di dati con protocollo http compresi cookies

S1TecnSoft Internet Paolo Salvaneschi 32

protocollo http compresi cookies

Page 33: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Servlet

• Ciclo di vita di una Servlet– Una servlet è caricata e inizializzata dal web

server al momento della prima richiesta http da parte di un client o al momento dell’avvio del servizio.

S1TecnSoft Internet Paolo Salvaneschi 33

servizio.

– All’inizializzazione la servlet può, se il caso, aprire una connessione con un DataBase (connessione che resta aperta per servire più richieste del client).

Page 34: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Servlet

• Ciclo di vita di una Servlet– La servlet esegue le richieste del client.

Per ogni richiesta è creato un thread.

S1TecnSoft Internet Paolo Salvaneschi 34

– La servlet rilascia le risorse ed è distrutta

Page 35: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

HelloWorldServlet.java….import javax.servlet.* ;import javax.servlet.http.* ;public class HelloWorldServlet extends HttpServlet{

public void service (HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException{

res.setContentType(“text/html”);ServletOutputStream out = res.getOutputStream();

Metodo invocato al momento dell’ arrivo di unarichiesta da parte di un client

Java Servlet

S1TecnSoft Internet Paolo Salvaneschi 35

ServletOutputStream out = res.getOutputStream();out.println(“<html>”);out.println(“<head><title>Hello World</title></head>”);out.println(“<body>”);out.println(“<h1>Hello World</h1>”);out.println(“</body></html>”);

}}

Page 36: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Server Pages

Browser

ClientServer

HT

Server

Data baseHTTPJava

Application Server

S1TecnSoft Internet Paolo Salvaneschi 36

TTPD

Sistema Informativo

HTTP

Apache Microsoft Internet ExplorerMozilla Firefox

JavaJSP

TomcatWebsphere

Page 37: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Server Pages

• Java Server Pages (JSP)– Pagina di testo HTML che include codice java

– Pagina dinamica che è eseguita lato server e restituisce HTML al client

S1TecnSoft Internet Paolo Salvaneschi 37

Page 38: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Server Pages

• Scripting lato client– Scopo: rendere dinamica l’interfaccia utente

– Cambiare a seguito di eventi la presentazione

– Gestire l’input dell’utente

– …

S1TecnSoft Internet Paolo Salvaneschi 38

• Scripting lato server– Scopo: connettersi a programmi e basi dati e

modificare di conseguenza la pagina inviata

Page 39: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Server Pages

• Java Server Pages (JSP)– Il server utilizza la pagina JSP come una servlet

– Al momento del primo accesso la pagina JSP è trasformata in un file Java e compilata ottenendo una classe Java che rappresenta una servlet di tipo HttpServlet che crea una pagina html e la invia al client.

S1TecnSoft Internet Paolo Salvaneschi 39

Page 40: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Server Pages

• Java Server Pages (JSP)– Possibile integrazione tra servlet e JSP: il client

invia una richiesta ad una servlet che invia gli oggetti prodotti ad una JSP la quale genera l’HTML e lo invia

S1TecnSoft Internet Paolo Salvaneschi 40

l’HTML e lo invia

• JSP: View

• Servlet: Controller

• Componenti Java: Model

Page 41: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

esempio1.jsp

<html><body><h1> Informazioni sulla richiesta http </h1><br>Metodo richiesto : <%= request.getMethod() %>

Espressioni :iniziano con la sequenza dicaratteri “<%=” e terminano con la sequenza “%>”Utilizzate per aggiungere alla risposta httpil risultato dell’esecuzione di un’espressione di scripting

Java Server Pages

S1TecnSoft Internet Paolo Salvaneschi 41

Metodo richiesto : <%= request.getMethod() %><br>URI : <%= request.getRequestURI() %><br>Protocollo : <%= request.getProtocol() %><br><body></html>

Page 42: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Esempio2.jsp<html>

<body><% for(int i=0; i<10; i++) {

if(i%2==0) {%>

<h1>Pari</h1>

Scriptlet:iniziano con la sequenza “<%”, terminano con la sequenza “%>“

Java Server Pages

S1TecnSoft Internet Paolo Salvaneschi 42

<h1>Pari</h1><% } else { %>

<h2>Dispari</h2><%

}}

%><body>

</html>

Possibilità si spezzare il codice Java contenuto all’ interno delle scriptlet per darmodo al programmatore di non dover fonderetag html all’interno del sorgente Java.

Page 43: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Server Pages

• Applicazioni Web servite da Tomcat

• Container– Metodo standard di installazione e packaging delle

risorse che compongono un’applicazione (pagine JSP, pagine statiche, classi java,…). Files disposti

S1TecnSoft Internet Paolo Salvaneschi 43

JSP, pagine statiche, classi java,…). Files disposti in una gerarchia definita all’interno di un archivio WAR (Web archive)

– Archivio .jar (.zip)

– Cartella di file system

Page 44: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Server Pages

– Descrittore dell’installazione (file XML)

– Contesto servlet

associato ad un context path utilizzato per raggiungere l’applicazione a cui inviare le richieste

S1TecnSoft Internet Paolo Salvaneschi 44

Page 45: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Server Pages

Applicazioneservita da Tomcat

S1TecnSoft Internet Paolo Salvaneschi 45

Page 46: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Java Server Pages

Applicazioneservita da Tomcat

S1TecnSoft Internet Paolo Salvaneschi 46

Page 47: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Installazione di Tomcat

S1TecnSoft Internet Paolo Salvaneschi 47

Page 48: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

<html><head><title>Search in Employee Database</title></head><body bgcolor="white">Inserire il valore di uno o più campi.<form action="find.jsp " method="get"><table><tr><td>Nome:</td><td><input type="text" name="firstName"></td></tr><tr> <td>Cognome:</td>

Lettura da DataBase

Applicazione

S1TecnSoft Internet Paolo Salvaneschi 48

<tr> <td>Cognome:</td><td><input type="text" name="lastName"></td></tr><tr><td>Divisione:</td><td><input type="text" name="dept"></td></tr><tr><td><input type="submit" value="Cerca"></td></tr>

</table></form>

</body></html>

Page 49: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Lettura da DataBase

<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %><%-- Execute query, with wildcard characters added to the parametervalues used in the search criteria--%><sql:query var="empList" scope="request">SELECT * FROM Employee WHERE FirstName LIKE ?AND LastName LIKE ?AND Dept LIKE ?

ORDER BY LastName%carl% ���� giancarlo, carletto,…

Vedi NOTA

S1TecnSoft Internet Paolo Salvaneschi 49

ORDER BY LastName<sql:param value="%${param.firstName}%" /><sql:param value="%${param.lastName}%" /><sql:param value="%${param.dept}%" />

</sql:query><jsp:forward page="list.jsp" />

Nota: se il campo firstName della form è vuoto, la query diventa… WHERE FirstName LIKE %null%(LIKE qualsiasi stringa)

(LIKE ‘ab%ba_’ : qualunque stringa che inizia con ab e ha ba prima dell’ultima posizione)

? Segnaposto

Le istruzioni <sql:param sostituiscono nell’ordine i segnaposto

Page 50: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Lettura da DataBase

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %><html><head><title>Ricerca da DataBase</title>

</head><body bgcolor="white">

S1TecnSoft Internet Paolo Salvaneschi 50

<body bgcolor="white">

<c:choose><c:when test="${empList.rowCount == 0}">Nessun impiegato è stato trovato

</c:when>…….

Nota:empList è disponibilepoiché è nello scope requestLa pagina è stata attivatacon forward (stessa request)

Page 51: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Lettura da DataBase

<c:otherwise><p>Sono stati trovati i seguenti impiegati:</p><table border="1"><th>Nome</th><th>Cognome</th><th>Divisione</th><th>Data di assunzione</th><th>Email</th><c:forEach items="${empList.rows}" var="row"><tr><td><c:out value="${row.FirstName}" /></td><td><c:out value="${row.LastName}" /></td>

S1TecnSoft Internet Paolo Salvaneschi 51

<td><c:out value="${row.LastName}" /></td><td><c:out value="${row.Dept}" /></td><td><c:out value="${row.EmpDate}" /></td><td><c:out value="${row.EmailAddr}" /></td>

</tr></c:forEach>

</table></c:otherwise>

</c:choose></body></html>

Nomi dei campi nel DB

Page 52: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Lettura da DataBase

• NOTA

• Elementi di azione personalizzataSpecifica e ambiente di sviluppo per realizzare nuove azioni personalizzate (nuove tag library)

• JSTL (Java Standard Tag Library)

S1TecnSoft Internet Paolo Salvaneschi 52

Librerie predefinite di azioni

<c: Core

<x: Elaborazione XML

<fmt: Formattazione e internazionalizzazione

<sql: Accesso a database

Page 53: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Connessione con i Data Base

ClientServer

HT

Server

Data JDBCS

S1TecnSoft Internet Paolo Salvaneschi 53

TTPD

Database

JDBC

(ODBC)

SQL

Page 54: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Connessione con i Data Base

• ODBC (Open DataBase Connectivity)– Standard internazionale di accesso a Database

Relazionali

• JDBC

S1TecnSoft Internet Paolo Salvaneschi 54

– Interfaccia ad oggetti java di accesso a sorgenti di dati

– Connessa ai singoli driver di DataBase attraverso una interfaccia nativa o attraverso un ponte verso ODBC

Page 55: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

Ajax

• L’aggiornamento di dati su una pagina web richiede di ricaricare la pagina

• AJAX (Asynchronous JavaScript and XML )

– Lato client– Utilizza XMLHttpRequest, CSS, DOM, e JavaScript

S1TecnSoft Internet Paolo Salvaneschi 55

– Il componente Ajax (JavaScript) è incorporato nella pagina web e, invocato da eventi, esegue richieste http ad un server.

– La risposta, scritta in XML, è utilizzata per modificare in modo asincrono parte della pagina senza ricaricarla completamente.

Page 56: S1 1 Architetture Tecnologie Web V12 [modalità compatibilità]...Java Servlet • Ciclo di vita di una Servlet – Una servlet è caricata e inizializzata dal web server al momento

J2EE

S1TecnSoft Internet Paolo Salvaneschi 56