Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


08 servlet, Appunti di Elementi di Informatica

appunti servelt

Tipologia: Appunti

2015/2016

Caricato il 12/05/2016

notanumber
notanumber 🇮🇹

5

(2)

11 documenti

1 / 7

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
SERVLET
In una pagina web statica il contenuto della pagina viene stabilito al momento della creazione della
pagina L’architettura Web client/server. Il browser del client fa una richiesta (REQUEST) al web
server, specificando l’URL della risorsa desiderata. Il web server intercetta la richiesta ed invia
l’oggetto al browser del client (RESPONSE)
II termine Web Server indica in generale il software per la gestione di un computer host che mette a
disposizione dati o applicativi e al quale si possono connettere altri computer in rete.
Una pagina web dinamica o interattiva viene realizzata “al volo” sul web server. I contenuti variano
in dipendenza degli input e delle richieste dell’utente. Es. viene interrogato il database e vengono
visualizzati i dati che soddisfano una particolare condizione. Una pagina web dinamica è costituita da
classico HTML (eventualmente con qualche script lato client) Il browser del client non ha modo di
sapere se la pagina richiesta risiedeva già sul web server o è stata generata all’istante. Per il browser
cambiano solo i contenuti, non le tecnologie usate!!!
Le pagine web dinamiche si possono creare mediante:
1. elaborazione dal lato server il server web riceve la richiesta della pagina web dinamica, esegue
tutte le operazioni necessarie per crearla e invia la pagina completata al client per farla visualizzare nel
suo browser
2. combinazione di elaborazione dal lato server e dal lato client. Alcune elaborazioni sono eseguite
nella stazione di lavoro del client, sia per comporre la richiesta, sia per creare o per visualizzare la
pagina dinamica Il codice per generare la pagina dinamica può essere: Programma compilato
eseguibile (Java, Visual Basic, C++). Programma non compilato (script) che viene interpretato ed
elaborato durante l’esecuzione (ASP, JSP).
Cos’è un servlet
D B C 0D C 8 4 Un servlet è una normalissima applicazione Java, eseguita in una
JVM (Java Virtual Machine) residente su un web server
D B C 0D C 8 4 Ha la particolarità che il suo output è redirezionato verso un webclient
D B C 0D C 8 5 Tipicamente l’output è HTML
D B C 0D C 8 4 Ha dei metodi già pronti per gestire in modo semplice le REQUEST
ed i RESPONSE del browser del client
Esecuzione di un servlet
D B C 0D C 8 4 Il client richiede al server web una pagina dinamica
D B C 0D C 8 4 Il server richiama il servlet richiesto alla gestione dei contenuti dinamici
D B C 0D C 8 4 Il servlet viene caricato dinamicamente ed eseguito all’interno della JVM
residente sul web server
D B C 0D C 8 4 L’output del servlet (HTML) viene inviato al client, dove verrà interpretato
dal browser come una normale pagina web
I servlet vengono caricati in memoria una sola volta al momento della prima
chiamata
D B C 0D C 8 5 Ogni richiesta NON causa la creazione di un nuovo processo
D B C 0D C 8 4 I servlet risiedono in memoria tra una richiesta e l’altra
D B C 0D C 8 5 Ciò comporta che le inizializzazioni necessarie vengono eseguite una
volta sola
D B C 0D C 8 4 Una sola istanza del servlet risponde a più richieste
D B C 0D C 8 4 Dispongono di classi per la gestione delle sessioni
D B C 0D C 8 4 Consentono una più semplice condivisione dei dati fra le istanze di un
servlet
D B C 0D C 8 4 Ereditano la portabilità di Java
pf3
pf4
pf5

Anteprima parziale del testo

Scarica 08 servlet e più Appunti in PDF di Elementi di Informatica solo su Docsity!

SERVLET

In una pagina web statica il contenuto della pagina viene stabilito al momento della creazione della pagina L’architettura Web client/server. Il browser del client fa una richiesta (REQUEST) al web server, specificando l’URL della risorsa desiderata. Il web server intercetta la richiesta ed invia

l’oggetto al browser del client (RESPONSE)

