



Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
appunti servelt
Tipologia: Appunti
1 / 7
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!




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:
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
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
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
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:
Ciclo di vita di un servlet Il ciclo di vita di un servlet segue una struttura ben precisa:
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.
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
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.
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:
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" +""); } }