Università di Pisa Percorsi Abilitanti Speciali (PAS) Realizzazione di una chat su protocollo HTTP Elaborato presentato per il conseguimento dell’Abilitazione all’insegnamento nella Classe di concorso A042 – Informatica Referente: Prof. Roberto GROSSI Relatore: Prof. Laura RICCI Candidato/a: Rosa FEO (matr. 514896) Anno Accademico 20013/14 Feo R. - Realizzazione di chat su protocollo HTTP 2 ________________________________________________________________________________________________________ INDICE Introduzione.......................................................................................................................................................3 Classe.................................................................................................................................................................4 Prerequisiti.........................................................................................................................................................4 Obiettivi.............................................................................................................................................................5 Obiettivi cognitivi.........................................................................................................................................5 Obiettivi procedurali.....................................................................................................................................5 Percorso.............................................................................................................................................................5 Prima lezione.................................................................................................................................................5 Seconda lezione.............................................................................................................................................6 Terza lezione.................................................................................................................................................7 Quarta lezione...............................................................................................................................................8 Quinta lezione.............................................................................................................................................10 Sesta lezione................................................................................................................................................10 Valutazione.......................................................................................................................................................11 Conclusioni......................................................................................................................................................11 Bibliografia......................................................................................................................................................12 Allegato A - Il questionario..............................................................................................................................12 Allegato B - stile.css........................................................................................................................................13 Allegato C - index.jsp......................................................................................................................................14 Allegato D - post.jsp........................................................................................................................................16 Allegato E – Il file di log.................................................................................................................................16 Feo R. - Realizzazione di chat su protocollo HTTP 3 ________________________________________________________________________________________________________ Introduzione La chat è uno strumento di comunicazione molto amata dai ragazzi che la usano con particolare abilità, mentre è spesso considerata dagli adulti uno strumento di disturbo o anche pericoloso. La comunicazione messa in atto dalla chat è di tipo sincrono ed ha delle potenzialità didattiche molto interessanti: • gli alunni possono concentrare la loro attenzione su tutto ciò che succede nella lezione in tempo reale perché il testo della conversazione è un file che possiamo salvare e leggere poi con calma; • costringe i ragazzi ad essere chiari e precisi nel lessico; • ogni intervento nella chat deve essere aderente al tema che si sta trattando; • necessita di un protocollo comportamentale e di conduzione che mette in gioco importanti competenze organizzative; • i ragazzi stessi devono darsi delle regole e dei compiti e bisogna fare in modo che questi vengano rispettati. Penso che sia importante, in un corso di reti, dare la possibilità ai ragazzi di saper implementare una chat, di conoscerne tutte le peculiarità e dare loro la possibilità di guardare uno strumento, tanto potente quanto semplice da usare, da un altro punto di vista. In questa unità didattica sarà utilizzato il metodo che coinvolge gli studenti in un lavoro di gruppo per raggiungere un fine comune, il cooperative learning. I membri del gruppo fanno affidamento gli uni sugli altri per raggiungere lo scopo. Se qualcuno nel gruppo non fa la propria parte, anche gli altri ne subiscono le conseguenze. Gli studenti si devono sentire responsabili del loro personale apprendimento e dell'apprendimento degli altri membri del gruppo. Tutti gli studenti di un gruppo devono rendere conto sia della propria parte di lavoro sia di quanto hanno appreso. Ogni studente, nelle verifiche, dovrà dimostrare personalmente quanto ha imparato. Benché parte del lavoro di gruppo possa essere divisa e svolta individualmente, è necessario che i componenti il gruppo lavorino in modo interattivo, verificando gli uni con gli altri il ragionamento fatto, le Feo R. - Realizzazione di chat su protocollo HTTP 4 ________________________________________________________________________________________________________ conclusioni e le difficoltà confrontandosi continuamente. In questo modo si ottiene anche un altro vantaggio, il peer toutoring. Gli studenti, periodicamente valutano l'efficacia del loro lavoro e il funzionamento del gruppo, e individuano i cambiamenti necessari per migliorarne l'efficienza. Sarà inoltre utilizzata la didattica laboratoriale che meglio incoraggia la ricerca e la progettualità, coinvolge gli alunni nel pensare, realizzare, valutare attività vissute in modo condiviso e partecipato con gli altri. Lo scopo dell'apprendimento va fondato sui bisogni propri del soggetto che apprende e la valenza educativa delle attività sta nelle connessioni e nella flessibilità di percorsi riconosciuti dall’alunno come significativi per sé e spendibili nella realtà. Classe In base ai programmi ministeriali vigenti, si suppone che il modulo venga affrontato nella classe 5 a di un Istituto Tecnico Commerciale con indirizzo Programmatori (Progetto Mercurio). Si suppone di operare in una classe composta da 20 alunni. L'unità didattica viene svolta all'inizio del secondo quadrimestre. Poiché nella classe in cui si suppone di operare sono previste 4 ore settimanali di Informatica, lo svolgimento dell'unità didattica richiederà circa un mese. Prerequisiti Per poter affrontare gli argomenti previsti dal modulo in oggetto, gli alunni devono essere in possesso dei seguenti prerequisiti: Conoscenza della struttura a livelli dell'architettura di rete Conoscenza del livello applicazioni Conoscenza del World Wide Web Sapere come è fatta una URL e cosa definisce Conoscenze di base della programmazione lato client: HTML e javascript Feo R. - Realizzazione di chat su protocollo HTTP 5 ________________________________________________________________________________________________________ Obiettivi Obiettivi cognitivi • Conoscere le caratteristiche dell'http • Conoscere le i metodi Get e Post dell'http • Conoscere la problematica dello stato nell'http • Saper usare in modo consapevole una chat Obiettivi procedurali Saper usare il framework Jquery Conoscere la programmazione lato server Sapere predisporre l'ambiente di sviluppo con Tomcat Saper usare le jsp Percorso Prima lezione Alla classe viene somministrato il questionario riportato in Allegato A. Dopo che i ragazzi hanno compilato e consegnato il questionario si apre una discussione sulla chat, prima da un punto di vista dell'uso che se ne fa e poi da un punto di vista tecnico e implementativo. Il numero di ragazzi in età adolescenziale che utilizza applicazioni per chattare sui dispositivi che hanno a disposizione (computer e smartphone) è molto alto, ma spesso non sanno cosa tali applicazioni possono fare con i loro dati personali. Si fa notare alla classe che l’unico modo per prevenire eventuali abusi e usi non appropriati dei dati personali, è di leggere con attenzione le condizioni di utilizzo delle applicazioni e intervenire nel modo più adeguato nella configurazione del proprio account. Nel farlo bisogna tenere conto del fatto che alcune applicazioni, come WhatsApp, potrebbero modificare in autonomia le configurazioni di sistema del dispositivo, raccogliere informazioni sulle funzionalità e servizi usati, leggere i dettagli personali presenti sul profilo dell’utente e quelli relativi ai contatti con cui si è collegati, accedere ad informazioni legate alla registrazione audio e a quelle collegate alle telefonate. Bisogna invitare i ragazzi a proteggere meglio le loro identità e attività digitali. L’approccio da suggerire è di usare le chat come se tutto Feo R. - Realizzazione di chat su protocollo HTTP 6 ________________________________________________________________________________________________________ ciò che viene condiviso possa essere di pubblico dominio e di agire di conseguenza evitando testi, messaggi ma soprattutto foto compromettenti o che si potrebbero prestare ad usi impropri. Le chat sono considerate più attinenti alla sfera del divertimento e del tempo libero che non a quella degli strumenti di apprendimento ma possono avere degli aspetti che arricchiscono la didattica. Essa è un ambiente ideale per lo brainstorming in cui l'insegnante offre lo spunto iniziale favorendo la condivisione di idee da parte di ogni alunno per poi scorrere la conversazione o analizzare il file di log e valutare i singoli contributi. La discussione con la classe viene poi spostata sugli aspetti tecnici e viene proposto ai ragazzi di implementare una chat in rete utilizzando strumenti che già conoscono e imparandone di nuovi. Seconda lezione Viene predisposto l'ambiente per lo sviluppo della chat. L'implementazione presuppone conoscenze di base di HTML e java, verrà usato il framework jQuery e la tecnologia JSP di programmazione Web in java, dunque ai ragazzi vengono forniti la libreria jquery ( jquery-1.11.1.js) e il file di stile (stile.css in Allegato B). Con l'aiuto dell'insegnante vengono implementate le funzioni associate agli eventi e i metodi necessari: • evento .click(function () ) consente di definire il comportamento degli elementi su cui è applicato; nel nostro caso è applicato al tasto Invia per sottomettere il testo scritto, e al link Esci per uscire dalla chat; • metodo .ajax() esegue una richiesta http asincrona; • metodo .html(StringHtml) consente di impostare il contenuto html dell'elemento a cui è applicato; • metodo .attr(attributeName) imposta l'attributo all'elemento a cui è associato; • metodo .animate() esegue un'animazione personalizzata, nel nostro caso deve scorrere la conversazione presente nel log fino a mostrare nella textarea gli ultimi messaggi sottomessi; • metodo .val() è usato per ottenere il nome dell'utente al momento della login o il messaggio, inserito nel textfield, prima della sua sottomissione; • metodo .post(url [, data ] [, success ] [, dataType ] ) carica i dati dal server utilizzando una richiesta Post di Http. Feo R. - Realizzazione di chat su protocollo HTTP 7 ________________________________________________________________________________________________________ L'insegnante suggerisce l'uso dei metodi get e post in determinate posizioni rimandando la spiegazioni degli stessi alle lezioni successive. Ai ragazzi viene chiesto di completare a casa le funzioni e i metodi impostati in classe. Terza lezione Si completa la scrittura del file index.jsp (Allegato C) e si scrive il file post.jsp (Allegato D). Il file post.jsp deve contenere il codice jsp che implementa l'acquisizione dei messaggi inviati dagli utenti. Tali messaggi sono composti da: ora, nome dell'utente e testo del messaggio e sono salvati all'interno del file di log, log.html Allegato E. Dopo aver completato l'implementazione della chat inizia la fase di test in cui si verificano le funzionalità della stessa e si correggono eventuali errori. In questo momento vengono spiegate alcune regole per chattare: • non scrivere messaggi troppo lunghi; • attendere la risposta ad una eventuale domanda prima di intervenire nuovamente; • non dare informazioni e non fare domande non pertinenti all'argomento della chat; • evitare accese discussioni virtuali (flame) che danneggiano l'armonia della chat; • evitare di scrivere con le maiuscole, perché in chat scrivere con le maiuscole vuol dire urlare; • non ripetere le stesse frasi più volte (flood). Feo R. - Realizzazione di chat su protocollo HTTP 8 ________________________________________________________________________________________________________ Quarta lezione La lezione inizia con la spiegazione frontale degli aspetti di base del protocollo HTTP. HTTP è un protocollo mediante il quale avviene la comunicazione tra un browser e un web server per la fornitura di un documento multimediale; è specifico del livello applicazione ed utilizza i servizi del protocollo TCP del livello trasporto. In HTTP esistono due ruoli specifici: il client attiva la connessione e richiede dei servizi; il server accetta la connessione, nel caso identifica il richiedente, risponde alla richiesta e alla fine chiude la connessione. Tale protocollo è di tipo stateless poiché ogni richiesta è indipendente da quelle precedenti e si conclude al momento della chiusura della connessione. Il server web quindi non ha memoria di quanto comunicato precedentemente con un certo client: per questo motivo, per realizzare applicazioni web complesse, sono stati sviluppati meccanismi a livello superiore come i cookies per costruire sessioni e permettere al server di recuperare informazioni riguardanti un certo client. L'http lavora per creare, trasferire e gestire dei dati formattati secondo il linguaggio HTML da un sistema ad un altro in maniera indipendente dal sistema stesso. Con l'HTTP 1.1, rispetto all'HTTP 1.0, è stata introdotta la possibilità di specificare coppie multiple di richiesta e risposta nella stessa connessione. Feo R. - Realizzazione di chat su protocollo HTTP 9 ________________________________________________________________________________________________________ Nell'HTTP 1.0 la non persistenza delle connessioni comportava l'apertura e la chiusura della connessione (con conseguente allocazione e deallocazione di buffers) ad ogni richiesta. I metodi principali dell'HTTP: • GET è il metodo più frequente, ed è quello che viene attivato facendo click su un link ipertestuale di un documento HTML, o specificando un URL nell’apposito campo di un browser. Questo metodo pone problemi di sicurezza, in quanto il passaggio dei dati nella query string è fatto in modo tale che quando viene prodotta un'URL, sulla base dell'input dell'utente, questa può essere visibile a chiunque può controllare le fasi della navigazione. • POST serve per trasmettere delle informazioni dal client al server, ma senza la creazione di una nuova risorsa, viene usato per esempio per sottomettere i dati di una form HTML ad un’applicazione CGI sul server. Il server può rispondere positivamente in tre modi: ◦ 200 Ok: dati ricevuti e sottomessi alla risorsa specificata, dunque è stata data risposta ◦ 201 Created: dati ricevuti, la risorsa non esisteva ed è stata creata ◦ 204 No content: dati ricevuti e sottomessi alla risorsa specificata, dunque non è stata data risposta. Il metodo POST permette di passare informazioni in modo più sicuro, infatti non prevede il passaggio in chiaro dei parametri. La lezione procede con la discussione tramite chat lasciando in sospeso gli argomenti e si chiede ai ragazzi di completare la discussione come compito per casa. Gli spunti offerti dall'insegnante per la discussione in chat sono: • Si fa notare che le richieste Http fatte al server per l'implementazione della chat sono state diverse a seconda della situazione. Abbiamo usato il metodo Get nella prima form utilizzata per inserire il nome dell'utente e notiamo come tutti i parametri del form sono visibili all'interno dell'url. Feo R. - Realizzazione di chat su protocollo HTTP 10 ________________________________________________________________________________________________________ Nel secondo form, quello di sottomissione del testo dei messaggi, è sconsigliabile utilizzare tale metodo perché non è opportuno, per privacy, che il messaggio venga visualizzato all'interno dell'url; inoltre l'url ha una restrizione sulla lunghezza che non consente di sottomettere un testo che superi tale lunghezza. Dunque in questo caso abbiamo utilizzato il metodo Post che non ha restrizioni sulla lunghezza, non è visibile nell'url, i suoi parametri non sono memorizzati all'interno della history del browser. • Si può osservare il traffico di rete tramite la funzionalità del browser “Ispeziona elemento” o tasto F12 dunque analizzare in dettaglio il metodo dell'http usato in ogni situazione. • Nell'implementazione della chat è stato utilizzato il protocollo Http che è stateless. Per quale motivo se chiudo il tab del browser quando lo riapro l'applicazione mi riporta allo stato in cui ero al momento della chiusura? Invece perché se chiudo il browser al riavvio l'applicazione mi propone la pagina iniziale? Quinta lezione Dopo aver concluso la discussione sui metodi dell'http a casa, in questa lezione viene fatto il punto della situazione, si analizzano le tecnologie utilizzate e si discute sull'utilità di un'attività di questo tipo analizzandone i pregi e i difetti. L'insegnante distribuisce una stampa del file di log in modo che ognuno possa avere a disposizione tutti i commenti riguardo l'http e organizzare i propri appunti sull'argomento. Sesta lezione Gli alunni vengono divisi in gruppi. Ad ogni gruppo può essere assegnato uno dei seguenti compiti: • rifare il test iniziale e confrontare le risposte, trarre le proprie conclusioni circa le risposte rimaste invariate e quelle che invece sono diverse. • analizzare il file di log e a partire dai vari interventi redigere una relazione sull'http Feo R. - Realizzazione di chat su protocollo HTTP 11 ________________________________________________________________________________________________________ • analizzare il file di log e relazionare sui contributi di ognuno alla discussione evidenziando le specificità della chat • redigere una relazione sull'implementazione della chat soffermandosi sulle tecnologie usate. Nella lezione successiva ogni gruppo condividerà il proprio lavoro con il resto della classe. Valutazione La fase di valutazione dell’apprendimento è strettamente legata alle fasi di verifica. La valutazione sarà di due tipi: ◦ Formativa: la valutazione formativa avrà lo scopo di osservare, rilevare, verificare le attività degli allievi per porgere gli aiuti ed i sostegni necessari al conseguimento degli obiettivi e per variare, se necessario, gli interventi, così da renderli commisurati alla possibilità di ogni alunno. Nel caso gli obiettivi specifici non risultassero adeguatamente raggiunti da un numero elevato di alunni vengono elaborate opportune attività di recupero. ◦ Sommativa: avviene al termine della unità didattica, sarà utile per dare un giudizio complessivo che terrà conto dell’iter formativo e della maturazione realmente acquisita da ogni singolo alunno, sia in riferimento alle competenze disciplinari acquisite che alle capacità di analisi e di elaborazione conquistate. Conclusioni Questa unità didattica è stata strutturata considerando la motivazione come elemento centrale del processo didattico. Sono stati attivati diversi aspetti motivanti come il divertimento che da entusiasmo agli studenti, l'interazione sociale che include una grande varietà di esperienze di apprendimento cooperativo, ad esempio discussione in piccoli gruppi, peer tutoring, necessità di prendere decisioni e risolvere problemi in modo collettivo. C'è stata tolleranza all'errore, gli errori sono parte inevitabile del processo di apprendimento e costituiscono una opportunità unica per imparare, spesso gli errori portano alla punizione e demoralizzano lo studente. Invece è importante creare un ambiente in cui gli studenti sentono che possono fare errori senza essere indebitamente criticati. La valutazione formativa è stata usata per migliorare il processo di apprendimento fornendo un feedback continuo e sottolineando gli aspetti positivi utili per migliorare in futuro la prestazione degli alunni. Una valutazione fornita solo alla fine di un modulo rischia di essere troppo tardiva per poter essere usata come occasione di miglioramento. Feo R. - Realizzazione di chat su protocollo HTTP 12 ________________________________________________________________________________________________________ Bibliografia KUROSE, James F. ; ROSS, Keith W. : Reti di calcolatori e internet:un approccio top down, Pearson. FAVARETO, Alida: La chat didattica, Pensa Multimedia. FOROUZAN, Behrouz A.; MOSHARRAF, Mosharraf: Reti di calcolatori: un approccio top-down, McGraw-Hill Companies. RICCI, Laura: PAS 2013/14 SISTEMI E RETI DI CALCOLATORI PER L'INSEGNAMENTO - IL LIVELLO DELLE APPLICAZIONI , 28/05/2014 . ARDIZZONE, Paolo; RIVOLTELLA, P. Cesare: Media e tecnologia per la didattica, Vita e Pensiero. Allegato A - Il questionario 1) Con che frequenza chatti? □ Più di una volta al giorno □ Tutti i giorni □ Una o Tre volte la settimana □ Più di una volta al mese 2) Quanto tempo rimani in chat? □ Meno di mezz’ora □ Un’ora □ Più di un’ora □ Non mi accorgo del tempo che passa 3) Da dove chatti? □ Casa □ Scuola □ Internet Point □ Altro(………………………………….) 4) Frequenti sempre la stessa chat? □ Si □ No 5) Quale chat frequenti maggiormente? □ Facebook □ WhatsApp Feo R. - Realizzazione di chat su protocollo HTTP 13 ________________________________________________________________________________________________________ □ Altro(………………………………….) 6) Tieni aperta la finestra della chat mentre fai altro al computer? □ Si □ No 7) In base a quale criterio scegli il tuo nickname? 8) Quali argomenti tratti in chat? 9) In base a quale criterio scegli la persona con cui chattare? 10) Condividi i tuoi problemi in chat? □ Si □ No 11) Se si: quali criteri determinano la scelta dei problemi da condividere? 12) Se no: perché non li condividi in chat? 13) Quali sono i vantaggi delle tue relazioni in chat? 14) Quali sono gli svantaggi delle tue relazioni in chat? 15) Quali sono gli argomenti che più spesso affronti nelle relazioni esterne alla chat? 16) Riferisci informazioni riservate che ti riguardano o che riguardano altri in chat? □ Si □ No 17) Se si: quali criteri determinano la scelta di riferire tali informazioni? 18) Se no: perché non riferisci tali informazioni in chat? 19) Spiega in poche righe come funziona una chat. 20) Dalle tue conoscenze di programmazione sai dire come si potrebbe implementare una chat? 21) Credi sia possibile che qualcuno diverso da te, ad esempio i tuoi genitori, possano accedere alle tue conversazioni in chat? Allegato B - stile.css body { font:12px arial; color: #222; text-align:center; padding:35px; } form, p, span { margin:0; padding:0; } input { font:12px arial; } a { color:#006666; text-decoration:none; } a:hover { text-decoration:underline; } #wrapper, #loginform { Feo R. - Realizzazione di chat su protocollo HTTP 14 ________________________________________________________________________________________________________ margin:0 auto; padding-bottom:25px; background:#C1FFC1; width:504px; border:1px solid #006666; } #loginform { padding-top:18px; } #loginform p { margin: 5px; } #chatbox { text-align:left; margin:0 auto; margin-bottom:25px; padding:10px; background:#fff; height:270px; width:430px; border:1px solid #006666; overflow:auto; } #usermsg { width:395px; border:1px solid #006666; } #submit { width: 60px; } .error { color: #ff0000; } #menu { padding:12.5px 25px 12.5px 25px; } .welcome { float:left; } .logout { float:right; } .msgln { margin:0 0 2px 0; } Allegato C - index.jsp <%@page import="java.io.BufferedReader"%> <%@page import="java.io.FileReader"%> <%@page import="java.io.FileWriter"%> <%@page import="java.io.File"%> <%@page import="java.io.BufferedWriter"%> <%@page import="java.io.OutputStream"%> <%@page import="java.lang.String"%> <html> <head> <title>Chat</title> <link type="text/css" rel="stylesheet" href="style.css" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> <script type="text/javascript"> //Carica il file contenente il log della chat function loadLog(){ var oldscrollHeight = $("#chatbox").attr("scrollHeight") - 20; //Scorre l'altezza prima della richiesta var d = new Date(); $.ajax({ url: "log.html?" + d.getTime(), cache: false, success: function(html){ //Inserisce il log della chat nella #chatbox div $("#chatbox").html(html); //Auto-scroll //Scorre l'altezza dopo la richiesta var newscrollHeight = $("#chatbox").attr("scrollHeight") - 20; if(newscrollHeight > oldscrollHeight){ //Autoscroll verso il basso di div $("#chatbox").animate({ scrollTop: newscrollHeight }, 'normal'); } } }); } // jQuery Document $(document).ready(function(){ //Se l'utente vuole uscire $("#exit").click(function(){ var exit = confirm("Sei sicuro di voler uscire?"); if(exit==true){window.location = 'index.jsp?logout=true';} }); //Se l'utente invia un messaggio $("#submitmsg").click(function(){ var clientmsg = $("#usermsg").val(); $.post("post.jsp", {text: clientmsg}); Feo R. - Realizzazione di chat su protocollo HTTP 15 ________________________________________________________________________________________________________ $("#usermsg").attr("value", ""); return false; }); setInterval (loadLog, 500); }); </script> </head> <body> <% String logFilePath = request.getRealPath("/") + "/log.html"; String nameFromSession = (String) request.getSession().getAttribute("name"); if (request.getParameter("logout") != null) { File f = new File(logFilePath); BufferedWriter bw = new BufferedWriter(new FileWriter(f, true)); bw.write("<div class='msgln'><i>L'utente " + nameFromSession + " ha abbandonato la chat.</i><br></div>"); bw.close(); request.getSession().removeAttribute("name"); nameFromSession = null; response.sendRedirect("index.jsp"); } if (request.getParameter("enter") != null) { String name = request.getParameter("name"); if(name != ""){ request.getSession().setAttribute("name", name); nameFromSession = name; } else{ out.println("<span class='error'>Inserire un nome</span>"); } } if(nameFromSession == null) { //loginForm(); out.println("<div id='loginform'>"); out.println("<form action='index.jsp' method='get'>"); out.println("<p>Inserisci un nome per continuare:</p>"); out.println("<label for='name'>Nome:</label>"); out.println("<input type='text' name='name' id='name' />"); out.println("<input type='submit' name='enter' id='enter' value='Entra' />"); out.println("</form>"); out.println("</div>"); } else { %> <div id="wrapper"> <div id="menu"> <p class="welcome">Benvenuto, <b><%=nameFromSession%></b></p> <p class="logout"><a id="exit" href="#">Esci</a></p> <div style="clear:both"></div> </div> <div id="chatbox"> <% File f = new File(logFilePath); BufferedReader br = new BufferedReader(new FileReader(f)); StringBuffer sb = new StringBuffer(); String str = null; while((str=br.readLine()) != null) { sb.append(str); } br.close(); out.println(sb.toString()); %> </div> <form name="message" action=""> <input name="usermsg" type="text" id="usermsg" size="63" /> <input name="submitmsg" type="submit" id="submitmsg" value="Invia" /> </form> </div> <% } %> </body> </html> Feo R. - Realizzazione di chat su protocollo HTTP 16 ________________________________________________________________________________________________________ Allegato D - post.jsp <%@page import="java.util.Calendar"%> <%@page import="java.text.SimpleDateFormat"%> <%@page import="java.io.File"%> <%@page import="java.io.BufferedWriter"%> <%@page import="java.io.FileWriter"%> <% String name = (String) request.getSession().getAttribute("name"); if(name != null && name.length() > 0){ String text = request.getParameter("text"); SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm a"); String time = dateFormat.format(Calendar.getInstance().getTime()); File f = new File(request.getRealPath("/") + "/log.html"); BufferedWriter bw = new BufferedWriter(new FileWriter(f, true)); bw.write("<div class='msgln'>(" + time + ") <b>" + name + "</b>: " + text + "<br></div>"); bw.close(); } %> Allegato E – Il file di log