cerca
Appello d'esame di Tecnologie Web - 04/09/2008
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.TemiEsameTW07 History

Hide minor edits - Show changes to output

Changed lines 164-167 from:
# Vengono mischiate presentazione e logica: formato scomodo sia per gli sviluppatori che per i programmatori.
# Velocità: ad ogni richiesta del client, il server deve inoltrare questa richiesta al programma CGI che nel frattempo era stato chiuso (CGI stateless).
# Ad ogni richiesta di risorsa alla CGI, il web server crea un nuovo processo à spreco di risorse
.
to:
# Vengono mischiate presentazione e logica: formato scomodo sia per gli sviluppatori che per i programmatori. Difficile fusione tra HTML e linguaggi di programmazione.
# Velocità: ad ogni
richiesta del client, il server deve inoltrare questa richiesta al programma CGI che nel frattempo era stato chiuso.
# Stateless: non viene tenuta traccia di nessun dato tra una richiesta e l'altra.
# Consumo di risorse: ad ogni richiesta di risorsa alla CGI, il web server crea un nuovo processo, quindi c'è un numero limitato di processi concorrenti e di utenti contemporanei.

Per risolvere il problema della velocità e del consumo sono state introdotte le Fast CGI (seconda generazione di CGI) che mantengono un pool di processi sempre attivo, evitando quindi di creare e terminare ad ogni richiesta un nuovo processo. Questo permette anche di mantenere traccia dello stato. La richiesta e la risposta viaggiano sullo stesso canale di comunicazione Socket
.
Changed line 228 from:
E' il codice di una servlet e come tale scritto in java. All'inizio vengono chiamate i pacchetti per la servlet per l'inizializzazione della servlet e definire il metodo service(e il package I/O per gestire le eccezioni).
to:
E' il codice di una servlet e come tale scritto in java. All'inizio vengono chiamati i pacchetti per la servlet per l'inizializzazione della servlet e definire il metodo service(e il package I/O per gestire le eccezioni).
Changed line 232 from:
# Il metodo doGet() viene invocato nella fase di servizio della servlet. In questa fase una servlet interagisce con le richieste proventienti dal client, può interagire con altre servlet o risorse producendo risposte. Questo metodo viene utilizzato per prendere le informazioni dal client.
to:
# Il metodo doGet() viene invocato nella fase di servizio della servlet. In questa fase una servlet interagisce con le richieste provenienti dal client, può interagire con altre servlet o risorse producendo risposte.
Changed lines 234-235 from:
- '''doGet()''' comprende una quantità limitata d'informazione (non più di 255 caratteri) in forma di ''query string'': lista che inizia con ? seguita da coppie nome-valore. Inoltre appare come parte dell'URL.\\
- '''doPost()''' può essere basato su query string; con questo metodo si può spedire una quantità illimitata d'infomazione come parte di una richiesta HTTP, senza apparire come parte di URL.
to:
- '''doGet()''' comprende una quantità limitata d'informazione (in alcuni casi non più di 255 caratteri) in forma di ''query string'': lista che inizia con ? seguita da coppie nome-valore. Inoltre appare come parte dell'URL.\\
- '''doPost()''' può essere basato su query string; con questo metodo si può spedire una quantità illimitata d'informazione come parte di una richiesta HTTP, senza apparire come parte di URL.
Changed lines 120-122 from:

%warning%'''WARNING'''\\
Manca
soluzione
to:
Il cane si è mangiato la soluzione
Changed lines 227-230 from:
E' il codice di una servlet e come tale scritto in java. All'inizio vengono chiamate i pacchetti per la servlet per l'inizializzazione della servlet e definire il metodo service(e il package I/O per gestire le eccezioni). Per il servizio viene usato il metodo doGet che implementa le classi di request e response. Viene così prodotta una pagina HTML con la solita fantastica scritta "Hello World!".

