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

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

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

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

SOLUZIONE

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

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

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.
Il documento è ben formato, perché rispetta tutte le regole relative ai tag.
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.

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.

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

SOLUZIONE

Il cane si è mangiato la soluzione

Esercizio 3

3.a Discutete la nozione di standard e la sua importanza per il WWW.

SOLUZIONE

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.

3.b Spiegate scopo ed uso dello standard RSS.

SOLUZIONE

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.

Esercizio 4

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

SOLUZIONE

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

Esercizio 5

Java beans: cosa sono, vantaggi dati dal loro utilizzo, azioni standard per integrare JavaBeans e pagine JSP.

SOLUZIONE

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

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>"); 
   } 
}
  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

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). 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!".

  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.
  2. Le principali differenze sono:
    - 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.

Torna alla pagina di Tecnologie Web