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
56
Embed
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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
• 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
• Tecnologie
• Nomenclatura:
Tecnologie
Linguaggio es. Java
S1TecnSoft Internet Paolo Salvaneschi 3
Tecnologia es. JSP
Esempio di Strumento es. Tomcat
• 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
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
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>
<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>…
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
• 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
• 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
<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>
Contiene i dati passati dal clientcon il metodo GET
• 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à
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
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
Tomcat
Java Servlet
S1TecnSoft Internet Paolo Salvaneschi 29
http://jakarta.apache.org
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.
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.
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
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).
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
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>”);
}}
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
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
• Scripting lato server– Scopo: connettersi a programmi e basi dati e
modificare di conseguenza la pagina inviata
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
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
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
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.
Java Server Pages
• Applicazioni Web servite da Tomcat
• Container– Metodo standard di installazione e packaging delle
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
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
Java Server Pages
Applicazioneservita da Tomcat
S1TecnSoft Internet Paolo Salvaneschi 45
Java Server Pages
Applicazioneservita da Tomcat
S1TecnSoft Internet Paolo Salvaneschi 46
Installazione di Tomcat
S1TecnSoft Internet Paolo Salvaneschi 47
<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>
<%@ 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
<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)
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>