cerca
Appello d'esame di Tecnologie Web - 19/06/2007
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.TemiEsameTW10 History

Hide minor edits - Show changes to output

Changed lines 187-188 from:
E' una pagina JSP che genera una pagina HTML titolata Esercizio nel cui body è dichiarato tramite uno scriptlet un array che viene passato a un ciclo for. Questo ciclo genera come output il numero di posizione dell'array con il relativo valore associato.\\\
to:
E' una pagina JSP che genera una pagina HTML titolata Esercizio nel cui body è dichiarato tramite uno scriptlet un array di stringhe ed un ciclo for che genera come output il numero di posizione dell'array con il relativo valore associato.\\\

OUTPUT:\\
[@
String[0] = La
String[1] = canzone
String[2] = del
String[3] = sole
@]
Changed lines 216-218 from:
E' una query sql per registrare nome e cognome di un utente. Il primo ? del parametro VALUES passa il valore del parametro* ''nome'' alla variabile ''nome'', mentre il secondo ? passa il valore del parametro* ''cognome'' alla variabile ''cognome''.

(*) paramentro
proveniente da una form nella pagina precedente
to:
E' una query sql per registrare nome e cognome di un utente. Il primo ? del parametro VALUES passa il valore del parametro* ''nome'' alla variabile ''nome'', mentre il secondo ? passa il valore del parametro* ''cognome'' alla variabile ''cognome''.\\
Questi due valori vengono inseriti nella tabella ''persone'' presente nel database specificato in un altro punto del codice.

(*) parametro
proveniente da una form nella pagina precedente
Changed lines 139-140 from:
Per caricare una servlet, il server ha bisogno di conoscere il classname della servlet, cioè il nome della servlet richiesto dal browser.
to:
Per caricare una servlet, il server ha bisogno di conoscere il classname della servlet, cioè il nome della servlet richiesto dal browser. Se presente anche il nome del package.nomeDellaServlet
Changed line 150 from:
Il metodo che entra in gioco è '''service()''', invocato per ogni richiesta in arrivo, da thread del processo container.\\
to:
Il metodo che entra in gioco è '''service()'''(anche questo definito dall'interfaccia javax.sevlet.Servlet), invocato per ogni richiesta in arrivo, da thread del processo container.\\
Added lines 152-155:

Nella fase di servizio vengono utilizzati vari metodi HTTP, i due principali sono '''doGet()''' e '''doPost()''', la differenza che intercorre tra i due è sempre la stessa:\\
nel primo caso le informazioni vengono accodate sotto forma di query string(? seguito dalla coppia nome=valore) alla URL, con eventuale perdita di informazione se il web server limita i caratteri della URL a 255.\\
Nel secondo caso non si può avere perdita di informazione perché la risposta viene inviata nel body e non nella URL.
Changed lines 187-190 from:
%warning%'''WARNING'''\\
Va bene?
to:
Changed lines 204-209 from:
E' una query sql per registrare nome e cognome di un utente. Il primo ? del parametro VALUES passa il valore del parametro* ''nome'' alla variabile ''nome'', menetre il secondo ? passa il valore del parametro* ''cognome'' alla variabile ''cognome''.

* paramentro proveniente da una form nella pagina precedente,

%warning%'''WARNING'''\\
Va bene?
to:
E' una query sql per registrare nome e cognome di un utente. Il primo ? del parametro VALUES passa il valore del parametro* ''nome'' alla variabile ''nome'', mentre il secondo ? passa il valore del parametro* ''cognome'' alla variabile ''cognome''.

(*) paramentro proveniente da una form nella pagina precedente
Changed lines 207-208 from:
E' una query sql per registrare nome e cognome di un utente. Il primo ? del parametro VALUES passa il valore della varibile nome al parametro nome, mentre il secondo ? passa il valore della stringa cognome al paramentro cognome.
to:
E' una query sql per registrare nome e cognome di un utente. Il primo ? del parametro VALUES passa il valore del parametro* ''nome'' alla variabile ''nome'', menetre il secondo ? passa il valore del parametro* ''cognome'' alla variabile ''cognome''.

* paramentro proveniente da una form nella pagina precedente,
Added lines 207-209:
E' una query sql per registrare nome e cognome di un utente. Il primo ? del parametro VALUES passa il valore della varibile nome al parametro nome, mentre il secondo ? passa il valore della stringa cognome al paramentro cognome.
Changed lines 211-212 from:
Manca soluzione
to:
Va bene?
Changed line 185 from:
Uno scriptlet è un frammento di codice Java definito in una pagina JSP da '''<%codice java%>''', adatto per inserire cicli, condizioni o comunque funzionalità semplici.
to:
Uno scriptlet è un frammento di codice Java definito in una pagina JSP da '''<% codice java %>''', adatto per inserire cicli, condizioni o comunque funzionalità semplici.
Added lines 183-186:
E' una pagina JSP che genera una pagina HTML titolata Esercizio nel cui body è dichiarato tramite uno scriptlet un array che viene passato a un ciclo for. Questo ciclo genera come output il numero di posizione dell'array con il relativo valore associato.\\\

Uno scriptlet è un frammento di codice Java definito in una pagina JSP da '''<%codice java%>''', adatto per inserire cicli, condizioni o comunque funzionalità semplici.
Changed line 188 from:
Manca soluzione
to:
Va bene?
Changed lines 183-186 from:
to:
%warning%'''WARNING'''\\
Manca soluzione
Added lines 202-204:

%warning%'''WARNING'''\\
Manca soluzione
Added lines 156-198:

!!Esercizio 5
'''Cos’è uno scriptlet? Commentare dettagliatamente e mostrare quale sarà l’output del seguente codice:'''

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@
<html>
<head>
<title> Esercizio </title>
</head>
<body>
<%
String [] strings=new String[4];
strings[0]= “La”;
strings[1]= “canzone”;
strings[2]= “del”;
strings[3]= “sole”;
for (int i=0; i<strings.lenght; i++) { %>
String[<%= i %>] = <%=strings[i] %> <br>
<% } %>
</body>
</html>
@]
>><<

