Đối tợng Application

Một phần của tài liệu Bài giảng về lập trình mạng (Trang 111 - 128)

I. File Global.asa

b. Session.StaticObjects hoặc Session.StaticObjects(Key)

5.5. Đối tợng Application

Một ứng dụng bao gồm các file có thể truy nhập thông qua một th mục ảo xác định và các th mục con của nó.

Đối tợng Application thể hiện toàn bộ một ứng dụng ASP. Chúng ta có thể sử dụng ứng dụng này để chia sẻ thông tin cho tất cả các ng- ời dùng trong một ứng dụng.

Đối tợng Application đợc bắt đầu khi có một yêu cầu đầu tiên một trang web bất kỳ từ th mục ảo tại Web server và tồn tại cho đến khi Webserver ngừng hoạt động.

Thuộc tính của đối tợng Application bao gồm Application.Contents Collection Application.StaticObjects Collection

* Thuộc tính Contents

Khi muốn khởi tạo đối tợng Application và gán giá trị, ta sử dụng cú pháp sau:

Application.Contents("key")=Value

Ví dụ 5.5.1. Khai báo đối tợng Application có tên là Counter để đếm số ngời truy cập và khởi tạo giá trị này bằng 0 trong tập tin Global.asa

Sub Application_OnStart()

Application("CurrentUser")=0

Application.Contents("Counter")=0 End Sub

Sau đó mỗi lần ngời sử dụng mở mới một trình duyệt (một phiên làm việc mới đợc tạo ra) tăng giá trị đối tợng này 1.

Sub Session_OnStart()

Application("CurrentUser") = Application("CurrentUser") +1

Application.Contents("Counter")=Application.Conten ts("Counter")+1

//Response.Write "New Session is created" End Sub

Ví dụ 5.5.2.

<% Application("name") = "Application Maker" Application("publishdate") = "05/15/01"

Application("author") = "DevGuru" Set Application("Obj1") =

Server.CreateObject("ADODB.Connection") For Each Item in Application.Contents

If IsObject( Application.Contents(Item)) Then

Response.Write Item & " is an object.<BR>"

Else

Response.Write Item & "=" & Application.Contents(Item) & "<BR>" End If Next %> Kết quả: name=Application Maker publishdate=05/15/01 author=DevGuru OBJ1 is an object Ph

ơng thức của tập hợp Contents

Application.Contents.Remove (Name|Integer) Loại bỏ mục nào đó trong collection

Application.Contents

Name chỉ ra tên mục sẽ xoá, bao bằng cặp dấu nháy.

Integer chỉ ra vị trí mục trong collection sẽ đợc xoá.

Giá trị này bắt đầu từ 1

Ví dụ 5.5.3.

<%

Application("name") = "Application Maker" Application("publishdate") = "05/15/01" Application("author") = "DevGuru" Set Application("Obj1") = Server.CreateObject("ADODB.Connection") Application.Contents.Remove(1) Application.Contents.Remove("publishdate") For Each Item in Application.Contents

If IsObject(Application.Contents(Item)) Then Response.Write Item & " is an object.<BR>" Else

Response.Write Item & "="

&Application.Contents(Item) & "<BR>" End If

Next %>

Kết quả:

author=DevGuru Obj1 is an object.

Application.Contents.RemoveAll

Loại bỏ tất cả các mục trong collection Application.Contents

Thêm cặp dấu ngoặc () <

%Application.Contents.RemoveAll( )%> * Thuộc tính StaticObjects

Tập thuộc tính StaticObjects chứa đựng tất cả các đối tợng đợc tạo bằng thẻ <Object> trong phạm vị đối tợng Application với cú pháp nh sau:

Application.StaticObjects(key)

Ta có thể sử dụng Collection để lấy giá trị chỉ định của một thông tin cho đối tợng hay truy cập đến nhiều thuộc tính bằng vòng lặp trên tất cả các đối tợng.

Ví dụ 5.5.4. Truy cập thuộc tính StaticObjects.

<html> <head>

<title> Welcome to My Web </title> </head>

<body>

