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

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.TemiEsameTW11 History

Hide minor edits - Show changes to markup

Changed line 286 from:

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 vengono passate come parametri a un ciclo for scritto in java che li inserisce in un array di stringhe.\\

to:

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

Changed line 216 from:

La servlet-mapping è associata al descrittore del deployment WEB.XML, che deve contenere tutte le definizioni necessarie per l'applicazione tra cui:

to:

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:

Changed line 192 from:

Indipendentemente dalla versione e modalità, HTTP è un protocollo stateless, cioè senza gestione dello stato.\\

to:

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

Changed line 194 from:
  • il protocollo utilizza connessioni non persistenti, quindi ad ogni richiesta del client il server apre una nuova connessione. Questo significa che ogni sessione TCP viene chiusa dopo che il server ha risposto alla richiesta del client.
to:
  • il protocollo utilizza connessioni non persistenti, quindi ad ogni richiesta del client il server apre una nuova connessione TCP. Questo significa che ogni sessione TCP viene chiusa dopo che il server ha risposto alla richiesta del client.
Added line 197:
  • Per mantenere aperta la connessione TCP si può settare il campo header connection a keep-alive.
Changed lines 205-209 from:

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 (nonce) definito dal server e comunicato al client.

to:

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.

  • ci sono due modalità di invio delle richieste al server:
    • con pipeline: il client invia una richiesta al server ogni volta che trova un riferimento ad un oggetto durante il parsing.
    • senza pipeline: il client invia una nuova richiesta al server dopo che è stata ricevuta la risposta alla precedente richiesta.
      ovviamente è migliore la modalità con pipeline, altrimenti se una risorsa non è disponibile si rischia di rimanere bloccati
Changed lines 286-287 from:
to:
Changed line 288 from:

\\

to:
Changed lines 286-287 from:
to:
Changed lines 286-288 from:
to:


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

Changed lines 288-289 from:

WARNING
Disegnare??

to:
Changed lines 286-287 from:
to:
Changed lines 286-288 from:
  1. Disegnare??
to:

WARNING
Disegnare??

Deleted line 281:

La form ha come action la pagina stessa.\\

Changed lines 284-285 from:
to:

La form ha come action la pagina stessa (loop.jsp).

Changed line 290 from:
to:
Changed lines 281-282 from:

Questo pezzo di codice genera una pagina jsp con contenuto HTML in cui vengono visualizzate delle checkbox con il nome di alcuni frutti e vieneb chiesto di scegliere tra essi. Poi le scelte vengono passate come parametri a un ciclo for scritto in java che li inserisce in un array di stringhe.\\

to:

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 vengono passate come parametri a un ciclo for scritto in java che li inserisce in un array di stringhe.
La form ha come action la pagina stessa.\\

Changed line 285 from:
  1. Disegnare??
to:
  1. Disegnare??
Changed lines 281-285 from:
to:

Questo pezzo di codice genera una pagina jsp con contenuto HTML in cui vengono visualizzate delle checkbox con il nome di alcuni frutti e vieneb chiesto di scegliere tra essi. Poi le scelte vengono passate come parametri a un ciclo for scritto in java che li inserisce in un array di stringhe.
Dopo aver premuto il pulsante di Enter presente nella pagina vengono poi visualizzati i frutti scelti.

  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
  2. Disegnare??
Added lines 241-281:

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

Added lines 69-76:
             <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>
Deleted lines 78-83:
        <xsd:attribute name="Firstname" type="xsd:string"/>
        <xsd:attribute name="Lastname" type="xsd:string"/>
        <xsd:attribute name="Birthday" type="xsd:date"/>
        <xsd:attribute name="Company" type="xsd:string"/>
        <xsd:attribute name="Position" type="xsd:string"/>
        <xsd:attribute name="Email" type="xsd:string"/>
Added lines 84-113:

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

Changed lines 112-114 from:

2.a Spiegate se si tratta di un frammento ben formato oppure sono presenti errori.
2.b Spiegate il ruolo ed il funzionamento delle entities e dei caratteri speciali nello standard XML.

to:

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

Changed lines 116-120 from:

Esercizio 3

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

to:

Il frammento di codice è ben formato perché:

  • la dichiarazione è corretta
  • le entità sono dichiarate correttamente
  • i TAG sono chiusi tutti in modo corretto rispettando l'ordine e le regole XML
  • il TAG <REVIEW/> è vuoto ma è corretto perché viene chiuso subito
  • i commenti sono corretti
  • inoltre dato in pasto ad un programma questo dice che è ben formato :D

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.

Changed lines 56-57 from:

XML SCHEMA per il testo originale:

to:

XML SCHEMA per il testo originale:

Changed line 82 from:

XML SCHEMA per il testo modificato:

to:

XML SCHEMA per il testo modificato:

Changed lines 56-58 from:
to:

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:element>
        </xsd:sequence>
        <xsd:attribute name="Firstname" type="xsd:string"/>
        <xsd:attribute name="Lastname" type="xsd:string"/>
        <xsd:attribute name="Birthday" type="xsd:date"/>
        <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:schema>

XML SCHEMA per il testo modificato:


Changed line 47 from:
         <Email>tom.dunne@todayfm.com</email>
to:
         <email>tom.dunne@todayfm.com</email>
Changed lines 33-37 from:
to:
<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>
Changed lines 29-31 from:

1.a Scrivete un frammento XML che contenga gli stessi dati ma non utilizzi gli attributi per contenerli.
1.b Scrivete due XML Schema: uno per validare il presente frammento ed uno per validare il nuovo frammento da voi prodotto.

to:

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

Added lines 33-46:

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

SOLUZIONE

Changed line 72 from:

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

to:

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

Changed lines 8-15 from:

Considerate il seguente frammento XML:

Esercizio 3

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

to:

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.
1.b Scrivete due XML Schema: uno per validare il presente frammento ed uno per validare il nuovo frammento da voi prodotto.

