Swappa : Uni / Appello d'esame di Tecnologie Web - 20/10/2008
Creative Commons License

Torna alla pagina di Tecnologie Web


 :: Appello d'esame di Tecnologie Web - 20/10/2008 ::

Esercizio 1

Considerate il seguente frammento XML:

<Contacts> 
  <Person Firstname="John"  
   Lastname="Smith"  
   Birthday="19650302"  
   Company="IBM"  
   Position="CEO"  
   Email="jsmith@ibm.com"/> 

  <Person  
   Firstname="Tom"  
   Lastname="Dunne"  
   Company="Today FM"  
   Email="tom.dunne@todayfm.com"/> 
</Contacts>

1.a Scrivete un frammento XML che contenga gli stessi dati ma non utilizzi gli attributi per contenerli.

SOLUZIONE

<contacts>
  <person>
         <firstname>John</firstname>
         <lastname>Smith</lastname>
         <birthday>19650302</birthday>
         <company>IBM</company>
         <position>CEO</position>
         <email>jsmith@ibm.com</email>
  </person>
  <person>
         <firstname>Tom</firstname>
         <lastname>Dunne</lastname>
         <company>Today FM</company>
         <email>tom.dunne@todayfm.com</email>
  </person>
</contacts>

1.b Scrivete due XML Schema: uno per validare il presente frammento ed uno per validare il nuovo frammento da voi prodotto.

SOLUZIONE

XML SCHEMA per il testo originale:

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified">
   <xsd:element name="Contacts">
     <xsd:complexType>
        <xsd:sequence>
           <xsd:element name="Person"
                        maxOccurs="unbounded"
                        minOccurs="1">
             <xsd:complexType>
              <xsd:attribute name="Firstname" type="xsd:string"/>
              <xsd:attribute name="Lastname" type="xsd:string"/>
              <xsd:attribute name="Birthday" type="xsd:int"/>
              <xsd:attribute name="Company" type="xsd:string"/>
              <xsd:attribute name="Position" type="xsd:string"/>
              <xsd:attribute name="Email" type="xsd:string"/>
             </xsd:complexType>
           </xsd:element>
        </xsd:sequence>
     </xsd:complexType>
   </xsd:element>
</xsd:schema>

XML SCHEMA per il testo modificato:

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified">

  <xsd:element name="contacts">
    <xsd:complexType>
      <xsd:sequence>
          <xsd:element ref="person"
                       minOccurs="1"
                       maxOccurs="unbounded">
          </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="person">
    <xsd:complexType>
      <xsd:sequence>
          <xsd:element name="firstname" type="xsd:string"/>
          <xsd:element name="lastname" type="xsd:string"/>
          <xsd:element name="birthday" type="xsd:int" minOccurs="0"/>
          <xsd:element name="company" type="xsd:string"/>
          <xsd:element name="position" type="xsd:string" minOccurs="0"/>
          <xsd:element name="email" type="xsd:string"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

</xsd:schema>

Esercizio 2

Considerate il seguente frammento XML:

<?xml version="1.0"?> 
<!DOCTYPE BOOKLIST [ 
<!ENTITY test "testing 123"> 
<!ENTITY hyphen "&#8208;"> 
]> 

<BOOKLIST><!-- test comment --> 
<BOOKS> 
  <ITEM TYPE="PAPERBACK" CAT='S' > 
      <TITLE>Number &hyphen; the Language of Science &test;</TITLE> 
      <AUTHOR><![CDATA[Smith & Jones]]></AUTHOR> 
      <PRICE>&#8364;5.95</PRICE> 
      <QUANTITY>3</QUANTITY> 
      <REVIEW/> 
 </ITEM> 
</BOOKS> 
</BOOKLIST> 

2.a Spiegate se si tratta di un frammento ben formato oppure se sono presenti errori.

SOLUZIONE

Il frammento di codice è ben formato perché:

2.b Spiegate il ruolo ed il funzionamento delle entities e dei caratteri speciali nello standard XML.

SOLUZIONE

Un'entità è un modo per definire singoli blocchi di informazioni. Faccio riferimento ad entità esterne o interne per includerle in documenti.
Le entità vengono definite tramite la seguente sintassi:

<!ENTITY nomeEntità "testoDaSostituireAllEntità">

Una volta che l'entità viene definita è possibile utilizzarla in qualsiasi punto del documento tramite &nomeEntità;.

Esempio:

<!ENTITY super "supercalifragilistichespiralidoso">

Se per caratteri speciali intende le referenze ad entità queste servono per fare in modo che il parser interpreti determinati caratteri come desideriamo noi. Ad esempio inseriamo al posto di < la referenza &alt; perché altrimenti il parser lo interpreterebbe come inizio di un tag. Quindi se dobbiamo inserire in un testo dei caratteri che il parser potrebbe interpretare in modo scorretto li dobbiamo sottoporre a escape.

Esercizio 3