II termine Web Server indica in generale il software per la gestione di un computer host che mette a disposizione dati o applicativi e al quale si possono connettere altri computer in rete. Una pagina web dinamica o interattiva viene realizzata “al volo” sul web server. I contenuti variano in dipendenza degli input e delle richieste dell’utente. Es. viene interrogato il database e vengono visualizzati i dati che soddisfano una particolare condizione. Una pagina web dinamica è costituita da

classico HTML (eventualmente con qualche script lato client) Il browser del client non ha modo di sapere se la pagina richiesta risiedeva già sul web server o è stata generata all’istante. Per il browser cambiano solo i contenuti, non le tecnologie usate!!!

Le pagine web dinamiche si possono creare mediante:

  1. elaborazione dal lato server – il server web riceve la richiesta della pagina web dinamica, esegue tutte le operazioni necessarie per crearla e invia la pagina completata al client per farla visualizzare nel suo browser
  2. combinazione di elaborazione dal lato server e dal lato client. Alcune elaborazioni sono eseguite nella stazione di lavoro del client, sia per comporre la richiesta, sia per creare o per visualizzare la pagina dinamica Il codice per generare la pagina dinamica può essere: Programma compilato eseguibile (Java, Visual Basic, C++). Programma non compilato (script) che viene interpretato ed elaborato durante l’esecuzione (ASP, JSP).

Cos’è un servlet

D B C 0D C 8 4Un servlet è una normalissima applicazione Java, eseguita in una JVM (Java Virtual Machine) residente su un web server D B C 0D C 8 4Ha la particolarità che il suo output è redirezionato verso un webclient D B C 0D C 8 5Tipicamente l’output è HTML D B C 0D C 8 4Ha dei metodi già pronti per gestire in modo semplice le REQUEST ed i RESPONSE del browser del client

Esecuzione di un servlet

D B C 0D C 8 4Il client richiede al server web una pagina dinamica D B C 0D C 8 4Il server richiama il servlet richiesto alla gestione dei contenuti dinamici D B C 0D C 8 4Il servlet viene caricato dinamicamente ed eseguito all’interno della JVM residente sul web server D B C 0D C 8 4L’output del servlet (HTML) viene inviato al client, dove verrà interpretato dal browser come una normale pagina web I servlet vengono caricati in memoria una sola volta al momento della prima chiamata D B C 0D C 8 5Ogni richiesta NON causa la creazione di un nuovo processo D B C 0D C 8 4I servlet risiedono in memoria tra una richiesta e l’altra D B C 0D C 8 5Ciò comporta che le inizializzazioni necessarie vengono eseguite una volta sola D B C 0D C 8 4Una sola istanza del servlet risponde a più richieste D B C 0D C 8 4Dispongono di classi per la gestione delle sessioni D B C 0D C 8 4Consentono una più semplice condivisione dei dati fra le istanze di un servlet D B C 0D C 8 4Ereditano la portabilità di Java

I Package

D B C 0D C 8 4Il package Java di base per le API Servlet è javax.servlet : D B C 0D C 8 5contiene la definizione dell’interfaccia Servlet e D B C 0D C 8 5contiene classi utili alla comunicazione fra client e server D B C 0D C 8 4L’interfaccia servlet D B C 0D C 8 5contiene i prototipi di tutti i metodi necessari alla gestione del ciclo di vita di una servlet e alla esecuzione delle operazione implementate dal servlet D B C 0D C 8 4Tutti i servlet sono classi che implementano l’interfaccia servlet, in maniera diretta, o estendendo una classe che la implementa, come ad esempio HttpServlet

I Package utilizzati

D B C 0D C 8 4Sono due i package che utilizzeremo per la generazione di servlet: D B C 0D C 8 5 javax.servlet D B C 0D C 8 5 javax.servlet.http D B C 0D C 8 4Il package javax.servlet contiene le interfacce generiche e le classi che vengono implementate ed estese da tutti i servlet D B C 0D C 8 4Il package javax.servlet.http è specializzato per servlet che operano su HTTP (Quelle usate per rispondere HTML ad un client)

Generalmente vengono gestititi 2 metodi: doGet() e doPost().

