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