3.a Discutete le diverse funzionalità di un linguaggio di Marcatura (Markup).

SOLUZIONE

Per markup si intende: ogni mezzo per rendere esplicita una particolare interpretazione di un testo. Ex: aggiunte al testo scritto che permettono di renderlo più fruibile.
Il markup rende quindi il testo più leggibile e permette di specificare ulteriori usi del testo.
I linguaggi di markup sono i linguaggi più opportuni per strutturare e marcare i documenti in maniera indipendente dall'applicazione, favorendo la riusabilità, la flessibilità e l'apertura ad applicazioni complesse.
I TAG(etichette) sono marcatori che identificano porzioni di testo, questo permette di identificare e processare le porzioni di testo contrassegnate da una certa marcatura.
Le caratteristiche principali di un linguaggio di markup come HTML sono:

3.b Spiegate le differenze tra la versione 1.0 e la versione 1.1 di HTTP.

SOLUZIONE

Indipendentemente dalla versione e modalità, HTTP è un protocollo stateless, cioè senza gestione dello stato. Non mantiene memoria tra una richiesta e l'altra.
Versione HTTP 1.0:

Caratteristiche Basic Authentication Scheme: il client si autentica rispetto ad un server attraverso User ID e Password che vengono inviate come un'unica stringa, separate da : e codificate in base64 come parametri dell'Header Field Authorization. La password passa in chiaro ogni volta che è necessario richiedere quella risorsa.

Versione HTTP 1.1:

Caratteristiche Digest Authentication Scheme: aumenta la sicurezza dell'autenticazione HTTP, poiché permette l'invio della password in modo cifrato. I componenti fondamentali sono: una funzione di hash non invertibile(MD5) per impedire che il contenuto codificato possa essere decodificato; un valore casuale(nonce) definito dal server e comunicato al client.

Esercizio 4

Cosa si intende per servlet mapping? Quali parametri richiede? Mostrare e spiegare un paio di esempi con formati diversi. .

SOLUZIONE

Il servlet-mapping è un elemento che fa parte del descrittore del deployment web.xml che deve contenere tutte le definizioni necessarie per l'applicazione tra cui:

servlet-mapping
La servlet-mapping quindi associa una URL alla servlet.
Richiede:

Esempi:

Esercizio 5

Servlet e JSP. Confrontare queste due tecnologie, specificando il rapporto e le differenze esistenti.

SOLUZIONE

Sono tecnologie complementari per la produzione di contenuti dinamici.
Il funzionamento delle JSP è simile a quello delle Servlet.
Le JSP sono codice HTML + frammenti di codice Java, mentre le Servlet sono formate solo da codice Java.
Il container esegue automaticamente il deploy della JSP con la corrispondente URL.
Ogni JSP inoltre viene automaticamente tradotta in Servlet dal container, ciò che viene eseguito è sempre una Servlet, ma il codice Java è prodotto automaticamente dal container.

Esercizio 6

Spiegare il funzionamento e commentare dettagliatamente il seguente pezzo di codice (loop.jsp).

<%@ page language="java" contentType="text/html" %> 
<html> 
<body bgcolor="white"> 
 <form action="loop.jsp"> 
    <input type="checkbox" name="fruits" value="Apple">Apple<br> 
  <input type="checkbox" name="fruits" value="Banana">Banana<br> 
    <input type="checkbox" name="fruits" value="Orange">Orange<br> 
  <input type="submit" value="Enter"> 
 </form> 
<% 
  String[] picked = request.getParameterValues("fruits"); 
  if (picked != null && picked.length != 0) { 
%> 

You picked the following fruits: 

<ul> 
<% 
  for (int i = 0; i < picked.length; i++) { 
  out.println("<li>" + picked[i]); 
 } 
%> 
</ul> 
<% } %> 
</body> 
</html>
  1. Cos’è uno scriptlet?
  2. Mostrare un esempio di schermata di output.

SOLUZIONE

Questo pezzo di codice genera una pagina jsp con contenuto HTML in cui vengono visualizzate delle checkbox con il nome di alcuni frutti e viene chiesto di scegliere tra essi. Poi le scelte effettuate vengono passate ad un array di stringhe tramite il comando getParameterValues. Con un if viene controllato se è stato scelto qualcosa e tramite un ciclo for le scelte vengono stampate a video.
Dopo aver premuto il pulsante di Enter presente nella pagina vengono poi visualizzati i frutti scelti. La form ha come action la pagina stessa (loop.jsp).

  1. Gli scriptlet sono frammenti di codice java definiti con la sintassi <% codice %>. Non richiedono dichiarazioni di classi o metodi e sono adatti per inserire cicli, condizioni e comunque funzionalità semplici, come nel codice sopra che c'è un ciclo for

Output dopo aver scelto Banana e premuto il bottone della form.


Torna alla pagina di Tecnologie Web

(Printable View of http://www.swappa.it/wiki/Uni/TemiEsameTW11)