Comments
Description
Transcript
Active Server Pages ed ADO
Active Server Pages ed ADO Scrivere ASP • Le pagine ASP possono contenere codice HTML o XML • Le parti del documento che racchiudono codice script vanno racchiuse tra i delimitatori <% e %> • Gli script vengono eseguiti sul lato server • E’ possibile usare sia vbscript che javascript (in questo caso aggiungere in testa al documento: <%@ language="javascript"%> ) • per default il server assume script in vbscript La mia prima ASP <html> <head><title>la mia prima asp</title></head> <body> <% response.write("Hello World!") %> </body> </html> • Il metodo di scrittura e’ response.write Elementi della sintassi • Dichiarazione di variabili e loro uso: <%dim name name=“Bond" response.write("My name is: " & name) %> • Array: • <% Dim cognome(5) cognome(0) = “bond" cognome(1) = “kravitz" cognome(2) = "Hegel" cognome(3) = "Stalin" cognome(4) = “Kim Jong Il" cognome(5) = "Borges" For i = 0 to 5 response.write(cognome(i) & "<br />") Next %> esempio • <% dim h h=hour(now()) response.write("<p>" & now()) response.write(" (Ora locale server) </p>") If h<12 then response.write("Good Morning!") else response.write("Good evening!") end if %> Durata delle variabili • Variabili in un file ASP sono accessibili all’interno dell’intero file. • Le variabili dichiarate all’interno di procedure sono visibili solo all’interno delle stesse. • Variabili che debbano essere accessibili da file diversi devono essere variabili di session (sessione di un unico utente) oppure di application (visibili a tutti gli utenti) . Usare le procedure • <html><head> <% sub vbproc(num1,num2) response.write(num1*num2) end sub %> </head> <body> <p> Risultato: <%call vbproc(3,4)%> </p> <p> Risultato: <%vbproc 3,4%> </p> </body></html> Interagire con le ASP: usare le form <html> <body> <form action="demo.asp" method="post"> Your name: <input type="text" name="fname" size="20"> <input type="submit" value="Submit"> </form> <% dim fname fname=Request.Form("fname") If fname<>"" Then Response.Write("Hello " & fname & "!<br />") Response.Write("How are you today?") End If %> </body> </html> • E’ anche possibile usare il metodo GET, ma e’ sconsigliato Passare parametri ad una ASP mediante form <html><body> <form method="post" action="welcome.asp"> First Name: <input type="text" name="fname" value=""> Last Name: <input type="text" name="lname" value=""> <input type="submit" value="Submit"> </form> </body></html> Passare parametri ad una ASP mediante form <html><body> <% fname=Request.form("fname") lname=Request.form("lname") response.write("<p>Hello " & fname & " " & lname & "!</p>") response.write("<grazie di esistere!</p>") %> </body></html> Usare i cookie con le ASP • <% dim visite response.cookies("visite").Expires=date+365 visite=request.cookies("visite") %> <html><body> <% if visite="" then response.cookies("visite")=1%> Welcome! This is the first time you are visiting this Web page. <% else response.cookies("visite")=visite+1 response.write("You have visited this ") response.write("Web page " & visite) if visite=1 then response.write " time before! Thanks for coming back" else response.write " times before! Thanks for coming back " end if end if %> </body></html> Variabili di sessione • Mantengono dati relativi ad un utente durante una sessione di lavoro • Un oggetto Session viene instanziato sul server all’inizio di una sessione utente e distrutto alla fine della stessa • Una sessione inizia quando: – un utente richiede una pagina asp e nel file denominato Global.asa è presente una procedura Session_OnStart – Un valore viene immagazzinato in una variabile session • Una sessione termina: Per default dopo 20 minuti Imponendo un timeout <% Session.Timeout=5 %> Imponendo l’abbandono immediato <% Session.Abandon %> Usare variabili di sessione • Per inserirle: <% Session("username")=“Antonio" Session("age")=27 %> • Per recuperarle: Welcome <%Response.Write(Session("username"))%> • Per rimuoverle: <% If Session.Contents("age")<18 then Session.Contents.Remove(“buy") End If %> Usare variabili di application • Una application è un set di file asp, tipicamente concepiti per essere usati insieme in sequenza. • Una application consente di legare le variabili dei vari file insieme. • La visibilità delle variabili è per tutti gli utenti della applicazione. • Ciascuna variabile può esere bloccata e sbloccata Usare variabili di application • Nel file Global.asa scrivere qualcosa tipo: <script language="vbscript" runat="server"> Sub Application_OnStart application("vartime")="" application("users")=1 End Sub </script> • Per accedere: <% Response.Write(Application("users")) %> • Per bloccare/sbloccare <% Application.Lock ‘aggiungere il codice qui Application.Unlock %> • Il file Global.asa Può contenere dichiarazioni di oggetti, metodi e variabili accessibili da tutti i file nella applicazione • Deve trovarsi nella root della pplicazione; ci può essere 1 solo file di questo tipo nella applicazione • Un generico file: <script language="vbscript" runat="server"> sub Application_OnStart ''''some code end sub sub Application_OnEnd ''''some code end sub sub Session_OnStart ''''some code end sub sub Session_OnEnd ''''some code end sub </script> Esempi: Inizializzare un contatore di sessione: <script language="vbscript" runat="server"> sub Session_OnStart Session("started")=now() end sub </script> Aprire un nuovo documento: <script language="vbscript" runat="server"> sub Session_OnStart Response.Redirect("newpage.asp") end sub </script> Esempi: <script language="vbscript" runat="server"> Sub Application_OnStart Application("visitors")=0 End Sub Sub Session_OnStart Application.Lock Application("visitors")=Application("visitors")+1 Application.UnLock End Sub Sub Session_OnEnd Application.Lock Application("visitors")=Application("visitors")-1 Application.UnLock End Sub </script> Per mostrare i visitatori al momento: <%response.write(Application("visitors"))%> Active Data Objects • E’ una tecnologia Microsoft • E’ un componente Active-X • E’ concepita per accedere in maniera semplice a database via web • E’ presente in IIS • Usa ed estende l’accesso via ODBC Connettersi ad un database • Varie modalità: Diretta: <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" %> Via ODBC: <% set conn=Server.CreateObject("ADODB.Connection") conn.Open "northwind" %> Recuperare dati da un DB • Creare un recordset: <% Set rs=Server.CreateObject("ADODB.recordset") rs.Open "Select * from Customers", conn %> Visualizzare i dati estratti: <% for each x in rs.fields response.write(x.name) response.write(" = ") response.write(x.value) next %> Un esempio: <html><body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Open "northwind" set rs = Server.CreateObject("ADODB.recordset") sql="SELECT Companyname, Contactname FROM Customers" rs.Open sql, conn %> <table border="1" width="100%"> <tr> <%for each x in rs.Fields response.write("<th>" & x.name & "</th>") next%> </tr> <%do until rs.EOF%> <tr> <%for each x in rs.Fields%> <td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close %> </table></body></html> Aggiungere un record: input file <html> <body> <form method="post" action="demo_add.asp"> <table> <tr> <td>CustomerID:</td> <td><input name="custid"></td> </tr> <tr> <td>Company Name:</td> <td><input name="compname"></td> </tr> <tr> <td>Contact Name:</td> <td> <input name="contname"></td> </tr> <tr> <td>Address:</td> <td> <input name="address"></td> </tr> </table> <input type="submit" value="Add New"> </form></body> </html> Aggiungere un record: asp <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Open "northwind" sql="INSERT INTO customers (customerID,companyname," sql=sql & "contactname,address)" sql=sql & " VALUES " sql=sql & "('" & Request.Form("custid") & "'," sql=sql & "'" & Request.Form("compname") & "'," sql=sql & "'" & Request.Form("contname") & "'," sql=sql & "'" & Request.Form("address") & "')“ on error resume next conn.Execute sql,recaffected if err<>0 then Response.Write("No update permissions!") else Response.Write("<h3>" & recaffected & " record added</h3>") end if conn.close %> </body> </html> Interrogare un db con dei valori <html> <body> <form method="post" action="demo_query.asp"> <table> <tr> <td>CustomerID:</td> <td><input name="custid"></td> </tr> <tr> <td>Company Name:</td> <td><input name="compname"></td> </tr> </table> <input type="submit" value=“Find data"> </form></body> </html> <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Open "northwind" sql=“SELECT * FROM customers WHERE custid = & Request.Form("custid") & " AND “ Sql=sql & “compname =“ & Request.Form("compname") & "" rs.Open sql, conn %> <table border="1" width="100%"> <tr> <%for each x in rs.Fields response.write("<th>" & x.name & "</th>") next%> </tr> <%do until rs.EOF%> <tr> <%for each x in rs.Fields%> <td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close %> </table></body></html>