Entrambi i metodi doGet() e doPost () prendono 2 argomenti: HttpServletRequest e HttpServletResponse. Il HttpServletRequest consente di ottenere a tutti e due i dati in entrata; la classe ha metodi attraverso i quali è possibile scoprire informazioni come forma di dati (query), richiesta HTTP intestazioni, e il client's Hostname. Il HttpServletResponse consente di specificare informazioni in uscita come stato http, codici (404, ecc) e la risposta intestazioni (Content-Type, Set-Cookie, ecc.) Più importante, HttpServletResponse consente di ottenere un PrintWriter che si utilizzano per inviare contenuti del documento al client.

La maggior parte delle servlet generano. Per la generazione di HTML, si aggiungono tre passi per il processo appena illustrato:

  1. dire al browser che stai inviando HTML.
  2. Modificare il println per la costruzione di una pagina Web
  3. Controlla il tuo HTML con un validator. nel nostro caso response.setContentType ( "text / html");

Ciclo di vita di un servlet Il ciclo di vita di un servlet segue una struttura ben precisa:

  1. Il servlet viene costruito e inizializzato
  2. Il servlet serve una o più richieste fino a che il servizio viene chiuso
  3. Il servlet viene distrutto e lo spazio che occupava recuperato
  4. Loading: caricamento e istanziazione sono eseguiti dal web server e avvengono al momento della prima richiesta da parte di un client
  5. Inizializzazione: in questa fase la servlet carica dati persistenti, apre connessioni verso DB. Questa operazione avviene tramite la chiamata al metodo init().
  6. Gestione richieste e risposte del client: il metodo eseguito all’arrivo di una nuova richiesta è il metodo service() , che riceve come parametri gli oggetti ServletRequest e ServletResponse per gestire le richieste
  7. Terminazione (tipicamente quando termina l’esecuzione del web server): si specifica come rilasciare le risorse occupate. Questa operazione avviene tramite la chiamata al metodo destroy(). Il metodo

getHeaders getMethod ritorna il tipo di metodo di richiesta (normale, GET or POST) , but methods like getRequestURI ritorna una parte dell’URL. http://randomhost.com/servlet/search.BookSearch? subject=jsp, getRequestURI would return "/servlet/search.BookSearch". getQueryString ritorna I dati inviati. Es http://randomhost.com/servlet/search.BookSearch? subject=jsp, getQueryString would return "subject=jsp". getProtocol ritorna il protocollo usato es HTTP/1.0 or HTTP/1.1.

CODICI DI STATO

Esistono una serie di codici di stato che indicano lo stato attuale attraverso un codice. Tale codice viene

anche utilizzato per avere informazioni su possibili errori riscontrati durante l’utilizzo della servlet. Questi codici sono divisi in cinque categorie generali: 100-199 - Codici informativi, il che indica che i Client deve rispondere con qualche altra azione. 200-299 - significa che la richiesta è stata completata. 300-399 - sono usati per i file che si sono spostati e di solito includono un header che indica il nuovo indirizzo. 400-499 - indicare un errore da parte del client. 500-599 - errore dal server. Una risposta da un server Web di solito è costituito da una riga di stato, una o più intestazioni di risposta (uno dei quali deve essere Content - Type), una linea vuota, e il documento. Impostazione della risposta HTTP headers spesso va di pari passo con l'impostazione dei codici di stato nella linea di stato. Header di risposta può essere utilizzato

  • per specificare i cookie,
  • a fornire supporto alla pagina di modifica (per lato client caching),
  • di incaricare il browser per ricaricare la pagina dopo un determinato intervallo,
  • a designare il tipo di documento generato,
  • e di eseguire molti altri compiti. Metodi di RESPONSE da Servlets setHeader (String headerName, String headerValue) Questo metodo imposta la risposta header designato con il nome di un determinato valore. setDateHeader (String intestazione, lungo millisecondi) Questo metodo vi permette di risparmiare la briga di tradurre un Java in data Millisecondi setIntHeader (String intestazione, int headerValue) Questo metodo si risparmia il piccolo inconveniente di conversione di uno Int su una stringa che si vuole inserire in un header. setContentType (String mimeType) Questo metodo imposta l'intestazione Content-Type ed è utilizzato dalla maggioranza dei servlet.