%red%[-'''SOLUZIONE'''-]


!!Esercizio 6
'''Spiegare in maniera precisa il seguente pezzo di codice:'''

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@
<sql: update>
INSERT INTO persone (nome, cognome)
VALUES (?, ?)
<sql: param value= “${param.nome}” />
<sql: param value= “${param.cognome}” />
</sql: update>
@]
>><<

%red%[-'''SOLUZIONE'''-]
Changed lines 88-89 from:
to:
Il documento non è valido.\\
L'elemento che non lo rende valido è '''align="left"''' che si trova in ''p'' nella sestultima riga perché il tag ''p'' non prevede l'attributo align e questo deve essere dichiarato.
Added line 95:
Non è possibile validare il documento se si utilizza una delle tre DTD pubbliche riferite a XHTML (strict, transitional, frameset), se però si crea una DTD personalizzata che permette l'utilizzo di ''align'' in ''p'' allora il documento diventa valido.
Added lines 51-93:

!!Esercizio 2
'''Considerate il seguente documento XHTML:'''

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">

<head>
<title>Scuola Aperta, Lombardia </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"
/>
</head>

<body>
<div id="testata">
<div id="logo"> <img src="images/scuolalog.gif" alt="Scuola Aperta
[logo]" />
<span class="scuola">Scuola Aperta</span><br />via Porte Aperte sul Web,
11 - Lombardia
</div>
<p align="left" id="agg" >ultimo aggiornamento <strong>10 maggio
2004</strong>
</p>
</div>
</body>
</html>
@]
>><<


'''2.a Verificate che il documento sia valido rispetto alla dichiarazione. Individuate gli eventuali elementi che rendono non valido il documento.'''

%red%[-'''SOLUZIONE'''-]



'''2.b Modificando la dichiarazione si potrebbe validare il documento?'''

%red%[-'''SOLUZIONE'''-]
Changed lines 34-37 from:


'''1.b Spiegate, motivando la risposta
, se la DTD da voi descritta sia l’unica possibile dichiarazione che consenta di validare il file.'''
to:
[@
<!ELEMENT doc (foo, main
, ordinary+)>
<!ELEMENT foo (#PCDATA | bar)*>
<!ATTLIST foo
file CDATA #IMPLIED>
<!ELEMENT bar (#PCDATA)>
<!ELEMENT main (#PCDATA)>
<!ELEMENT ordinary EMPTY>
@]


'''1.b Spiegate, motivando la risposta, se la DTD da voi descritta sia l’unica possibile
che consenta di validare il file.'''
Added lines 49-50:
Non è l'unica possibile, perché possiamo modificarne alcune parti, ad esempio gli indicatori di occorrenza. Potremmo inserire ''ordinary*'', oppure mettere l'attributo di foo invece che come facoltativo obbligatorio tramite il ''#REQUIRED''. Oppure ancora inserire ''main*'' anche se ne è presente uno solo.\\
Queste modifiche avrebbero consentito lo stesso di validare il file.
Added lines 6-41:

!!Esercizio 1
Considerate il seguente documento XML:

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@
<?xml version="1.0"?>
<doc>
<foo file="1-redir.out">
Testing Redirect extension:
<bar>A foo subelement text node</bar>
</foo>
<main>
Everything else
</main>
<ordinary>
</ordinary>
<ordinary>
</ordinary>
</doc>
@]
>><<


'''1.a Scrivete una dichiarazione DTD che consenta di validare il file'''

%red%[-'''SOLUZIONE'''-]




'''1.b Spiegate, motivando la risposta, se la DTD da voi descritta sia l’unica possibile dichiarazione che consenta di validare il file.'''

%red%[-'''SOLUZIONE'''-]
Changed line 42 from:
Il ciclo di vita di una servlet è caratterizzata da 4 fasi:
to:
Il ciclo di vita di una servlet è caratterizzata da 4 fasi:\\
Changed line 43 from:
# '''caricamento''':\\
to:
'''1.''' '''Caricamento''':\\
Changed lines 45-47 from:
** viene avviato il server
** l'amministratore di sistema richiede al server di caricare la servlet
** il browser tenta l'accesso alla servlet
to:
* viene avviato il server
* l'amministratore di sistema richiede al server di caricare la servlet
* il browser tenta l'accesso alla servlet
Changed line 50 from:
# '''inizializzazione''':\\
to:
'''2.''' '''Inizializzazione''':\\
Changed line 54 from:
# '''servizio''':\\
to:
'''3.''' '''Servizio''':\\
Changed line 62 from:
# '''deattivazione''':\\
to:
'''4.''' '''Deattivazione''':\\
Added line 49:
Changed lines 52-54 from:
Prima di poter servire richieste e produrre risposte il container deve invocare il metodo '''init()'''
# servizio:
# deattivazione
:
to:
Il container invoca il metodo '''init()''', prima di poter servire richieste e produrre risposte . Questo metodo è definito dall'interfaccia ''javax.servlet.Servlet''', che ovviamente ogni servlet dovrà implementare.