<h4>Application Object</h4> <hr size=1 color=red><br> <table border=0>

<tr><td><b>Application.StaticObjects</b></td></tr >

<%

Dim strKey

For Each strKey In Application.StaticObjects

Next %>

</table> </body> </html>

Ví dụ 5.5.5. Truy cập thuộc tính StaticObjects.

---Global.asa---

<OBJECT RUNAT=Server SCOPE=Application ID=MyInfo

PROGID="MSWC.MyInfo"> </OBJECT>

<OBJECT RUNAT=Server SCOPE=Application

ID=MyConnection PROGID="ADODB.Connection"> </OBJECT>

<OBJECT RUNAT=Server SCOPE=Application

ID=MyADRot PROGID="MSWC.ADRotator"> </OBJECT>

---File.asp---

<%

For Each Item In Application.StaticObjects Response.Write Item & "<BR>"

Next %> Kết quả: MyInfo MyConnection MyADRot

5.5.2. Sự kiện

ng với hai hoạt động bắt đầu và kết thúc một đối tợng Application ta có hai sự kiện trong đối tợng Application, đó là : Application_OnStart ( khởi tạo các thông tin phục vụ cho một ứng dụng khi ứng dụng bắt đầu) và Application_OnEnd ( đợc kích hoạt khi ứng dụng kết thúc )

Cú pháp của sự kiện Application_OnStart:

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

Sub Application_OnStart

' Nơi chèn đoạn Script cần thiết cho việc khởi tạo một ứng dụng End Sub

Sub Application_OnEnd

' Nơi chèn đoạn Scipt cần thiết cho việc kết thúc một ứng dụng End Sub

</SCRIPT>

Chú ý. Phải khai báo ngôn ngữ script đợc sử dụng trong các đoạn script sự kiện trong dòng đầu tiên của file global.asa

Các đối tợng của ASP trong phần này chỉ có SERVER và APPLICATION

---Global.asa---

<script Language="VBScript" RUNAT=Server>

Sub Application_OnEnd() End Sub Sub Application_OnStart() Application("NumSession") = 0 Application("NumVisited") = 0 Session.Timeout = 10 End Sub Sub Session_OnEnd() Application("NumSession") = Application("NumSession") - 1 End Sub Sub Session_OnStart() Application("NumSession") =

Application("NumSession") + 1 Application("NumVisited") = Application("NumVisited") + 1 End Sub </script> ---File1.asp---

<% Response.Write "You are " &

Application("NumSession") & " of " & Application("NumVisited") & " users."%>

Kết quả:

You are 1 of 1 users. 5.5.3. Phơng thức

Vì đối tợng Application có thể đợc chia sẻ thông tin giữa các ngời dùng do đó để đảm bảo những ngời dùng đó không thể cùng một lúc thay đổi nội dung của một biến trong đối tợng Application nó có hai phơng thức là Lock và Unlock.

Phơng thức

ý nghĩa

Lock

Phơng thức Lock ngăn cản các client khác cùng một lúc thay đổi giá trị của một biến do đối tợng Application lu trữ

Unlock Phơng thức Unlock cho phép các client có thể sửa đổicác thuộc tính của đối tợng Application .

* Phơng thức Lock

Phơng thức dùng để ngăn chặn ngời sử dụng thay đổi giá trị của biến lu trong đối tợng Application và đảm bảo rằng chỉ một ngời sử dụngtại thời điểm đó có thể truy cập và cập nhật đối tợng này.

Application.Lock()

Nếu ta không gọi phơng thức Unlock ngay sau đó, Server sẽ không cho phép ngời sử dụng khai thác cập nhật giá trị trên những

đối tợng Application đã bị khoá cho đến khi kết thúc phiên làm việc hay hết thời gian sử dụng.

* Phơng thức UnLock

Phơng thức Unlock dùng để phục hồi lại những đối tợng Application đã bị khoá trớc đó bằng phơng thức Lock, nhằm cho phép nhiều ngời sử dụng có thể thay đổi giá trị của biến lu trong đối tợng này và bảo đảm rằng có nhiều ngời sử dụng tại thời điểm đó có thể truy cập và nhập nhật đối tợng này.