%warning%'''WARNING'''\\
è giusto?
to:
E' il codice di una servlet e come tale scritto in java. All'inizio vengono chiamate i pacchetti per la servlet per l'inizializzazione della servlet e definire il metodo service(e il package I/O per gestire le eccezioni).
Prima di scrivere l'output è necessario specificare il tipo di contenuto della pagina tramite chiamata al metodo ''setContentType()''
Per il servizio viene usato il metodo doGet che implementa le classi di request e response
. Viene così prodotta una pagina HTML con la solita fantastica scritta "Hello World!".
Added lines 103-111:
Le regole dei documenti ben formati sono cinque:
* apertura e chiusura dei tag
* annidamento corretto dei tag
* dichiarazione all'inizio del documento
* xml/xhtml sono CASE-SENSISTIVE: quindi utilizzare lo stesso nome per gli elementi/tag in apertura e chiusura
* inserire correttamente gli apici singoli o doppi negli attributi

Il documento è valido quando rispetta le regole espresse nello schema DTD o XML-SCHEMA.
Deleted lines 113-114:
%warning%'''WARNING'''\\
sistemare la parte relativa al buon formato e alla validità del codice
Changed line 106 from:
LA COSA NON MI CONVINCE MOLTO, CHIEDERO' CONFERMA ALLA TRUCCO
to:
sistemare la parte relativa al buon formato e alla validità del codice
Changed lines 113-115 from:
[@

@]
to:
%warning%'''WARNING'''\\
Manca soluzione
Added lines 221-223:

%warning%'''WARNING'''\\
è giusto?
Changed line 220 from:
E' il codice di una servlet e come tale scritto in java. All'inizio vengono chiamate i pacchetti per la servlet e il package I/O per l'inizializzazione della servlet e definire il metodo service. Per il servizio viene usato il metodo doGet che implementa i metodi di request e response. Viene così prodotta una pagina HTML con la solita fantastica scritta "Hello World!".
to:
E' il codice di una servlet e come tale scritto in java. All'inizio vengono chiamate i pacchetti per la servlet per l'inizializzazione della servlet e definire il metodo service(e il package I/O per gestire le eccezioni). Per il servizio viene usato il metodo doGet che implementa le classi di request e response. Viene così prodotta una pagina HTML con la solita fantastica scritta "Hello World!".
Changed line 220 from:
E' il codice di una servlet e come tale scritto in java
to:
E' il codice di una servlet e come tale scritto in java. All'inizio vengono chiamate i pacchetti per la servlet e il package I/O per l'inizializzazione della servlet e definire il metodo service. Per il servizio viene usato il metodo doGet che implementa i metodi di request e response. Viene così prodotta una pagina HTML con la solita fantastica scritta "Hello World!".
Added lines 219-220:

E' il codice di una servlet e come tale scritto in java
Changed lines 220-223 from:
to:
# Il metodo doGet() viene invocato nella fase di servizio della servlet. In questa fase una servlet interagisce con le richieste proventienti dal client, può interagire con altre servlet o risorse producendo risposte. Questo metodo viene utilizzato per prendere le informazioni dal client.
# Le principali differenze sono:\\
- '''doGet()''' comprende una quantità limitata d'informazione (non più di 255 caratteri) in forma di ''query string'': lista che inizia con ? seguita da coppie nome-valore. Inoltre appare come parte dell'URL.\\
- '''doPost()''' può essere basato su query string; con questo metodo si può spedire una quantità illimitata d'infomazione come parte di una richiesta HTTP, senza apparire come parte di URL.
Changed line 188 from:
'''Commentare dettagliatamente il seguente pezzo di codice.'''
to:
'''Commentare dettagliatamente il seguente pezzo di codice:'''
Added lines 214-218:

# '''Nel codice è presente il metodo doGet(). In quale fase del ciclo di vita della servlet viene invocato tale metodo?'''
# '''Quale altro metodo conosci che ha finalità analoghe a doGet()? Quali sono le differenze tra i due metodi?'''

%red%[-'''SOLUZIONE'''-]
Added lines 186-214:

!!Esercizio 6
'''Commentare dettagliatamente il seguente pezzo di codice.'''
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class HelloWorldServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException
{
response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<html>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
@]
>><<
Changed line 106 from:
'''LA COSA NON MI CONVINCE MOLTO, CHIEDERO' CONFERMA ALLA TRUCCO'''
to:
LA COSA NON MI CONVINCE MOLTO, CHIEDERO' CONFERMA ALLA TRUCCO
Changed line 101 from:
La dichiarazione DOCTYPE specifica quale è il DTD relativo al documento e dove si trova, in questo caso è un DTD pubblico e più precisamente è quello XHTML FRAMESET, cioè quello più "libero" tra i tre previsti per XHTML. E' la versione più libera in quanto permette anche di utilizzare elementi correlati ai frame come frameset e iframe.\\
to:
La dichiarazione DOCTYPE specifica qual'è il DTD relativo al documento e dove si trova, in questo caso è un DTD pubblico e più precisamente è quello XHTML FRAMESET, cioè quello più "libero" tra i tre previsti per XHTML. E' la versione più libera in quanto permette anche di utilizzare elementi correlati ai frame come frameset e iframe.\\
Changed lines 75-76 from:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
to:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
Added line 77:
Changed lines 101-102 from:
to:
La dichiarazione DOCTYPE specifica quale è il DTD relativo al documento e dove si trova, in questo caso è un DTD pubblico e più precisamente è quello XHTML FRAMESET, cioè quello più "libero" tra i tre previsti per XHTML. E' la versione più libera in quanto permette anche di utilizzare elementi correlati ai frame come frameset e iframe.\\
Il documento è ben formato, perché rispetta tutte le regole relative ai tag.\\
Il documento non è valido perché a quanto pare anche se nell'XHTML FRAMESET è possibile inserire i ''frameset'' questi non possono essere messi all'interno del body, o almeno così dice il programma.

%warning%'''WARNING'''\\
'''LA COSA NON MI CONVINCE MOLTO, CHIEDERO' CONFERMA ALLA TRUCCO'''
Changed lines 113-115 from:
to:
[@

@]
Changed lines 78-82 from:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title> Frameset DTD XHTML Example </title>
</head>
to:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title> Frameset DTD XHTML Example </title>
</head>
Changed lines 84-85 from:
<body bgcolor="#FFFFFF" link="#000000" text="red">
<p>This is an XHTML example</p>
to:
<body bgcolor="#FFFFFF" link="#000000" text="red">
<p>This is an XHTML example</p>
Changed lines 87-90 from:
<frameset cols="100,*">
<frame src="toc.html" />
<frame src="intro.html" name="content" />
</frameset>
to:
<frameset cols="100,*">
<frame src="toc.html" />
<frame src="intro.html" name="content" />
</frameset>
Changed lines 92-93 from:
</body>
</html>
to:
</body>
</html>
Added lines 68-106:

!!Esercizio 2
'''Considerate la seguente istanza XHTML:'''

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title> Frameset DTD XHTML Example </title>
</head>

<body bgcolor="#FFFFFF" link="#000000" text="red">
<p>This is an XHTML example</p>

<frameset cols="100,*">
<frame src="toc.html" />
<frame src="intro.html" name="content" />
</frameset>

</body>
</html>
@]
>><<

'''2.a Spiegate la dichiarazione DOCTYPE. È questo un documento ben formato? È valido?'''

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



'''2.b Scrivete esempio di XHTML che riporti gli stessi contenuti ma che sia valido rispetto ad una DTD STRICT.'''

%red%[-'''SOLUZIONE'''-]
Changed lines 17-29 from:
<table border="2" bgcolor="yellow">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Dynamic Content</th>
</tr>
<xsl:for-each select="CATALOG/CD">
<tr>
<td><xsl:value-of select="TITLE"/></td>
<td><xsl:value-of select="ARTIST"/></td>
<td><xsl:value-of select="ORACLE"/></td>
</tr>
</table>
to:
<table border="2" bgcolor="yellow">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Dynamic Content</th>
</tr>
<xsl:for-each select="CATALOG/CD">
<tr>
<td><xsl:value-of select="TITLE"/></td>
<td><xsl:value-of select="ARTIST"/></td>
<td><xsl:value-of select="ORACLE"/></td>
</tr>
</table>
Changed line 31 from:
</html>
to:
</html>
Added line 14:
Changed lines 41-43 from:
* secondo errore:
to:
* secondo errore: manca l'elemento ''xsl:template'' che definisce l'inizio di un template. Ogni elemento <xsl:template> contiene delle regole da applicare quando uno specifico nodo viene trovato.\\
Se manca questo elemento il browser non sa cosa fare.
Changed lines 48-67 from:
to:
[@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="2008-09-04es1.xsl"?>

<CATALOG>

<CD>
<TITLE>Scenes from a memory</TITLE>
<ARTIST>Dream Theater</ARTIST>
<ORACLE>prova prova</ORACLE>
</CD>

<CD>
<TITLE>Black Album</TITLE>
<ARTIST>Metallica</ARTIST>
<ORACLE>prova prova</ORACLE>
</CD>

</CATALOG>
@]
Added lines 39-40:
* primo errore: il tag ''for-each'' viene aperto, ma non viene chiuso e quindi un qualsiasi programma segnalerebbe un errore. Non rispetta le regole XML sui documenti ben formati.
* secondo errore:
Changed line 8 from:
Considerate il seguente foglio di stile XSL:
to:
'''Considerate il seguente foglio di stile XSL:'''
Added lines 6-46:

!!Esercizio 1
Considerate il seguente foglio di stile XSL:

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
[@
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Dynamic Content</th>
</tr>
<xsl:for-each select="CATALOG/CD">
<tr>
<td><xsl:value-of select="TITLE"/></td>
<td><xsl:value-of select="ARTIST"/></td>
<td><xsl:value-of select="ORACLE"/></td>
</tr>
</table>
</body>
</html>
</xsl:stylesheet>
@]
>><<

'''1.a Nel documento esistono due errori. Individuateli e commentateli.'''

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



'''1.b Scrivete un istanza di documento a cui potrebbe essere applicata una versione corretta del presente foglio di stile.'''

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

Changed lines 65-66 from:
* utile corrispondenza tra parametri della richiesta e proprietà degli oggetti: semplificazione del processo di lettura parametri di richiesta, conversione da stringa,
copia del risultato nell’oggetto.
to:
* utile corrispondenza tra parametri della richiesta e proprietà degli oggetti: semplificazione del processo di lettura parametri di richiesta, conversione da stringa, copia del risultato nell’oggetto.
Changed line 65 from:
* Utile corrispondenza tra parametri della richiesta e proprietà degli oggetti: semplificazione del processo di lettura parametri di richiesta, conversione da stringa,
to:
* utile corrispondenza tra parametri della richiesta e proprietà degli oggetti: semplificazione del processo di lettura parametri di richiesta, conversione da stringa,
Changed line 59 from:
'''Vantaggi''':
to:
'''Vantaggi''':\\
Changed lines 58-60 from:
Le Java Beans sono componenti software, che possono essere incluse in una pagina JSP, contenenti classi Java scritte in un formato standard. Permettono un ottimo incapsulamento e riutilizzo di codice.
Vantaggi:
In generale
to:
Le Java Beans sono componenti software, che possono essere incluse in una pagina JSP, contenenti classi Java scritte in un formato standard. Permettono un ottimo incapsulamento e riutilizzo di codice.\\
'''
Vantaggi''':
''In generale''
Changed line 62 from:
Con JSP
to:
''Con JSP''
Changed lines 58-76 from:
to:
Le Java Beans sono componenti software, che possono essere incluse in una pagina JSP, contenenti classi Java scritte in un formato standard. Permettono un ottimo incapsulamento e riutilizzo di codice.
Vantaggi:
In generale
* permettono di poter utilizzare le classi (ovviamente quelle che seguono il formato) senza scrivere codice.
Con JSP
* si possono utilizzare oggetti Java usando solo sintassi XML-compatibile (comporta una forte separazione tra presentazione e contenuto).
* condivisione di oggetti tra pagine o richieste più semplice.
* Utile corrispondenza tra parametri della richiesta e proprietà degli oggetti: semplificazione del processo di lettura parametri di richiesta, conversione da stringa,
copia del risultato nell’oggetto.

Ci sono tre azioni standard per integrare JavaBeans e pagine JSP:
# ''<jsp:useBean>'':\\
associa la classe contenuta nel JavaBean ad un oggetto visibile all’interno della pagina, in modo da poter richiamare i suoi metodi senza dover fare riferimento al file di origine.

# ''<jsp:setProperty>'':\\
permette di impostare il valore di una delle proprietà di un bean.

