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 markup

Changed lines 164-167 from:
  1. Vengono mischiate presentazione e logica: formato scomodo sia per gli sviluppatori che per i programmatori.
  2. Velocità: ad ogni richiesta del client, il server deve inoltrare questa richiesta al programma CGI che nel frattempo era stato chiuso (CGI stateless).
  3. Ad ogni richiesta di risorsa alla CGI, il web server crea un nuovo processo à spreco di risorse.
to:
  1. Vengono mischiate presentazione e logica: formato scomodo sia per gli sviluppatori che per i programmatori. Difficile fusione tra HTML e linguaggi di programmazione.
  2. Velocità: ad ogni richiesta del client, il server deve inoltrare questa richiesta al programma CGI che nel frattempo era stato chiuso.
  3. Stateless: non viene tenuta traccia di nessun dato tra una richiesta e l'altra.
  4. 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:
  1. 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:
  1. 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
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
è 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
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
Manca soluzione

Added lines 221-223:

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:
  1. 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.
  2. 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:
  1. Nel codice è presente il metodo doGet(). In quale fase del ciclo di vita della servlet viene invocato tale metodo?
  2. Quale altro metodo conosci che ha finalità analoghe a doGet()? Quali sono le differenze tra i due metodi?

SOLUZIONE

Added lines 186-214:

Esercizio 6

Commentare dettagliatamente il seguente pezzo di codice.

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
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:

<?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?

SOLUZIONE

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

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:

<?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.

SOLUZIONE

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

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:

  1. <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.
  2. <jsp:setProperty>:
    permette di impostare il valore di una delle proprietà di un bean.
  3. <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:

  1. Il client esegue una richiesta al web server.
  2. Il web server passa la richiesta ad un programma esterno.
  3. Il programma esterno riceve la richiesta, crea contenuti dinamici che tramite il server vengono inviati al client.

Problemi:

  1. Vengono mischiate presentazione e logica: formato scomodo sia per gli sviluppatori che per i programmatori.
  2. Velocità: ad ogni richiesta del client, il server deve inoltrare questa richiesta al programma CGI che nel frattempo era stato chiuso (CGI stateless).
  3. 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.

SOLUZIONE

3.b Spiegate scopo ed uso dello standard RSS.

SOLUZIONE

Esercizio 4

CGI: cosa sono, come funzionano, quali svantaggi presentano.

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


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

Esercizio 3

SOLUZIONE


Torna alla pagina di Tecnologie Web