SOLUZIONE

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 sono presenti errori. 2.b Spiegate il ruolo ed il funzionamento delle entities e dei caratteri speciali nello standard XML.'''

SOLUZIONE

Added lines 9-10:
Added lines 6-9:

Esercizio 1

Considerate il seguente frammento XML:

Added lines 12-13:

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

Changed lines 15-18 from:

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.

WARNING
da completare

to:

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:

  • ipertestualità
  • etichettatura
  • multimedialità
Changed lines 12-14 from:
to:

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.

Changed line 16 from:

manca la soluzione

to:

da completare

Changed lines 42-43 from:

servlet-mapping La servlet-mapping quindi associa una URL alla servlet.\\

to:

servlet-mapping
La servlet-mapping quindi associa una URL alla servlet.\\

Changed lines 45-46 from:
  • <servlet-name>: elemento che identifica il nome della servlet precedentemente dichiarata.
  • <url-pattern>: elemento che definisce il pattern usato per determinare quale servlet debba essere invocata.\\
to:
  • <servlet-name>: elemento che identifica il nome della servlet precedentemente dichiarata.
  • <url-pattern>: elemento che definisce il pattern usato per determinare quale servlet debba essere invocata.\\
Changed lines 48-49 from:
  • Match con pattern esatto: il pattern inizia con /, e può contenere di seguito qualunque cosa. Usato per mapping uno-a-uno per una richiesta ad una specifica servlet.
  • Match per estensione: *.extension. Tutte le URL che terminano con una specifica estensione sono indirizzate ad una specifica servlet.
to:
  • Match con pattern esatto: il pattern inizia con /, e può contenere di seguito qualunque cosa. Usato per mapping uno-a-uno per una richiesta ad una specifica servlet.
  • Match per estensione: *.extension. Tutte le URL che terminano con una specifica estensione sono indirizzate ad una specifica servlet.
Changed line 52 from:
  • path mapping: / e termina con /*. In mezzo può esserci qualunque cosa. Serve per indirizzare ad una specifica servlet tutto ciò che si trova in una certa directory.\\
to:
  • path mapping: inizia con "/" e termina con "/*". In mezzo può esserci qualunque cosa. Serve per indirizzare ad una specifica servlet tutto ciò che si trova in una certa directory.\\
Changed line 57 from:
  • servlet di default: /. Viene invocata tutte le volte che non viene trovato un match per una URL.
to:
  • servlet di default: "/". Viene invocata tutte le volte che non viene trovato un match per una URL.
Changed lines 52-53 from:
  1. path mapping: / e termina con /*. In mezzo può esserci qualunque cosa. Per indirizzare ad una specifica servlet tutto ciò che si trova in una certa directory.

"/myservlet/*": è possibile invocare la servlet con qualunque URL contenente /myservlet/.

to:
  • path mapping: / e termina con /*. In mezzo può esserci qualunque cosa. Serve per indirizzare ad una specifica servlet tutto ciò che si trova in una certa directory.
    "/myservlet/*": è possibile invocare la servlet con qualunque URL contenente /myservlet/
Changed line 57 from:
  1. servlet di default: /. Viene invocata tutte le volte che non viene trovato un match per una URL.
to:
  • servlet di default: /. Viene invocata tutte le volte che non viene trovato un match per una URL.
Changed lines 52-57 from:
to:
  1. path mapping: / e termina con /*. In mezzo può esserci qualunque cosa. Per indirizzare ad una specifica servlet tutto ciò che si trova in una certa directory.

"/myservlet/*": è possibile invocare la servlet con qualunque URL contenente /myservlet/.

  • http://localhost:8080/myservlet/
  • http://localhost:8080/myservlet/onemorelevel/
  1. servlet di default: /. Viene invocata tutte le volte che non viene trovato un match per una URL.
Changed lines 46-47 from:
  • <url-pattern>: elemento che definisce il pattern usato per determinare quale servlet debba essere invocata.
to:
  • <url-pattern>: elemento che definisce il pattern usato per determinare quale servlet debba essere invocata.
    Ci sono due formati possibili:
    • Match con pattern esatto: il pattern inizia con /, e può contenere di seguito qualunque cosa. Usato per mapping uno-a-uno per una richiesta ad una specifica servlet.
    • Match per estensione: *.extension. Tutte le URL che terminano con una specifica estensione sono indirizzate ad una specifica servlet.

Esempi:

Changed lines 39-40 from:

WARNING
manca la soluzione

to:

La servlet-mapping è associata al descrittore del deployment WEB.XML, che deve contenere tutte le definizioni necessarie per l'applicazione tra cui:

  • lista di servlet
  • URL associata all'invocazione di ogni servlet, che otteniamo tramite l'elemento

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

  • <servlet-name>: elemento che identifica il nome della servlet precedentemente dichiarata.
  • <url-pattern>: elemento che definisce il pattern usato per determinare quale servlet debba essere invocata.
Added lines 41-51:

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.

Added lines 12-14:

WARNING
manca la soluzione

Changed line 39 from:

WARNING\\

to:

WARNING\\

Added lines 1-40:

(:title Appello d'esame di Tecnologie Web - 20/10/2008:) Torna alla pagina di Tecnologie Web


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

Esercizio 3

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

SOLUZIONE

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.
Versione HTTP 1.0:

  • il protocollo utilizza connessioni non persistenti, quindi ad ogni richiesta del client il server apre una nuova connessione. Questo significa che ogni sessione TCP viene chiusa dopo che il server ha risposto alla richiesta del client.
  • ogni richiesta HTTP è preceduta dal 3-way handshake TCP per stabilire una connessione.
  • Overhead molto elevato considerando che normali connessioni HTTP sono molto brevi e frequenti.
  • viene utilizzata la modalità di autenticazione Basic Authentication Scheme.

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:

  • il protocollo utilizza connessioni persistenti, quindi richieste e risposte successive fluiscono all'interno della stessa connessione TCP, che non viene chiusa dal server. La connessione TCP viene chiusa dal server a seguito di un time out di inattività.
  • introdotti i cookie(file testuale contenente attributi) per poter simulare lo stato di una sessione HTTP. Vengono scambiati tra client e server e contengono sempre almeno un identificatore della sessione del particolare utente. Possono servire per informazioni commerciali(pagine visitate, prodotti cercati...) e per poter effettuare autenticazione senza ripetere il login.
  • viene utilizzata la modalità di autenticazione Digest Authentication Scheme.

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

WARNING
manca la soluzione


Torna alla pagina di Tecnologie Web