# ''<jsp:getProperty>'':\\
prende il valore di una proprietà di una data istanza di bean e lo inserisce nell’oggetto out implicito (in pratica lo stampa a video).
Changed lines 43-51 from:
to:
CGI (Common Gateway Interface) è un’interfaccia standard che permette ad un web server di comunicare con altre applicazioni e programmi autonomi.\\
''Funzionamento'':
# Il client esegue una richiesta al web server.
# Il web server passa la richiesta ad un programma esterno.
# Il programma esterno riceve la richiesta, crea contenuti dinamici che tramite il server vengono inviati al client.
'''Problemi''':
# Vengono mischiate presentazione e logica: formato scomodo sia per gli sviluppatori che per i programmatori.
# Velocità: ad ogni richiesta del client, il server deve inoltrare questa richiesta al programma CGI che nel frattempo era stato chiuso (CGI stateless).
# Ad ogni richiesta di risorsa alla CGI, il web server crea un nuovo processo à spreco di risorse.
Changed lines 31-32 from:
to:
RSS significa '''Really Simple Syndication''' ed è un formato basato su XML adatto alla diffusione di contenuti su Internet.\\
I documenti RSS, detti anche '''feed''', sono uno strumento per descrivere contenuti che possono essere forniti a chi pubblica informazioni su Internet per i siti ad
aggiornamento frequente come quelli di news.\\
Attraverso un RSS Reader è possibile veicolare i contenuti di un sito e riaggregarli presentandoli sotto nuove forme. Il programma che permette di effettuare il download, il parsing e visualizzare i contenuti di un feed RSS si chiama '''feed reader'''. I feed reader sono in grado di rilevare automaticamente se il produttore di feed ha effettuato aggiornamenti al feed stesso, effettuando download a intervalli di tempo regolari.\\
Il concetto chiave quindi è che l'utente tramite RSS può scaricare e visualizzare gli aggiornamenti di decine di siti, usando una sola interfaccia.\\
Nota: esattamente quello che avviene col nostro forum.
Added lines 42-43:
Changed lines 12-26 from:
to:
Lo standard è un prerequisito per la costruzione di un’infrastruttura globale funzionale e poco costosa. Servono per evitare caos e il monopolio.\\
L’incapacità di giungere ad uno standard sostiene il lock-in, crea ''isole di connettività'', mantiene i sistemi costosi, difficili da usare, inflessibili, e ritarda la diffusione di tecnologie utili nella società.\\
Ci sono diversi tipi di standard:
* proprietari vs. non proprietari
* prescrittivi (devi fare in un det. Modo) vs. descrittivi
* de jure vs. de facto
Uno standard può essere creato:
* con un intervento governativo
* attraverso un processo formale all’interno di organizzazioni
* attraverso l’accettazione del mercato di una specifica in competizione
L’impatto degli standard nelle Tecnologie dell’Informazione coinvolge:
* '''Interoperabilità''': fare in modo che i sistemi lavorino insieme (ad esempio, permettere che software diversi accedano agli stessi dati).
* '''Portabilità''': permettere che il software funzioni su architetture diverse (ad esempio, un linguaggio di programmazione comune).
Uno standard per prevalere deve raggiungere la giusta combinazione di prestazioni - universalità - costo.
Added line 30:
Changed lines 7-8 from:
!!Esercizio 3
to:
!!Esercizio 3
'''3.a Discutete la nozione di standard e la sua importanza per il WWW.'''\\\

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


'''3.b Spiegate scopo ed uso dello standard RSS.'''\\\

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


!!Esercizio 4
'''CGI: cosa sono, come funzionano, quali svantaggi presentano.'''\\\

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

!!Esercizio 5
'''Java beans: cosa sono, vantaggi dati dal loro utilizzo, azioni standard per integrare JavaBeans e pagine JSP.'''
Added lines 1-15:
(:title Appello d'esame di Tecnologie Web - 04/09/2008:)
[[Torna alla pagina di Tecnologie Web -> TecnologieWeb]]
----

%titolo%''':: Appello d'esame di Tecnologie Web - 04/09/2008 ::'''

!!Esercizio 3

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




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