s1 1 architetture tecnologie web v12 [modalità compatibilità]...java servlet • ciclo di vita di...
TRANSCRIPT
![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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/1.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/2.jpg)
• 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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/3.jpg)
• 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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/4.jpg)
• 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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/5.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/6.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/7.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/8.jpg)
• 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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/9.jpg)
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 è 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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/10.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/11.jpg)
• 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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/12.jpg)
• 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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/13.jpg)
<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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/14.jpg)
<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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/15.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/16.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/17.jpg)
<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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/18.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/19.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/20.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/21.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/22.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/23.jpg)
• 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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/24.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/25.jpg)
• 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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/26.jpg)
• 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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/27.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/28.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/29.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/30.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/31.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/32.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/33.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/34.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/35.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/36.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/37.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/38.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/39.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/40.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/41.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/42.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/43.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/44.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/45.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/46.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/47.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/48.jpg)
<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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/49.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/50.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/51.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/52.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/53.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/54.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/55.jpg)
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](https://reader033.vdocumenti.com/reader033/viewer/2022060817/60967c66ab3ade7c4d66339a/html5/thumbnails/56.jpg)
J2EE
S1TecnSoft Internet Paolo Salvaneschi 56