Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
</STYLE>
</HEAD>
Classi: per specificare che lo stile deve applicarsi solo agli elementi H1 di una
- specifica classe:
<HEAD>
<STYLE type=”text/css”>
H1.miaclass{
border-width:1;
border:solid;
text-align:center;
}
</STYLE>
</HEAD>
<BODY>
<H1 class=”miaclass”>testo</H1>
</BODY>
ID: tramite id è possibile limitare l’applicazione dello stile ad una sola istanza:
- <HEAD>
<STYLE type=”text/css”>
#miaid{ border-width:1; border:solid; text-align:center;}
…
<H1 class=”miaclass”…</H1>
<H1 id=”miaid”>testo</H1>
</BODY>
CSS esterno: si può scrivere il CSS su un file esterno, in modo da condividerlo
- fra più pagine
Il collegamento ad un foglio (es. special.css) esterno si può fare così,
o nell’intestazione:
<HEAD>
<LINK href=”special.css” rel=”stylesheet” type=”text/css”>
</HEAD>
Layout senza tabelle: un layout table-less si realizza attraverso l’uso dei div
- Un div è un contenitore generico di blocchi (generic-block-level element)
o Può contenere qualsiasi tipo di elemento html
▪ La sua presentazione naturale (quindi senza fogli di stile) è
▪ totalmente neutra; infatti questo elemento si presenta di default
senza margini, bordi o padding
Un div è quindi il contenitore per eccellenza per realizzare layout senza
o l’uso di tabelle: ad ogni div portante verrà associata una sezione
della pagina
Cascading: il termine “cascata” indica una delle caratteristiche principali dei
- CSS, infatti questi possono essere inseriti più di uno nello stesso documento
seguendo regole gerarchiche (quindi ci sono CSS più importanti e altri meno)
Una cascata potrebbe includere fogli di stile applicabili a media differenti
o (schermo, stampa)
Sia LINK che STYLE possono essere usati con l’attributo media
▪ È compito dell’interprete filtrare quei fogli di stile che non si
▪ applicano al medium corrente
Ereditabilità: il meccanismo della cascata è usato quando un certo numero di
- regole di stile è applicato a un elemento. Il meccanismo permette agli interpreti
di ordinare le regole per specificità, di determinare quale regole
applicare. Se nessuna regola è disponibile, il passo successivo dipende dal
fatto che le proprietà di stile possano essere ereditate o meno. Non tutte
le proprietà. Per tali proprietà il linguaggio dei fogli di stile fornisce i valori
predefiniti da usare quando non ci sono specifiche regole per un particolare
elemento.
Se la proprietà può essere ereditata, l’interprete esamina l’elemento
o accluso per vedere se una regola si applica ad esso. Questo processo
continua fino al reperimento di una regola applicabile. Questo
meccanismo permette ai fogli di stile di essere specificati in modo
compatto. Per esempio, gli autori possono specificare la famiglia di
caratteri per tutti gli elementi all’interno del BODY (corpo) con una
singola regola che si applica all’elemento BODY
Lezione 3: Applicazioni Web – Servlet
Dal web alle applicazioni
Il Web supporta l’interazione tra client e server via http
- Per realizzare un’applicazione, il Web Server si fa aiutare da un Application
- Server
Un Application Server è caratterizzato dal protocollo di interazione con il Web
- Server
L’interazione con il client è sempre http
-
Tecnologia Server Side
La computazione avviene lato server e può avvenire tramite programmi
- compilati o script interpretati
Nel caso di programmi compilati il web Server si limita ad invocare, su
o richiesta del client, un eseguibile
L’eseguibile può essere scritto in un qualsiasi linguaggio che
▪ supporti l’interazione con il web server – tipicamente Java, C#, C+
+
Nel caso di esecuzione con script, il web server ha al suo interno un
o motore in grado di interpretare il linguaggio di scripting usato
Si perde in velocità di esecuzione ma si guadagna in facilità di
▪ scrittura dei programmi
I linguaggi più diffusi sono PHP, Phyton e Perl
▪
http/CGI
URL definisce un naming globale
- http:
- fornisce un modello di tipo RPC basato su socket
o permette di invocare programmi sul server
o
CGI (Common gateway Interface):
- Permette al server di attivare un programma e di passargli le richieste e i
o parametri provenienti dal client
Utilizzo di linguaggi interpretati
Il processo CGI implementa un interprete per il linguaggio utilizzato
- Vantaggi:
- Portabilità
o Utilizzo di strutture ben definite
o Serve programmare solo le logiche delle applicazioni
o
Esempi:
- Phyton
o Java/Servlet
o PHP
o
Applicazioni Web lato Client
L’URL nella pagina Web deve riferirsi all’applicazione lato server come “risorsa”
- ….
<p><a href=http://149.132.196.196/Scripts/nome>
Click per eseguire
</p>
Il browser invia una richiesta tipo:
- GET /Scripts/nome http/1,1
o
Inviare dati alla Web App
Si possono usare le form per inviare dati
-
-
Caratteristiche:
Applicazione Web (http) a confronto con una applicazione distribuita nativa
- Limiti del protocollo http a caratteri:
o Lentezza: occorre tradurre e ritradurre i dati (es. da testo a
▪ numeri: da “256” a 256)
Utilizzo di HTML per input e output: uso di FORM per
▪ l’acquisizione e costruzione delle pagine in HTML in risposta
Consumazione senza stato (memoria)
o Ogni richiesta è un messaggio autonomo
▪ Per creare sessioni di lavoro (legare più richieste tra loro) occorre
▪ includere informazioni con mezzi espliciti
Cookie
● Campi nascosti
●
Java Servlet
Sono piccole applicazioni Java residenti sul server
- Esempio: Apache/Tomcat
o
Una servlet è un componente gestito in modo automatico da un container o
- engine
Ha un’interfaccia che definisce il set di metodi (ri)definibili
- Vantaggi: semplicità e standardizzazione
o Svantaggi: rigidità
o
Il container controlla le servlet (attiva/disattiva) in base alle richieste dei client
- Sono residenti in memoria
- Mantengono uno stato
o Consentono l’interazione con un’altra servlet
o
Stateless VS Stateful
http non prevede persistenza (stateless)
- Non si possono mantenere informazioni tra un messaggio e i successivi
o Non si possono identificare i client
o
Mantenere lo stato della conversazione con le servlet
- Cookies:
o Informazioni memorizzate sul client
▪ Permettono di gestire sessioni
▪
Httpsession
o Gestito automaticamente dal container (con cookie o riscrittura
▪ delle URL)
Interfaccia Servlet
Ogni servlet implementa l’interfaccia javax.servlet.Servelet, con 5 metodi:
- void init (ServletConfig config)
o Inizializza la servlet
▪
ServletConfig getServletConfig()
o Restituisce i parametri di inizializzazione e il ServletContext che dà
▪ accesso all’ambiente
void service (ServletRequest request, ServletResponse response)
o Invocato per gestire richieste del client
▪
String getServletInfo()
o Restituisce informazioni tipo autore e versione
▪
void destroy()
o chiamata quando la servlet termina (es. per chiudere un file o una
▪ connessione con un database)
Classi astratte
L’interfaccia è solo la dichiarazione dei metodi che, per essere utilizzabili,
- devono essere implementati in una classe
Sono presenti due classi astratte, cioè che implementano i metodi
- dell’interfaccia in modo che non facciano nulla
javax.servlet.GenericServlet
o javax.servlet.http.HTTPServlet
o Definisce metodi per l’uso in ambiente web
▪
Questo semplifica la scrittura delle servlet vere e proprie in quanto basta
- implementare (ridefinendoli) solo i metodi che interessano
La classe HTTPServlet
Implementa service in modo da invocare i metodi per servire le richieste dal
- web doGet
o processa le richieste di tipo GET
▪
doPost
o processa le richieste di tipo POST
▪
Parametri:
o HTTPServletRequest
▪ HTTPServletResponse
▪
Eccezioni
o ServletException
▪ IOException
▪
Richieste e risposte
Anche i parametri sono stati adattati al protocollo http; cioè consentono di
- ricevere (inviare) messaggi http leggendo (scrivendo) i dati nell’head e nel body
di un messaggio
Interfaccia HTTPServletRequest
- Viene passato un oggetto da service
o Contiene la richiesta del client
o Estende ServletRequest
o
Interfaccia HTTPServletResponse
- Viene passato un oggetto da service
o Contiene la risposta per il client
o Estende ServletResponse
o
I metodi principali:
- String getParameter (String name)
o Restituisce il valore dell’argomento name
▪
Enumeration getParameterNames()
o Restituisce l’elenco dei nomi degli argomenti
▪
String[] getParameterValues (String name)
o Restituisce i valori dell’argomento name
▪
Cookie[] getCookies()
o Restituisce i cookies del server sul client
▪
void addCookie (Cookie cookie)
o Aggiunge un cookie nell’intestazione della risposta
▪
HTTPSession getSession (boolean create)
o Una HTTPSession identifica il client
▪ Viene creata se create = true
▪
void setContentType (String Type)
o Specifica il tipo MIME della risposta per dire al browser come
▪ visualizzare la risposta
Esempio: “text/html” dice che è HTML
▪
ServletOutputStream getOutputStream()
o Restituisce stream di byte per scrivere la risposta
▪
PrintWriter getWriter()
o Restituisce lo stream di caratteri per scrivere la risposta
▪
Esecuzione di una servlet
Viene creata un’istanza della servlet
- Condivisa da tutti i client
o Ogni richiesta genera un thread che esegue la doXXX appropritata
o
o
Ciclo di vita
Una servlet viene creata dal container
- Quando viene effettuata la prima chiamata
o
Viene invocato il metodo init() per inizializzazioni specifiche
- Una servlet viene distrutta
- Quando non ci sono servizi in esecuzione
o Quando è scaduto un tiemout predefinito
o
All’occorrenza di uno dei due eventi viene invocato il metodo destroy() per
- terminare correttamente la servlet
Terminazione
Container e richieste dei c