Pagine Asp prof.ssa Amalia Di Giacomo Pagine Asp Architettura web Esistono alcune limitazioni alle applicazioni che si possono realizzare in HTML, ad esempio non è possibile costruire un sito web che consenta all’utente di accedere ai dati contenuti in un database perché questo tipo di linguaggio svolge la sua funzione dal lato client di una architettura web (client-side). Infatti un’architettura web è composta da due parti che interagiscono tra loro: - Lato client (client(client-side): side) parte dell’utente che si collega alla rete con il proprio computer. Per programmazione lato client si intende scrivere programmi che vengono interpretati o eseguiti dal client. - Lato server (server(server-side): side) parte del computer server che svolge il ruolo di un nodo della rete. Per programmazione lato server intendiamo programmi che vengono interpretati o eseguiti sul server il cui output viene poi inviato sottoforma di pagine HTML verso il lato client. Secondo una classificazione dei sistemi di elaborazione dei dati che costituiscono una rete e secondo le funzioni che sono chiamate ad espletare, possiamo distinguere: - Host (ospitante): (ospitante) calcolatore o sistema di elaborazione dei dati destinato ad essere centro di distribuzione delle informazioni per gli utenti della rete. - Client (cliente): (cliente) sistema connesso in rete finalizzato ad usufruire dei servizi di rete in genere messi a disposizione dagli host. 1 Pagine Asp prof.ssa Amalia Di Giacomo Una pagina web prodotta in HTML, rappresenta un file di testo che è memorizzato in una particolare cartella nel disco fisso del server. Quando il browser richiede una pagina (quando l’utente scrive l’indirizzo), viene inviata la richiesta al server web. Questi la interpreta, recupera il file dal proprio disco e lo restituisce al client senza modifiche. Il browser riceve il file e per visualizzare la pagina deve interpretare tutti i codici HTML. Per poter interagire con i database che si trovano sul server remoto, si devono invece usare tecnologie che effettuino le operazioni lato server. ASP (Active Server Pages) è una tecnologia Microsoft che consente di eseguire codice eseguibile (script) lato server, inserendo il codice all’interno delle pagine web. Tecnologie di script Attraverso l'integrazione di HTML e Script è possibile creare pagine interattive e dinamiche (HTML dinamico). In effetti gli script possono essere eseguiti sia su un server web (script lato server), sia dal browser installato sul computer del client (script lato client). Gli script lato server sono utilizzati per aggiungere interattività alle pagine web e consentono alle pagine stesse di interagire con altri programmi residenti sul server e quindi hanno la necessità di essere eseguiti sul server. In questo caso il codice sorgente (dello script lato server) non compare mai nel browser del client ma quest'ultimo riceve solo l'output in html. ASP non è un linguaggio di programmazione ne un linguaggio di scripting bensì una tecnologia lato server, sono pagine identiche a quelle con estensione .html ma invece di essere interpretate lato client sono interpretate lato server: 1) Il browser chiede al server una pagina ASP 2) Il web server elabora gli script eseguendo le istruzioni presenti nella pagina coinvolgendo, eventualmente altri componenti presenti sul server 3) vengono convertiti i risultati dell'elaborazione in html 4) il server restituisce il risultato in html al browser del richiedente che lo visualizza a video. Questo rappresenta la generazione dinamica di una pagina html e dinamica sta per pagina che non esiste ma viene generata al momento stesso in cui è richiesta dal client. Per poter eseguire le pagine ASP occorre disporre di un server web che sia in grado di interpretare gli script in formato ASP. Per server web intendiamo un software per la gestione di un computer host o server di rete così lo sviluppatore di pagine ASP può verificare il funzionamento degli script sulla propria macchina , prima di pubblicarli in internet, utilizzando un server web installato 2 Pagine Asp prof.ssa Amalia Di Giacomo localmente sul suo computer. Per Windows xp, Windows Seven, si installa IIS (Internet Information Services), si ha così una simulazione , sul proprio computer, di un vero server web per poter costruire, non solo pagine HTML (statiche), ma anche applicativi da eseguire (pagine dinamiche). Installazione del server web Per installare il server web sul proprio computer, dal pannello di controllo, installazione applicazioni, installazione componenti di windows per selezionare dall’elenco Internet Information system (IIS). Il processo di installazione crea una cartella Inetpub e al suo interno la cartella wwwrtoot dove inserire le pagine html e le pagine ASP. Per verificare il funzionamento del server web scrivere nella casella dell’indirizzo del browser: http://localhost (nome che identifica il server web della macchina locale). In output apparirà la pagina di test che conferma l’attivazione del server web. Creazione di pagine dinamiche Gli script inseriti in una pagina html, necessitano di essere racchiusi tra <% %> . Si può anche specificare il tipo di linguaggio di programmazione Language=[VBScript|JavaScript]. Se non si specifica il linguaggio, quello di default è quello che viene usato sul Web Server. Si possono usare più linguaggi sul server, noi useremo il linguaggio VBScript. All'interno di una pagina scritta in html, quando è necessario, possiamo inserire degli script aprendo e chiudendo <% %>. Esempio: Visualizzare la data e l'ora corrente con una pagina web. (Utilizzeremo la funzione =Date() ). <%language = VBScript %> <html> <head> <title>Data e ora</title> </head> <body> <H2>Data e ora del sistema</H2> <p><%=date() %></p> </body> </html> 3 Pagine Asp prof.ssa Amalia Di Giacomo Salveremo questa pagina nella cartella wwwroot con il nome dataora.asp e, per provarne il funzionamento andremo a digitare nella casella dell’indirizzo del browser: http://localhost/dataora.asp I linguaggi di scripting supportano la programmazione orientata agli oggetti. Ad ogni oggetto sono associati metodi (procedure e funzioni) e proprietà (attributi o caratteristiche dell'oggetto). La sintassi utilizzata per la chiamata ad un metodo è oggetto.metodo e per l'utilizzo delle proprietà è oggetto.proprietà. Vediamo alcuni oggetti che utilizzeremo: - Oggetto Response: Response utilizzato per inviare informazioni dal server web al browser client (output) attraverso il metodo write (response.write) <% Response.write " Ciao a tutti " %> - Oggetto Request: Request utilizzato per passare le informazioni dal browser del client al server web (input) come ad esempio una variabile (request(variabile)) <% NomeStudente=request.form("nome")%>. Prima di creare il nostro sito, dobbiamo progettare il nostro data base in Access. La connessione con i database attraverso le pagine ASP ci permette di creare delle tabelle che vengono aggiornate ogni volta che la pagina è caricata. Dalla pagina dinamica creata è possibile quindi effettuare la lettura, la manipolazione, l'aggiornamento delle tabelle di un database. Creiamo una cartella in c:/inetpub/wwwroot che chiameremo Progetto2012. In questa cartella salveremo tutte le pagine web del progetto e i file correlati (database, immagini ecc..). Per inserire dati all'interno del database attraverso una pagina web dobbiamo costruire un modulo ovvero una pagina web in html che raccoglie l'input dei dati da un form per inviarli poi, attraverso una pagina ASP al server web. 4 Pagine Asp prof.ssa Amalia Di Giacomo I form HTML I Moduli o Form permettono di interagire con i visitatori del proprio sito offrendo loro la possibilità di immettere, o richiedere, informazioni tramite semplici caselle di testo, in alcuni casi caselle combinate, caselle di tipo "spunta" ed altro ancora. L'elemento <form> serve per delimitare un modulo di input per l'inserimento dati. Per il nostro progetto abbiamo la necessità di registrare i dati degli utenti che desiderano effettuare una segnalazione. Per prima cosa scriviamo in html il modulo di input dei dati. pagina di inserimento dei dati (form) <html> <head> <title>Modulo di iscrizione</title> </head> <body> <p align ="center"> <font face="Segoe Print" size="7" color="#FF0000">Registrazione cliente</font> <form action="Registra.asp" method="post"> <p align="left"><font size="5" face="Segoe Print" color="#FF0000">Nome <input type="text" name="nome" size="42"></p> <p align="left>Cognome <input type="text" name="cognome" size="42"></p> <p align="left">Telefono <input type="text" name="telefono" size="42"></p> <p align =”left”>e-mail <input type="text" name="email" size="42"><br> <input type="checkbox" name="consenso" <font face="Times New Roman"> consenso al trattamento dei dati personali ai sensi <u>della legge 196/2003</u></font></p> <p><input type ="submit" value="INVIA" name="B1"><br> <input type ="submit" value="ANNULLA" name="B2"></p> </form> </body> </html> Salveremo questa pagina nella cartella wwwroot con il nome modulo.html e, per provarne il funzionamento andremo a digitare nella casella dell’indirizzo del browser: http://localhost/modulo.html Una volta creato il modulo di input scriviamo la pagina asp che passa i dati al server web. 5 Pagine Asp prof.ssa Amalia Di Giacomo Per connetterci alla sorgente dei dati, abbiamo bisogno di creare un oggetto connessione (ADODB.Connection). Una delle tecniche per connettersi alla sorgente di dati è rappresentata dalle seguenti istruzioni da inserire come script: <% language = vbscripts %> <% 'dichiaro le variabili dim conn dim sql 'connessione al database Set conn=Server.CreateObject("ADODB.Connection") conn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Buche.mdb") 'apertura della connessione conn.open La variabile conn è l'oggetto che ci permette di connetterci alla sorgente dei dati, la variabile sql e la stringa che conterrà la query di inserimento dei dati nel database da scrivere nella stessa pagina. ‘creazione della query di inserimento sql="insert into utenti ( nome,cognome,telefono,email,consenso)values ('"&codice&"','" & request.form("nome") & "','" & request.form("cognome") & "','" & request.form("telefono") & "','"& request.form("email") & "','" & request.form("consenso") & "')" 'esecuzione della query di inserimento conn.execute sql ‘messaggio di registrazione effettuata e visualizzazione del codice da conservare response.write "Registrazione effettuata con successo" %><br> <%response.write "Conserva il tuo codice utente per effettuare altre segnalazioni"%><br> Codice utente<br> <%response.write codice%> ‘link alla home page e chiusura della connessione <p><a href = "index.htm>Torna alla home page</a></p> <%conn.close set conn = nothing%> Nella query di inserimento non abbiamo considerato il codice utente, che è anche la chiave primaria della tabella utenti, perché vogliamo che venga inserito in automatico con un numero progressivo e per questo, nel nostro database abbiamo dichiarato il campo codUtente di tipo Contatore. Salveremo questa pagina con il nome Registra.asp come richiamato nel form e la salveremo nella cartella Progetto2013 in wwwwroot. 6 Pagine Asp prof.ssa Amalia Di Giacomo L’oggetto Recordset I componenti ADO (ActiveX Data Object) forniscono gli oggetti e i metodi per la connessione al database e per l’accesso ai dati in esso contenuti. Sono disponibili gli oggetti predefiniti: ADODB.Connection: ADODB.Connection per stabilire una connessione con il database residente sul server (che abbiamo già utilizzato per connetterci al nostro database) ADODB.Recordset: ADODB.Recordset per conservare l’insieme delle righe delle tabelle ottenute come risultato di una interrogazione al database oppure le righe sulle quali si effettuano le operazioni di manipolazione. Un Recordset è un insieme di record che può essere rappresentato da tutti i record di una tabella o dal risultato di una interrogazione. Per muoversi all’interno di un Recordset usiamo i metodi e le proprietà di questo oggetto: Metodo Consente di MoveFirst MoveLast Move + | - Posizioni Spostarsi all’inizio di una tabella Spostarsi alla fine di una tabella Spostarsi di un numero di posizioni in dietro o on avanti MoveNext MovePrevius RecordCount Proprietà EOF (end of file) BOF (before of first) BOF e EOF Spostarsi di una posizione in avanti Spostarsi di una posizione indietro Contare il numero di record presenti nella tabella Consente di Verifica se si è giunti alla fine della tabella Verifica se ci si trova prima del primo record Verifica se la tabella non contiene alcun valore Nel nostro caso abbiamo bisogno di visualizzare, in una tabella, il risultato di una query che estrae i dati delle segnalazioni effettuate dalla tabella Segnalazioni. Segnalazioni Si crea una pagina Asp in cui inserire una tabella in html. <html> <head> <title>Buche</title> </head> <body> <% language = vbscripts %> <% 'dichiaro le variabili dim strQuery dim rs dim conn 'connessione al database Set conn=Server.CreateObject("ADODB.Connection") conn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("Buche.mdb") conn.open 7 Pagine Asp prof.ssa Amalia Di Giacomo Una volta connessi al database possiamo scrivere la query di selezione copiandola da Access. 'Query che estrae tutte le segnalazioni strQuery = "SELECT segnalazioni.codSegnalazione, segnalazioni.dataSegnalazione, segnalazioni.indirizzo, segnalazioni.codUtente, guasti.descrizione, interventi.descr FROM guasti INNER JOIN (interventi INNER JOIN segnalazioni ON interventi.codIntervento = segnalazioni.intervento) ON guasti.codGuasto = segnalazioni.codGuasto WHERE (((segnalazioni.codSegnalazione)<>0))" Ora possiamo creare una istanza dell’oggetto recordset ed aprire la connessione con il database utilizzando la variabile rs. 'creo un recordset Set rs=Server.CreateObject("ADODB.recordset") 'apro la connessione del recordset col db s.Open strQuery, conn %> Apro una tabella che conterrà il risultato della query inserendo la prima riga con le intestazioni delle colonne. <table border="1" width="100%" id="table1" height="45"> <tr> <td <td <td <td <td <td width="109" align="center"><b><font face="Arial Unicode MS" color="#000066">Segnalazione</font></b></td> width="68" align="center"><font face="Arial Unicode MS" color="#000066"><b>Data</b></font></td> width="57" align="center"><b><font face="Arial Unicode MS" color="#000066">Utente</font></b></td> align="center"><b><font face="Arial Unicode MS" color="#000080">Indirizzo</font></b></td> align="center"><b><font face="Arial Unicode MS" color="#000080">Guasto</font></b></td> width="154" align="center"><b><font face="Arial Unicode MS" color="#000080">Intervento</font></b></td> </tr> Per visualizzare tutte le righe estratte dalla query devo leggerle una alla volta e inserirle nella tabella, per questo faccio un ciclo di lettura Do While che ha come condizione di fine EOF (Marcatore posto dopo l'ultimo record di un file che ne indica la fine). All’interno del ciclo inserisco, in html, un’ altra riga della tabella per ospitare i dati letti di volta in volta. Per riferirmi ad un campo della tabella uso la variabile rs: rs(“nomeatt”). Per spostarmi sulla riga successiva della tabella uso l’istruzione MoveNext. 8 Pagine Asp prof.ssa Amalia Di Giacomo 'eseguo un ciclo per leggere la tabella delle attività finchè non finisce <% Do While NOT rs.EOF %> 'per ogni riga che leggo creo tre colonne dove visualizzo i dati letti <tr> <td width="109"><font face="Arial Unicode MS" color="#000066"><% =rs("codSegnalazione") %></font> </td> <td width="68"><font face="Arial Unicode MS" color="#000066"><% =rs("dataSegnalazione") %></font> </td> <td width="57"><font face="Arial Unicode MS" color="#000066"><% =rs("codUtente") %></font> </td> <td width="167"><font face="Arial Unicode MS" color="#000066"><% =rs("indirizzo") %></font> </td> <td width="425"><font face="Arial Unicode MS" color="#000066"><% =rs("descrizione") %></font> </td> <td width="111"><font face="Arial Unicode MS" color="#000066"><% =rs("descr") %></font> </td> </tr> 'leggo la riga successiva <% rs.MoveNext %> ‘con Loop chiudo il ciclo <% Loop %> 'alla fine del ciclo chiudo la connessione e la tabella <% conn.Close %> </table> </body> </html> Ora posso chiudere la pagina, salvarla con il nome visualizza.asp nella cartella wwwroot e modificare la grafica con FrontPage. 9