setContentLength (int lunghezza) Questo metodo imposta l'intestazione Content-Length, il che è utile se il Browser supporta connessioni HTTP persistenti (keep-alive). addCookie (Cookie c) Questo metodo inserisce un cookie nel Set-Cookie intestazione. sendRedirect (String indirizzo) il metodo sendRedirect imposta la posizione intestazione così come l'impostazione del codice di stato a 302.

COOKIE

Vantaggi di Cookie I cookie sono piccoli frammenti di informazioni testuali che un server Web invia a un browser e che il browser più tardi restituisce immutato. Di solito viene utilizzato quando si visita il sito Usi tipici dei cookie Identificazione di un utente durante una sessione di e-commerce ricordando nomi utente e password, anni di un utente ecc. Alcuni problemi con cookie I cookie non sono mai interpretato o eseguito in qualsiasi modo e, quindi, non può essere utilizzato per inserire il tuo attacco di virus o di sistema. Il problema è la privacy, non di sicurezza. I Server possono ricordare le precedenti azioni Se i cookie non sono critici per il vostro compito, evitare che tutto servlet e bisogna non inserire informazioni sensibili e cookie L'invio di cookie al client

l’uso di Cookie viene fatto in tre fasi:

  1. Creazione di un oggetto Cookie. Si chiama il costruttore con un cookie Cookie di nome e di un cookie, il valore, che sono entrambi stringhe.
  2. Impostare l'età massima. Se si desidera che il browser per memorizzare i Cookie sul disco invece di mantenere in memoria, si usa SetMaxAge di specificare per quanto tempo (in secondi) il cookie deve essere Valido.
  3. Posizionando il cookie nella risposta HTTP headers. Si usa Response.addCookie per realizzare questo. Se si dimentica questo passo, il Cookie non viene inviato al browser! Cookie userCookie = new Cookie("user", "uid1234"); userCookie.setMaxAge(606024*365); // Store cookie for 1 year response.addCookie(userCookie); Per leggere invece informazioni su un Cookie, utilizzare request.getCookies che restitituisce un array di cookie, e poi utilizzare getName() e getValue() per ottenere le informazioni desiderate.

Metodi e le API di Cookie getDomain / setDomain Consente di specificare dominio a cui si applica cookie. Host attuale deve Essere parte del dominio specificato. getMaxAge / setMaxAge Prende / imposta la scadenza del cookie di tempo (in secondi). Se non si riesce a impostare questo, il cookie viene applicato solo alla sessione corrente di navigazione. getName Restituisce il nome del cookie. Non vi è alcun metodo setName; Fornite a nome del costruttore. getSecure / setSecure Questa coppia di metodi set ottiene il valore booleano che indica se il cookie deve essere inviato solo su connessioni criptate. Il valore di default è false; cookie devono applicare a tutte le connessioni. GetPath / setPath Prende / imposta il percorso a cui si applica cookie. Se non viene specificato, cookie Vale per gli URL che sono all'interno o al di sotto directory contenente la pagina corrente. Ad esempio, se il server ha inviato il cookie di Http://ecommerce.site.com/toys/specials.html, il browser dovrebbe inviare il cookie indietro alla connessione a Http:// ecommerce.site.com / giocattoli / moto / beginners.html, Ma non a http://ecommerce.site.com/cds/classical.html. Per specificare che un cookie si applica a tutti gli URL del tuo sito, usa Cookie.setPath ("/"). getValue / setValue Ottiene o imposta il valore associato al cookie. Per i nuovi cookie si utilizza il costruttore per non utilizzare setValue.

} else { heading = "Welcome Back"; accessCount = new Integer(accessCount.intValue() + 1); } session.setAttribute("accessCount", accessCount); PrintWriter out = response.getWriter(); String title = "Session Tracking Example"; String docType = "\n"; out.println(docType + "\n" + "" + title + "\n" + "\n" + "\n" + "" + heading + "\n" +"Information on Your Session:\n" + "\n" +"\n" + " Info TypeValue\n" + "\n" +" ID\n" +" " + session.getId() + "\n" + "\n" +"Creation Time\n" +"" +new Date(session.getCreationTime())+"\n"+ "\n" +" Time of Last Access\n" + " " +new Date(session.getLastAccessedTime()) + "\n" + "\n" +" Number of Previous Accesses\n" +" " + accessCount + "\n" + "\n" +""); } }