|
Wiki
UniCrema
Materie per semestre
Materie per anno
Materie per laurea
Help
|
|
Uni.TemiEsameTW12 History
Hide minor edits - Show changes to markup
Changed lines 259-262 from:
Se la variabile questoLink non è vuota o nulla viene stampato l'HTML tramite PrintWriter
to:
Se la variabile questoLink non è vuota o nulla viene stampato l'HTML tramite PrintWriter. Come prima informazione viene stampata la data dell'ultimo accesso, che era stata salvata nella variabile "tstamp" tramite il metodo LinkTracker() e convertita in stringa. Tramite un ciclo while vengono stampati i valori delle varie "key" presenti nella hashTable col contatore di visite effettuate.
Changed lines 256-257 from:
to:
Questo file è una Servlet che ha la funzione di LinkTracker in quanto quantifica quante volte viene cliccato un link. La quantità di clic viene visualizzata in codice HTML, se non è stato effettuato nessun clic viene visualizzato il messaggio: "No links have been tracked!". Il metodo HTTP utilizzato per verificare quante volte il link è stato cliccato è il doGET, il quale accoda l'informazione alla URL. Viene creata una hashtable, cioè una tabella con chiave-valore. Se la variabile stringa "questoLink" non è nulla o vuota viene effettuata una sincronizzazione della tabella e viene incrementato il contatore intero "count", se "count" è nullo viene inizializzato a 1. Se la variabile questoLink non è vuota o nulla viene stampato l'HTML tramite PrintWriter
Added line 196:
Changed line 201 from:
tstamp = new Date().toString();
to:
tstamp = new Date().toString();
Added line 203:
Changed lines 207-211 from:
if (questoLink != null && !questoLink.equals("")) {
synchronized (hashLinks){
Integer count = (Integer) hashLinks.get(questoLink);
if (count == null) {
hashLinks.put(questoLink, new Integer(1));
to:
if (questoLink != null && !questoLink.equals("")) {
synchronized (hashLinks){
Integer count = (Integer) hashLinks.get(questoLink);
if (count == null) {
hashLinks.put(questoLink, new Integer(1));
}
else {
hashLinks.put(questoLink, new Integer(1+count.intValue()));
}
}
response.sendRedirect(questoLink);
Deleted lines 219-224:
hashLinks.put(questoLink, new Integer(1+count.intValue()));
}
}
response.sendRedirect(questoLink);
}
else {
Changed lines 231-236 from:
Enumeration enumLinks = hashLinks.keys();
while (enumLinks.hasMoreElements())
{
String key = (String)enumLinks.nextElement();
int count = ((Integer)hashLinks.get(key)).intValue();
out.println(key+" : "+count+" visits<br>");
to:
Enumeration enumLinks = hashLinks.keys();
while (enumLinks.hasMoreElements())
{
String key = (String)enumLinks.nextElement();
int count = ((Integer)hashLinks.get(key)).intValue();
out.println(key+" : "+count+" visits<br>");
}
Deleted line 238:
Changed line 240 from:
out.println("No links have been tracked!<br>");
to:
out.println("No links have been tracked!<br>");
Deleted lines 151-153:
Deleted lines 168-169:
Changed lines 114-116 from:
Learning XML
XQuery Kick Start
to:
Learning XML XQuery Kick Start
Changed lines 118-122 from:
- Everyday Italian
* Harry Potter * Learning XML * XQuery Kick Start
to:
* Everyday Italian
* Harry Potter
* Learning XML
* XQuery Kick Start
Changed lines 117-118 from:
to:
e- restituisce i titoli dei libri in ordine alfabetico, ma questa volta in una lista non ordinata: * Everyday Italian * Harry Potter * Learning XML * XQuery Kick Start\\\
Changed lines 112-118 from:
to:
d- restituisce, tramite un costrutto flowr, i titoli dei libri con prezzo maggiore di 30 ordinati in ordine alfabetico. Everyday Italian Learning XML
XQuery Kick Start
e-
Changed lines 105-106 from:
to:
Changed lines 110-111 from:
to:
Learning XML
d- restituisce
Changed lines 90-91 from:
to:
a- restituisce tutti i titoli dei libri presenti nel file XML book.xml, perché parte dal nodo radice, entra nell'elemento bookstore, poi nel book e preleva i titoli. Everyday Italian Harry Potter XQuery Kick Start Learning XML
b- restituisce il libro che ha un prezzo inferiore a 30 dollari. In questo caso solo harry potter.
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
c- restituisce i titoli dei libri che hanno un prezzo superiore a 30 dollari, quindi: Everyday Italian XQuery Kick Start Learning XML
Deleted lines 21-23:
WARNING Può andare come riassunto?
Changed lines 138-139 from:
- Operazione 1: accedere all'oggetto di sessione associato alla richiesta corrente. Per accedere agli oggetti di tipo HttpSession (che sono hashtable, cioè a ognuno è associata una chiave univoca) utilizzo la chiamata
request.getSession . Il sistema estrae così lo userID da un cookie o dalla URL e lo confronta con gli elementi hashati della tabella: se ce n'è uno uguale ripristina la sessione altrimenti ne crea una nuova
- Operazione 2: cercare informazioni associate alla sessione. Cerco sul server facendo la chiamata
getAttribute del metodo HttpSession. Se conosco già il valore della chiave posso usare getAttribute("key") per cercare valori precendente memorizzati altrimenti mi faccio dare i nomi di tutti gli attributi con la chiamata getAttributeNames . Sempre che il valore prodotto non sia nullo (quando avevo fatto li cast)
to:
- Operazione 1: accedere all'oggetto di sessione associato alla richiesta corrente. Per accedere agli oggetti di tipo HttpSession (che sono hashtable, cioè a ognuno è associata una chiave univoca) utilizzo la chiamata
request.getSession . Il sistema estrae così lo userID da un cookie o dalla URL e lo confronta con gli elementi hashati della tabella: se ce n'è uno uguale ripristina la sessione altrimenti ne crea una nuova.
- Operazione 2: cercare informazioni associate alla sessione. Cerco sul server facendo la chiamata
getAttribute del metodo HttpSession. Se conosco già il valore della chiave posso usare getAttribute("key") per cercare valori precendente memorizzati.
Changed line 139 from:
- Operazione 2: cercare informazioni associate alla sessione. Cerco sul server facendo la chiamata getAttribute del metodo HttpSession. Se conosco già il valore della chiave posso usare
getAttribute("key") per cercare valori precendente memorizzati altrimenti mi facci odare i nomi di tutti gli attributi con la chiamata getAttributeNames . Sempre che il valore prodotto non sia nullo (quando avevo fatto li cast)
to:
- Operazione 2: cercare informazioni associate alla sessione. Cerco sul server facendo la chiamata
getAttribute del metodo HttpSession. Se conosco già il valore della chiave posso usare getAttribute("key") per cercare valori precendente memorizzati altrimenti mi faccio dare i nomi di tutti gli attributi con la chiamata getAttributeNames . Sempre che il valore prodotto non sia nullo (quando avevo fatto li cast)
Changed lines 140-143 from:
- Operazione 3: immagazzinare infomazioni nella sessione.
Attraverso la chiamata setAttribute creo un nuovo attributo o se c'è già lo sovrascrivo. Per eliminare un valore senza rimpiazzarlo uso removeAttribute .
- Operazione 4: eliminazione dati di sessione.
Ci sono 3 modi per eliminare i dati: removeAttribute ("key") per eliminare i valori associati a una specifica chiave; invalidate per eliminare l'intera sessione corrente; logout per eliminare tutte le sessioni relative all'utente.
to:
- Operazione 3: immagazzinare infomazioni nella sessione. Attraverso la chiamata
setAttribute creo un nuovo attributo o se c'è già lo sovrascrivo. Per eliminare un valore senza rimpiazzarlo uso removeAttribute .
- Operazione 4: eliminazione dati di sessione. Ci sono 3 modi per eliminare i dati:
removeAttribute ("key") per eliminare i valori associati a una specifica chiave; invalidate per eliminare l'intera sessione corrente; logout per eliminare tutte le sessioni relative all'utente.
Changed lines 138-144 from:
- Operazione 1: accedere all'oggetto di sessione associato alla richiesta corrente. Per accedere agli oggetti di tipo HttpSession (che sono hashtable, cioè a ognuno è associata una chiave univoca) utilizzo la chiamata
request.getSession . Il sistema estrae così lo userID da un cookie o dalla URL e lo confronta con gli elementi hashati della tabella: se ce n'è uno uguale ripristina la sessione altrimenti ne crea una nuova
- Operazione 2: cercare informazioni associate alla sessione.
Cerco sul server facendo la chiamata getAttribute del metodo HttpSession. Se conosco già il valore della chiave posso usare getAttribute("key") per cercare valori precendente memorizzati altrimenti mi facci odare i nomi di tutti gli attributi con la chiamata getAttributeNames. Sempre che il valore prodotto non sia nullo (quando avevo fatto li cast)
- Operazione 3: immagazzinare infomazioni nella sessione.
Attraverso la chiamata setAttribute creo un nuovo attributo o se c'è già lo sovrascrivo. Per eliminare un valore senza rimpiazzarlo uso removeAttribute.
- Operazione 4: eliminazione dati di sessione.
Ci sono 3 modi per eliminare i dati: removeAttribute ("key") per eliminare i valori associati a una specifica chiave; [@invalidate per eliminare l'intera sessione corrente; logout per eliminare tutte le sessioni relative all'utente.
to:
- Operazione 1: accedere all'oggetto di sessione associato alla richiesta corrente. Per accedere agli oggetti di tipo HttpSession (che sono hashtable, cioè a ognuno è associata una chiave univoca) utilizzo la chiamata
request.getSession . Il sistema estrae così lo userID da un cookie o dalla URL e lo confronta con gli elementi hashati della tabella: se ce n'è uno uguale ripristina la sessione altrimenti ne crea una nuova
- Operazione 2: cercare informazioni associate alla sessione. Cerco sul server facendo la chiamata getAttribute del metodo HttpSession. Se conosco già il valore della chiave posso usare
getAttribute("key") per cercare valori precendente memorizzati altrimenti mi facci odare i nomi di tutti gli attributi con la chiamata getAttributeNames . Sempre che il valore prodotto non sia nullo (quando avevo fatto li cast)
- Operazione 3: immagazzinare infomazioni nella sessione.
Attraverso la chiamata setAttribute creo un nuovo attributo o se c'è già lo sovrascrivo. Per eliminare un valore senza rimpiazzarlo uso removeAttribute .
- Operazione 4: eliminazione dati di sessione.
Ci sono 3 modi per eliminare i dati: removeAttribute ("key") per eliminare i valori associati a una specifica chiave; invalidate per eliminare l'intera sessione corrente; logout per eliminare tutte le sessioni relative all'utente.
Changed lines 142-143 from:
Attraverso la chiamata setAttribute creo una nuova chiave o se c'è già la sovrascrive. Per eliminare un valore senza rimpiazzarlo uso removeAttribute.
- Operazione 4: eliminazione dati di sessione
to:
Attraverso la chiamata setAttribute creo un nuovo attributo o se c'è già lo sovrascrivo. Per eliminare un valore senza rimpiazzarlo uso removeAttribute.
- Operazione 4: eliminazione dati di sessione.
Ci sono 3 modi per eliminare i dati: removeAttribute ("key") per eliminare i valori associati a una specifica chiave; [@invalidate per eliminare l'intera sessione corrente; logout per eliminare tutte le sessioni relative all'utente.
Added lines 131-144:
HTTP è un protocollo stateless cioè ho una connessione separata per ogni accesso del client a pagine Web e il server non mantiene informazioni contestuali sul client che effettua l'accesso. E' un problema quando capita che devo manterene la sessione quando ad esempio faccio shopping on line. Per mantenere la sessione precedente ci sono 3 diversi metodi:
- uso di cookies
- riscrittura di URL
- uso dell'interfaccia HttpSession interfaccia ad alto livello costruita sopra
cookies e URL rewriting (deve quindi supportare entrambi precedenti metodi)
HttpSession ha 4 operazioni fondamentali:
- Operazione 1: accedere all'oggetto di sessione associato alla richiesta corrente. Per accedere agli oggetti di tipo HttpSession (che sono hashtable, cioè a ognuno è associata una chiave univoca) utilizzo la chiamata
request.getSession . Il sistema estrae così lo userID da un cookie o dalla URL e lo confronta con gli elementi hashati della tabella: se ce n'è uno uguale ripristina la sessione altrimenti ne crea una nuova
- Operazione 2: cercare informazioni associate alla sessione.
Cerco sul server facendo la chiamata getAttribute del metodo HttpSession. Se conosco già il valore della chiave posso usare getAttribute("key") per cercare valori precendente memorizzati altrimenti mi facci odare i nomi di tutti gli attributi con la chiamata getAttributeNames. Sempre che il valore prodotto non sia nullo (quando avevo fatto li cast)
- Operazione 3: immagazzinare infomazioni nella sessione.
Attraverso la chiamata setAttribute creo una nuova chiave o se c'è già la sovrascrive. Per eliminare un valore senza rimpiazzarlo uso removeAttribute.
- Operazione 4: eliminazione dati di sessione
Changed line 146 from:
to:
Changed lines 104-105 from:
- Order: ordina le tuple prodotte dalla for o dalla let (dove per tupla si intende la combinazione delle associazioni tra variabile e valori creata da un for o un let)
- Return: crea il risultato dell'espressione FLWOR
to:
- Order: ordina le tuple prodotte dalla for o dalla let (dove per tupla si intende la combinazione delle associazioni tra variabile e valori creata da un for o un let)
- Return: crea il risultato dell'espressione FLWOR
Changed lines 142-145 from:
Le dichiarazioni sono frammenti di codice Java utilizzato per dichiarare nuovi metodi o classi o variabili globali. Definite da: <%! codice Java %>. Vengono eseguite PRIMA di _jspService().
WARNING
Manca l'esempio
to:
Le dichiarazioni sono frammenti di codice Java utilizzato per dichiarare nuovi metodi o classi o variabili globali. Definite da: <%! codice Java %>. Vengono eseguite PRIMA di _jspService().
[@
<%! int pageCount = 0;
void addCount (){
pageCount++;
}%>
Added lines 22-24:
WARNING Può andare come riassunto?
Changed line 11 from:
Hyper Text Transfer Protocol è un protocollo per traferire dati tramite indirizzamento IP e protocollo di trasporto TCP. Esistono due versioni: 1.0 e 1.1 per la quale è garantita la compatibilità con la precedente versione. La principale differenza tra le due è che la priva versione non ha connessione persistente, cioè non mantiene attivo lo stato di connessione e per richiedere diversi oggetti bisogna continuare a fare richieste di connessione; mentre con la 1.1 la connessione resta aperta fin quando non sono stati trasferiti tutti gli oggetti nella pagina. I metodi sono uguali per lntrambe le versioni:
to:
Hyper Text Transfer Protocol è un protocollo per traferire dati tramite indirizzamento IP e protocollo di trasporto TCP. Esistono due versioni: 1.0 e 1.1 per la quale è garantita la compatibilità con la precedente versione. La principale differenza tra le due è che la priva versione non ha connessione persistente, cioè non mantiene attivo lo stato di connessione e per richiedere diversi oggetti bisogna continuare a fare richieste di connessione; mentre con la 1.1 la connessione resta aperta fin quando non sono stati trasferiti tutti gli oggetti nella pagina. I metodi sono uguali per lntrambe le versioni:
Changed lines 20-21 from:
- Basic Authentication Scheme dove il client si autentica rispetto ad un server attraverso uno userID e una password inviate come un'unica stringa separata da : e codificate in base 64 ma trasmessi in chiaro
- Digest Authentication Scheme che si basa sulle funzioni di hash non invertibili che permettono di spedire il contenuto in modo cifrato. Per aumentarne la sicurezza alla funzione MAC viene anche aggiunto un valore segreto detto nounce definito dal server e comunicato al client che dovrà spedire, con il resto del messaggio, per autenticarsi al server stesso.
to:
- Basic Authentication Scheme dove il client si autentica rispetto ad un server attraverso uno userID e una password inviate come un'unica stringa separata da : e codificate in base 64 ma trasmessi in chiaro
- Digest Authentication Scheme che si basa sulle funzioni di hash non invertibili che permettono di spedire il contenuto in modo cifrato. Per aumentarne la sicurezza alla funzione MAC viene anche aggiunto un valore segreto detto nounce definito dal server e comunicato al client che dovrà spedire, con il resto del messaggio, per autenticarsi al server stesso.
Changed lines 11-12 from:
to:
Hyper Text Transfer Protocol è un protocollo per traferire dati tramite indirizzamento IP e protocollo di trasporto TCP. Esistono due versioni: 1.0 e 1.1 per la quale è garantita la compatibilità con la precedente versione. La principale differenza tra le due è che la priva versione non ha connessione persistente, cioè non mantiene attivo lo stato di connessione e per richiedere diversi oggetti bisogna continuare a fare richieste di connessione; mentre con la 1.1 la connessione resta aperta fin quando non sono stati trasferiti tutti gli oggetti nella pagina. I metodi sono uguali per lntrambe le versioni:
- option: richiede ad un server informazioni sulle opzioni di comunicazione disponibili
- get: richiede qualunque oggetto sia stato identificato dalla URL di richiesta
- head: uguale a get ma il server non deve includere un messaggio nel body della risposta
- post: richiede che il server di destinazione accetti l'oggetto identificato dalla URL dellla richiesta
- put: richiede che l'oggetto conenuto nella richiesta sia salvato dal server alla URL specificata
- delete: richiede la cancellaione dell'oggetto identificato dalla URL della richiesta
- trace: richiede che il server destinatario risponda con lo stesso messaggio di richiesta come body, usato per la verifica dei messaggi
Due sono le modalità di autenticazione HTTP:
- Basic Authentication Scheme dove il client si autentica rispetto ad un server attraverso uno userID e una password inviate come un'unica stringa separata da : e codificate in base 64 ma trasmessi in chiaro
- Digest Authentication Scheme che si basa sulle funzioni di hash non invertibili che permettono di spedire il contenuto in modo cifrato. Per aumentarne la sicurezza alla funzione MAC viene anche aggiunto un valore segreto detto nounce definito dal server e comunicato al client che dovrà spedire, con il resto del messaggio, per autenticarsi al server stesso.
Changed lines 100-112 from:
Rappresentano una soluzione per permettere a sistemi eterogenei di lavorare insieme per realizzare il service oriented computing(programmazione con componenti distribuite sul web). Sono componenti software indipendenti dalla piattaforma e dall'implementazione: un client non può dire quale linguaggio, quale sistema operativo o tipo di computer è stato usato. Usando XML per codificare le comunicazioni, sono infatti indipendenti da piattaforme o linguaggi di programmazione. Esso garantisce ricchezza espressiva, estendibilità, portabilità e facilità di comprensione. Inoltre possono essere validati da entrambe le parti che parti che comunicano.
to:
Rappresentano una soluzione per permettere a sistemi eterogenei di lavorare insieme per realizzare il service oriented computing(programmazione con componenti distribuite sul web). Sono componenti software indipendenti dalla piattaforma e dall'implementazione: un client non può dire quale linguaggio, quale sistema operativo o tipo di computer è stato usato. Usando XML per codificare le comunicazioni, sono infatti indipendenti da piattaforme o linguaggi di programmazione: esso garantisce ricchezza espressiva, estendibilità, portabilità e facilità di comprensione. Inoltre possono essere validati da entrambe le parti che parti che comunicano.
Possono essere:
- descritti usando un linguaggio di descrizione del servizio (un web service deve descrivere se stesso: quali tipi di richieste può soddisfare, quali sono gli argomenti, quale il trasporto)
- pubblicati in un registro di servizi per sapere dove è localizzato
- invocati mediante un'API solitamente tramite la rete
- composti con altri servizi e il servizio può a sua volta essere client di un altro servizio
L'architettura del web service è basata su 3 entità:
- service requestor: richiede l'esecuzione del web service
- service provider: implementa il servizio e lo rende disponibile per il web
- service registry: offre un servizio di pubblicazione e ricerca dei servizi disponibili
WARNING E' giusto?
Added lines 11-13:
Added lines 81-83:
Deleted line 104:
Added lines 107-109:
Deleted line 187:
Added lines 189-191:
Deleted line 91:
Added lines 93-94:
Rappresentano una soluzione per permettere a sistemi eterogenei di lavorare insieme per realizzare il service oriented computing(programmazione con componenti distribuite sul web). Sono componenti software indipendenti dalla piattaforma e dall'implementazione: un client non può dire quale linguaggio, quale sistema operativo o tipo di computer è stato usato. Usando XML per codificare le comunicazioni, sono infatti indipendenti da piattaforme o linguaggi di programmazione. Esso garantisce ricchezza espressiva, estendibilità, portabilità e facilità di comprensione. Inoltre possono essere validati da entrambe le parti che parti che comunicano.
Added lines 106-112:
Le JSP sono formate da codice HTML + frammenti di codice Java. Le componenti di una JSP sono gli elementi ed i template.
Gli elementi contengono gli elementi di script (utilizzati per rendere una pagina dinamica) che contengono a loro volta le dichiarazioni.
Le dichiarazioni sono frammenti di codice Java utilizzato per dichiarare nuovi metodi o classi o variabili globali. Definite da: <%! codice Java %>. Vengono eseguite PRIMA di _jspService().
WARNING
Manca l'esempio
Added lines 76-77:
Added lines 81-87:
Le espressioni FLWOR sono il costrutto più comune e potente di XQuery. Sono simili al costrutto SELECT-FROM-WHERE di SQL ma anzichè essere applicati a relazioni tra tabelle associano variabili a valori utliazzando i costrutti for e let e usano tali associazioni per produrre i risultati. FLWOR è l'acronimo di: For - Let - Where - Order - Return, dove:
- For: associa una o più variabili alle esprezzioni che seguono la keyword in
- Let: associa delle variabili all'intero risultato di un'espressione eventualmente aggiungendo questa associazione a quelle generate da un costrutto for
- Where: filtra le tuple prodotte da una for o let scartando quelle che non soddisfano la condizione necessaria
- Order: ordina le tuple prodotte dalla for o dalla let (dove per tupla si intende la combinazione delle associazioni tra variabile e valori creata da un for o un let)
- Return: crea il risultato dell'espressione FLWOR
Changed lines 56-60 from:
2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery: a- doc("books.xml")/bookstore/book/title b- doc("books.xml")/bookstore/book[price<30] c- doc("books.xml")/bookstore/book[price>30]/title d- [@
to:
2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery: a- doc("books.xml")/bookstore/book/title b- doc("books.xml")/bookstore/book[price<30] c- doc("books.xml")/bookstore/book[price>30]/title '''d- [@
Changed lines 65-66 from:
to:
Changed line 74 from:
to:
Added line 10:
Changed lines 19-46 from:
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
to:
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
Changed lines 77-80 from:
3- Web services: cosa sono e come funzionano.
4- Session tracking: cos’è? Illustrare la soluzione a tale problema basata sull’uso dell’interfaccia HttpSession, specificandone i vantaggi.
5- Dichiarazioni JSP: cosa sono? Scrivere un pezzo di codice che ne mostri l’utilizzo.
6- Spiegare il funzionamento e commentare dettagliatamente il seguente pezzo di codice.
to:
SOLUZIONE
Esercizio 3
Web services: cosa sono e come funzionano.
SOLUZIONE
Esercizio 4
Session tracking: cos’è? Illustrare la soluzione a tale problema basata sull’uso dell’interfaccia HttpSession, specificandone i vantaggi.
SOLUZIONE
Esercizio 5
Dichiarazioni JSP: cosa sono? Scrivere un pezzo di codice che ne mostri l’utilizzo.
SOLUZIONE
Esercizio 6
Spiegare il funzionamento e commentare dettagliatamente il seguente pezzo di codice.
Changed lines 160-164 from:
to:
Changed line 50 from:
'2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery:\\
to:
2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery:\\
Changed lines 60-61 from:
to:
Changed line 68 from:
to:
Changed line 50 from:
2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery:\\
to:
'2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery:\\
Changed line 69 from:
to:
Changed lines 12-13 from:
Dato il seguente documento XML “books.xml”:\\\
to:
Dato il seguente documento XML “books.xml”:
Added line 15:
Changed lines 48-51 from:
'''2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery:
a- doc("books.xml")/bookstore/book/title
b- doc("books.xml")/bookstore/book[price<30]
c- doc("books.xml")/bookstore/book[price>30]/title
to:
2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery: a- doc("books.xml")/bookstore/book/title b- doc("books.xml")/bookstore/book[price<30] c- doc("books.xml")/bookstore/book[price>30]/title\\
Changed line 67 from:
to:
Added line 13:
Changed lines 46-54 from:
'''2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery: a- doc("books.xml")/bookstore/book/title b- doc("books.xml")/bookstore/book[price<30] c- doc("books.xml")/bookstore/book[price>30]/title d- for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title\\
to:
'''2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery:
a- doc("books.xml")/bookstore/book/title
b- doc("books.xml")/bookstore/book[price<30]
c- doc("books.xml")/bookstore/book[price>30]/title
d-
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
Added lines 1-130:
Torna alla pagina di Tecnologie Web
:: Appello d'esame di Tecnologie Web - 09/02/2009 ::
Esercizio 1
HTTP: cos’è, metodi principali, schemi di autenticazione.
SOLUZIONE
Esercizio 2
Dato il seguente documento XML “books.xml”:
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
'''2a. scrivere e spiegare il risultato per ognuna delle seguenti XQuery: a- doc("books.xml")/bookstore/book/title b- doc("books.xml")/bookstore/book[price<30] c- doc("books.xml")/bookstore/book[price>30]/title d- for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title e-
<ul>
{
for $x in doc("books.xml")/bookstore/book/title
order by $x
return <li>{data($x)}</li>
}
</ul>
'''
2b. Cosa sono le espressioni flwor?
3- Web services: cosa sono e come funzionano.
4- Session tracking: cos’è? Illustrare la soluzione a tale problema basata sull’uso dell’interfaccia HttpSession, specificandone i vantaggi.
5- Dichiarazioni JSP: cosa sono? Scrivere un pezzo di codice che ne mostri l’utilizzo.
6- Spiegare il funzionamento e commentare dettagliatamente il seguente pezzo di codice.
import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LinkTracker extends HttpServlet {
static private Hashtable hashLinks = new Hashtable();
String tstamp;
public LinkTracker() {
tstamp = new Date().toString();
}
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
String questoLink = request.getParameter("link");
if (questoLink != null && !questoLink.equals("")) {
synchronized (hashLinks){
Integer count = (Integer) hashLinks.get(questoLink);
if (count == null) {
hashLinks.put(questoLink, new Integer(1));
}
else {
hashLinks.put(questoLink, new Integer(1+count.intValue()));
}
}
response.sendRedirect(questoLink);
}
else {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
request.getSession();
out.println("<html>");
out.println("<head>");
out.println("<title>Links Tracker Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>Links Tracked Since");
out.println(tstamp+":</p>");
if (hashLinks.size() != 0) {
Enumeration enumLinks = hashLinks.keys();
while (enumLinks.hasMoreElements())
{
String key = (String)enumLinks.nextElement();
int count = ((Integer)hashLinks.get(key)).intValue();
out.println(key+" : "+count+" visits<br>");
}
}
else {
out.println("No links have been tracked!<br>");
}
out.println("</body>");
out.println("</html>");
}
}
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
doGet(request, response);
}
}
Torna alla pagina di Tecnologie Web
|
|