Application.UnLock() 5.6. Đối tợng Server

Cho phép truy nhập tới các phơng thức và thuộc tính trên máy chủ. Tập hợp Thuộc tính Phơng thức

ScripTimeOut -- CreateObjectHTMLEncode

- MapPath

- URLEncode

Cú pháp:

Server.Thuộc tính|Phơng thức

5.6.1. Thuộc tính ScriptTimeout

Server.ScriptTimeout

Đó là thời gian tối đa để trang script chạy trên máy chủ. Nếu không đặt giá trị cho thuộc tính này thì giá trị mặc định của nó là 90 giây.

Nếu script nhập vào một vòng lặp vô hạn thì server sẽ kết thúc script đó để tránh bị overload bởi việc chạy liên tục các tiến trình sinh ra. Thời gian trớc khi script bị kết thúc đợc định nghĩa bởi thuộc tính này.

<% Server.ScriptTimeout = 150 %>

<% timeout = Server.ScriptTimeout %> 5.6.2. Phơng thức

Phơng thức ý nghĩa

CreateObject Tạo một thể hiện của đối tợng cụ thể trên Server

Execute Cho phép gọi trang ASP khác trong một trang ASP

GetLastError Mô tả đối tợng lỗi ASP, chỉ có ý nghĩa trớc khi file asp gửi nội dung tới Client

HTMLEncode Gắn một đoạn mã HTML vào một xâu đã đợc định dạng.

MapPath Xác định đờng dẫn vật lý trên máy chủ khi xét đết đờng dẫn ảo.

Transfer Chuyển tới trang ASP khác từ một trang ASP. Thông tin trạng thái hiện tại trong trang đầu tiên sẽ đợc chuyển tới trang thứ hai

URLEncode Cho phép gắn một đoạn mã URL

* Phơng thức CreateObject

Phơng thức này (không có gía trị trả về) dùng để tạo đối tợng thành phần trên Server với cú pháp.

Server.CreateObject(progId)

Trong đó, tham số Progid chỉ định loại đối tợng cần tạo với định dạng Vendor.]Component[ .Version].

Chẳng hạn, ta tạo đối tợng ADODB. Connection,

ADODB.RecordSet, MSWC.AdRotator,... nh sau: <% Set myAd=Server.CreateObject(MSWC.AdRottator) Set myCon=Server.CreateObject(ADODB.Connection) Set myRst=Server.CreateObject(ADODB.RecordSet)

%>

Chẳng hạn đoạn mã sau dùng để kết nối CSDL <% Set myconn =

Server.CreateObject("ADODB.Connection") %> Chẳng hạn, ta sử dụng phơng thức này để khởi tạo đối tợng

Scripting.FileSystemObject đọc danh sách tập tin trong

mục của ứng dụng Web nh ví dụ 5.6.1.

Ví dụ 5.6.1. Sử dụng phơng thức CreateObject

<html> <head>

<title> Welcome to My Web </title> </head>

<body>

<h4>Server Object</h4> <hr size=1 color=red><br> <table border=1> <tr class=text> <td>FileName</td><td>DateCreated</td> <td>Size</td></tr> <% Dim fs,f,ff,path Set fs = Server.CreateObject("Scripting.FileSystemObject") path=request.ServerVariables("APPL_PHYSICAL_PATH") Set f = fs.GetFolder(path) set ff = f.files

For Each FileName In ff %>

<tr class=text>

<td><%= FileName.DateCreated%></td> <td><%= formatnumber(FileName.size,1)%></td></tr> <%next%> </td></tr> </table> </body> </html>

Khi gọi trang CreartObject.asp trên trình duyệt, ta sẽ nhận đợc danh sách các tập tin trong th mục ứng dụng Web nh sau

* Phơng thức Execute

Phơng thức Execute (không có giá trị trả về) dùng để gọi một tập tin .asp và xử lí nó nh một phần của kịch bản ASP với cú pháp nh sau:

Server.Execute(Path)

trong đó, tham số Path là đờng dẫn và tên tậo tin asp cần thực thi. Nói cách khác, phơng thức Execute tơng tự nh gọi thủ tục trong nhiều ngôn ngữ lập trình khác.

* Phơng thức HTMLEncode

Phơng thức HTMLEnCode dùng để mã hoá HTML thành chuỗi với cú pháp nh sau:

Khi mã hoá chuỗi HTML sang chuỗi bình thơng nếu gặp các ký tự nh sau sẽ chuyển sang các ký tự tơng ứng:

- Ký tự < chuyển thành &lt

- Ký tự > chuyển thành &gt

- Ký tự & chuyển thành &amp

- Dấu nháy đôi " chuyển thành &quot

Khi ta khai báo một thẻ TextArea cho phép ngời sử dụng nhập đoạn mã có thẻ HTML bên trong nội dung, sau khi ngời sử dụng nhấn nút Submit sang trang kế tiếp, thay vì trình bày nội dung đó trên màn hình, chúng xuất hiện thẻ HTML trên trang Web.

Để xem chuỗi nhập có thẻ HTML trình bày nh những gì ta khai báo trên trang Web, ta phải sử dụng phơng thức HTMLEncode.

Ví dụ

<% Response.Write Server.HTMLEncode("The tag for a table is: <Table>")%>

Kết quả:

The tag for a table is: &lt;Table&gt; Kết quả ở Browser:

The tag for a table is: <Table>

* Phơng thức MapPath

Phơng thức MapPath ánh xạ đờng dẫn ảo thành đờng dẫn vật lý cho một tập tin trên Server với cú pháp nh sau:

Server.MapPath(path)

trong đó, tham số path là chuỗi thực hiện đờng dẫn tơng đối của tập tin trên ứng dụng Web, phơng thức sẽ trả về chuỗi hiện thực đờng dẫn vật lý của tập tin đó.

Phơng thức này không kiểm tra sự tồn tại thực sự của đờng dẫn. Nếu bắt đầu bằng dấu / hoặc \ đờng dẫn ảo. Còn không bắt đầu bằng ký tự đó đờng dẫn tơng đối.

Ví dụ 5.6.2.

<html> <head>

<title> Welcome to My Web </title> </head>

<BODY>

The path of this file is <% Response.Write Server.MapPath("test.asp")%>

The path of the file1 is <% Response.Write Server.MapPath("\test.asp")%>

The path of the file2 is <% Response.Write Server.MapPath("test\test.asp") %>