# '''servizio'''
:\\
Durante questa fase la servlet:
* interagisce con le richieste provenienti dai client
* interagisce con altre servlet o risorse
* produce risposte
Il metodo che entra in gioco è '''service()''', invocato per ogni richiesta in arrivo, da thread del processo container.\\
Il metodo service() richiede due parametri che rappresentano la richiesta da servire e la risposta da produrre, questi due parametri sono identificati dai due oggetti Java '''javax.servlet.ServletRequest''' e '''javax.servlet.ServletResponse'''.

# '''deattivazione''':\\
Durante questa fase una servlet viene rimossa dall'ambiente di esecuzione rilasciando ogni risorsa creata per gestire le richieste.\\
Il container per deattivare la servlet invoca il metodo '''destroy()'''. Il metodo fa sempre parte dell'interfaccia '''javax.servlet.Servlet'''.
Changed lines 42-43 from:
%warning%'''WARNING'''\\
manca la soluzione
to:
Il ciclo di vita di una servlet è caratterizzata da 4 fasi:
# '''caricamento''':\\
Una servlet può essere caricata quando:
** viene avviato il server
** l'amministratore di sistema richiede al server di caricare la servlet
** il browser tenta l'accesso alla servlet
Per caricare una servlet, il server ha bisogno di conoscere il classname della servlet, cioè il nome della servlet richiesto dal browser.
# '''inizializzazione''':\\
Consiste nella creazione e inizializzazione delle risorse che verranno utilizzate per rispondere alle richieste.
Prima di poter servire richieste e produrre risposte il container deve invocare il metodo '''init()'''
# servizio:
# deattivazione:
Changed lines 42-43 from:
to:
%warning%'''WARNING'''\\
manca la soluzione
Added lines 1-45:
(:title Appello d'esame di Tecnologie Web - 19/06/2007:)
[[Torna alla pagina di Tecnologie Web -> TecnologieWeb]]
----

%titolo%''':: Appello d'esame di Tecnologie Web - 19/06/2007 ::'''

