Esame TW-T

Transcript

Esame TW-T
Tecnologie Web T
13 Giugno 2014 – Compito
Tempo a disposizione: 3 ore
La soluzione comprende la consegna elettronica dei seguenti file mediante l’apposito applicativo Web esamix (http://esamix.labx):
TASI.zip
Concorrenza.zip
Cinema.zip
file zip contenente il sorgente java/class e pagine Web per punto 1
file zip contenente il sorgente java/class e pagine Web per punto 2
file zip contenente il sorgente java/class e file XML per punto 3
Ogni file .zip consegnato DEVE CONTENERE TUTTI e SOLI i file creati/modificati
e/o ritenuti importanti in generale ai fini della valutazione (ad esempio, descrittori, risorse statiche o dinamiche, codice Java e relativi .class, ecc.) e NON dell'intero progetto
N.B. Per superare la prova scritta di laboratorio ed essere ammessi all’orale, è necessario totalizzare almeno 18 punti (su un totale disponibile di 33), equamente distribuiti sui tre esercizi, ovvero almeno 6 punti sul primo esercizio, 6 punti sul secondo esercizio e 6 punti sul terzo esercizio
Studenti in debito di Tecnologie Web L-A
Viene richiesto lo svolgimento dei soli esercizi 1 (17 punti) e 2 (16 punti). Tempo a disposizione: 2 ore.
I 18 punti necessari per l’ammissione all’orale sono così distribuiti: almeno 10 punti sul
primo esercizio e almeno 8 punti sul secondo
ESERCIZIO 1 (11 punti)
Si realizzi un’applicazione Web che permetta a un utente di effettuare il pagamento TASI
per i suoi N immobili (con N determinato dinamicamente), basata su tecnologie Java servlet
e JSP.
In particolare, l’applicazione dovrà avere una pagina iniziale start che richieda all’utente nome e cognome (considerati identificatori univoci), l’ammontare da pagare per l’immobile iesimo e un pulsante per caricare tale dato parziale; nel caso di successivi utilizzi della pagina
start all’interno della stessa sessione utente, il nuovo importo inserito sarà da intendersi per
l’immobile (i+1)-esimo.
In risposta all’inserimento di ogni importo, deve essere restituita una pagina di risposta (tramite tecnologia JSP o servlet indifferentemente) con tutti gli importi parziali già inseriti per
quell’utente e il totale corrente da pagare. La pagina di risposta deve inoltre includere un pulsante per finalizzare il pagamento: una volta richiesta tale finalizzazione, il totale dell’importo
pagato (unitamente a nome-cognome utente) deve essere salvato in modo definitivo nel file
TASI.txt lato servitore e la sessione corrispondente deve essere invalidata.
1/2
Tecnologie Web T
13 Giugno 2014 – Compito
ESERCIZIO 2 (11 punti)
Si realizzi un’applicazione Web per il conteggio, “più o meno concorrente”, delle occorrenze
di un carattere all’interno di un file memorizzato sul Web server, basata su tecnologie Java
servlet, Javascript e AJAX.
In particolare, l’applicazione dovrà avere una pagina iniziale conta.html in cui l’utente possa
inserire un carattere alfanumerico da cercare e la modalità concorrente di ricerca (vedi sotto).
Il carattere deve essere alfabetico minuscolo oppure una cifra compresa fra 1 e 9 estremi inclusi (si validi l’input inserito tramite interazione Javascript locale). Il file da processare è di
nome prefissato file.txt, di lunghezza nota (L) e già disponibile nel file system del server
Web. La modalità di ricerca può essere ‘AS1’ (AJAX con una istanza di servlet condivisa da
tutte le richieste), ‘AS2’ (AJAX con una istanza di servlet separata per ogni richiesta) e ‘AP’
(4 richieste AJAX concorrenti verso una sola istanza di servlet, condivisa da tutte le richieste,
ognuna delle quali processerà in questo caso un quarto del file, ad esempio la prima richiesta i
byte [0, L/4)).
In risposta la servlet deve restituire il numero di occorrenze contate nel file o nella porzione di
competenza e il tempo impiegato per effettuare il conteggio, passati in formato JSON; per la
determinazione
del
tempo
impiegato
si
utilizzi
l’invocazione
long
System.currentTimeMillis().
ESERCIZIO 3 (11 punti)
Partendo dalla realtà illustrata nel diagramma UML di seguito riportato, si fornisca una soluzione alla gestione della persistenza basata su Hibernate in grado di “mappare” efficientemente il modello di dominio rappresentato dai JavaBean Cinefilo, Proiezione e Sala con le
corrispondenti tabelle relazionali derivate dalla progettazione logica del diagramma dato.
Nel dettaglio, dopo aver creato da applicazione Java gli schemi delle tabelle all’interno del
proprio schema nel database TW_STUD di DB2 (esplicitando tutti i vincoli opportuni), implementato i JavaBean, definito i file XML di mapping e il file XML di properties, si richiede la realizzazione di una classe di prova facente uso delle API Hibernate in grado di:
inserire i) due o più proiezioni tenutesi in sale cinematografiche caratterizzate da nome (es. “Piazza Maggiore”) e capienza (es. 150) e ii) due o più spettatori che hanno
preso parte alle proiezioni inserite al punto i);
verificare, per ogni proiezione, i) quanti spettatori vi hanno partecipato e ii) quanti
posti liberi sono rimasti rispetto alla capienza della sala in cui si è svolta la proiezione;
il tutto, mediante uso di ID surrogati e opportuna gestione delle transazioni.
N.B. La soluzione deve sfruttare i mapping M-N e 1-N specificati e propendere per il caricamento indicato nel diagramma UML. Ogni ulteriore scelta da parte dello studente deve essere opportunamente giustificata con commenti nel codice.
2/2