The path of the file3 is <% Response.Write Server.MapPath("\") %>

</BODY> </HTML>

Kết quả:

The path of this file is C:\VANBANG2\ASP\Example\test.asp The path of the file1 is d:\inetpub\wwwroot\test.asp

The path of the file2 is C:\VANBANG2\ASP\Example\test\test.asp The path of the file3 is d:\inetpub\wwwroot

* Phơng thức Transfer

Phơng thức transfer gửi tất cả các thông tin mà nó đã xử lý từ trang ASP hiện hành sang trang ASP khác với cú pháp nh sau:

Server.Transfer(path)

Trong đó, tham số Path là đờng dẫn của tập tin ASP cần chuyển điều khiển. Ví dụ, chúng ta khai báo ttrang ASP có sử dụng phơng thức Transfer nh ví dụ 5.6.2.

Ví dụ 5.6.3: Sử dụng phơng thức Transfer. <html>

<title> Welcome to HuuKhang.com </title>

</head> <body>

<h4>Server Object</h4> <hr size=1 color=red><br> <b>Server.Transfer</b> <table border=0>

<tr>

<td valign=top>Transfer</td></tr>

<tr><td valign=top>Request.QueryString: <%=Request.QueryString("i")%></td></tr> <tr><td> <%=Server.Transfer("ex6-1.asp")%></td> </tr> </table> </body> </html> Ví dụ 5.6.4: ---CallingAsp.asp--- <%

Application("name") = "Application Maker" Application("publishdate") = "05/15/01" Application("author") = "DevGuru" Set Application("Obj1") = Server.CreateObject("ADODB.Connection") Server.Transfer("CalledAsp.asp") %> ---CalledAsp.asp--- <%;

Response.Write "Output from CalledAsp.asp" For Each Item in Application.Contents

If IsObject( Application.Contents(Item)) Then Response.Write Item & " is an object.<BR>"

Response.Write Item & "=" & Application.Contents(Item) & "<BR>" End If Next %> Kết quả: Kết quả từ CalledAsp.asp name=Application Maker publishdate=05/15/01 author=DevGuru OBJ1 is an object. * Phơng thức URLEncode

Tơng tự nh phơng thức HTMLEncode, phơng thức URLEncode để dùng mã hoá URL thành chuỗi với cú pháp nh sau:

Server.URLEncode(str)

Khi mã hoá chuỗi URL sang chuỗi bình thờng nếu gặp các ký tự nh sau, sẽ chuyển sang ký tự tơng ứng:

- Ký tự khoảng trắng chuyển thành dấu +

- Ký tự không thuộc ký tự chữ và số sẽ chuyển thành số Hexadecimal. Ví dụ: <% Response.Write Server.URLEncode("http://www.issi.net")%> Kết quả: http%3A%2F%2Fwww%2Eissi%2Fnet

Khi ta gửi lên QueryString chuỗi có các thẻ HTML hay các ký tự đặc biệt khi gọi trang Web, chuỗi này có thể hiển thị dới dạng thẻ HTML thay vì chuỗi cần trình bày. Chẳng hạn, ta khai báo trang ex7.asp nh ví dụ 5.6.3 bằng cách sử dụng đối tợng Request để lấy giá trị từ tham số Str trên URL.

Ví dụ 5.6.3. Lấy giá trị từ QueryString: <html>

<title> Welcome to HuuKhang.com </title> </head>

<body>

<h4>Server Object</h4> <hr size=1 color=red><br> <b>Server.URLEncode</b> <table border=0>

<tr>

<td valign=top>URLEncode</td></tr> <tr><td valign=top>Str: <%=Request.QueryString("str")%></td></tr> </table> </body> </html> * Phơng thức Execute

Cho phép gọi trang ASP khác trong một trang ASP. Khi trang đ- ợc gọi tới hoàn thành các công việc của nó, sẽ trở lại tiếp tục thực hiện trang ASP gọi tới nó. Hiệu quả giống nh các hàm, thủ tục (subroutines). Phơng pháp có hiệu quả tơng tự include.

Server.Execute(Path)

Trong đó, tham số Path là đờng dẫn tơng đối hoặc vật lý của tập tin ASP cần chuyển điều khiển. Toàn bộ xâu này đợc đặt trong dấu nháy.

Ví dụ 5.6.4:

---CallingAsp.asp--- <HTML>

<BODY>

How now <%Server.Execute("CalledAsp.asp") %> cow?

</BODY> </HTML>

---CalledAsp.asp---

<%

Response.Write "pink" %>

Kết quả :

How now pink cow?

* Phơng thức GetLastError

Trả lại đối tợng ASPError, đối tợng này có 9 thuộc tính chỉ đọc cung cấp thông tin chi tiết về lỗi.

Server.GetLastError Ví dụ 5.6.5:

<%

Dim objErrorInfo

Set objErrorInfo = Server.GetLastError Response.Write("ASPCode = " & objErrorInfo.ASPCode) Response.Write("ASPDescription = " & objErrorInfo.ASPDescription) Response.Write("Category = " & objErrorInfo.Category) Response.Write("Column = " & objErrorInfo.Column) Response.Write("Description = " & objErrorInfo.Description) Response.Write("File = " & objErrorInfo.File) Response.Write("Line = " & objErrorInfo.Line) Response.Write("Number = " & objErrorInfo.Number) Response.Write("Source = " & objErrorInfo.Source) %>

Phần 3. ASP và Cơ sở dữ liệu

Một phần của tài liệu Bài giảng về lập trình mạng (Trang 111 - 128)