!!Esercizio 3
'''3.a Discutete le principali caratteristiche del WWW e spiegate per quale motivo ne decretarono il successo.'''\\\

%red%[-'''SOLUZIONE'''-]

Il WWW (world wide web) serve per presentare a schermo i documenti ipertestuali e multimediali.\\
Il punto di forza del WWW è la ''scalabilità'', ottenuta tramite il meccanismo dei link, che semplifica il protocollo e semplifica la navigazione ipertestuale.\\
Un altro fattore che ne determinò il successo è stato l'URI, cioè lo standard per gli identificatori univoci nella rete. È indipendente dal protocollo, facilmente memorizzabile e scambiabile.\\
Il protocollo di comunicazione utilizzato è l'HTTP, che permette di scambiare messaggi su una rete informatica (TCP/IP).\\
Le due componenti principali legate al WWW sono:
* browser(client): permette di visualizzare i documenti.
* server: meccanismo di accesso a risorse locali, in grado di trasmettere via socket TCP documenti identificati da un nome univoco. Può anche collegarsi ad applicazioni lato server(tramite protocollo CGI) agendo da tramite tra il browser e l'applicazione, quindi il browser diventa l'interfaccia dell'applicazione.\\

I linguaggi di markup (ad es. SGML, HTML, XHTML) sono i più opportuni per strutturare e marcare i documenti in maniera indipendente dall’applicazione, favorendo la riusabilità, la flessibilità e l’apertura ad applicazioni complesse dei documenti, quindi si va a risolvere il problema della portabilità dei dati.\\\

'''3.b Spiegate la differenza tra i due più diffusi parser XML: SAX e DOM.'''\\\

%red%[-'''SOLUZIONE'''-]

'''DOM (Document Object Model)''': definisce interfacce, proprietà e metodi per manipolare documenti XML.\\
'''SAX (Simple API for XML)''': è un’interfaccia per leggere e manipolare file XML (quindi è un'API basata su eventi per il parsing di documenti XML).\\\

Differenze:
* modalità di interazione tra le API(Application Programming Interface) e l’applicazione che ne fa uso.

In '''DOM''' è indispensabile leggere e sottoporre a parsing tutto il documento prima che il relativo modello a oggetti possa essere messo a disposizione di un'applicazione DOM. Ciò comporta che l'intero documento venga mantenuto in memoria e questo provoca un overhead non indifferente. Questo aspetto rende DOM poco adatto per applicazioni di trasformazione di documenti o per applicazioni che richiedano il parsing incrementale dei dati, come i protocolli di comunicazione e scambio di messaggi. DOM infatti non fornisce alcun supporto esplicito per effettuare il parsing di documenti o la serializzazione di nuovi documenti verso dispositivi di memorizzazione esterni.\\\

In '''SAX''' ogni volta che il parser incontra un tag iniziale, un tag finale, dei dati di tipo carattere oppure un'istruzione di elaborazione, lo comunica direttamente al programma client, di conseguenza non bisogna aspettare che l'intero documento venga letto prima di poter agire sui dati presenti all'inizio del documento, perché il documento stesso viene passato al programma pezzo per pezzo, dall'inizio alla fine. Quindi non è necessario che l'intero documento risieda in memoria (cosa che invece avviene con DOM).\\
Questo comporta - memoria, - tempo di caricamento, + tempo per singolo accesso.

!!Esercizio 4
'''Spiegare il ciclo di vita di una servlet.'''\\\

%red%[-'''SOLUZIONE'''-]



----
[[Torna alla pagina di Tecnologie Web -> TecnologieWeb]]