Đối tượng Response
Chức năng (Chính)
Dùng để trả (write) kết quả về cho máy khách (Trình duyệt)
Một số phương thức dùng:
Phương thức write
Viết kết quả trả về cho trình duyệt (máy khách).
+ Cú pháp : Response.write(<Xâu>/<Biểu thức>)
Trong đó <Xâu> là một xâu ký tự, có thể chứa các thẻ HTML.
Biểu thức có thể là hằng, biến, hàm, biểu thức chứa cả hằng, biến, hàm ….
+Ví dụ:
Gửi xâu “Hello world” về cho trình duyệt.
<%@ Language = vbscript %>
<HTML>
<BODY>
<%
Response.write(“Hello world”)
<%@ Language = vbscript %>
<HTML>
<BODY>
<%
Response.write(“Hello world”)
%>
</BODY>
</HTML>
Tương đương với:
<%@ Language = vbscript %>
<HTML>
<BODY>
Hello world
</BODY>
</HTML>
Phương thức Redirect
Hướng người dùng sang một trang web khác. Ví dụ khi người dùng gõ www.abc.com/Trang1.asp thì chúng ta có thể hướng (mở) sang trang Trang2.asp để hiển thị.
+ Cú pháp:
Response.Redirect URL (Địa chỉ/ siêu liên kết)
+ Ví dụ:
Khi người dùng nhập vào trang Trang1.asp, ta sẽ hiển thị trang Trang2.Asp. Khi đó nội dung của trang1.asp sẽ như sau:
<%@ Language = vbscript %>
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
<title>Redirect</title>
</head>
<BODY>
.... Bạn phải thăm trang2.asp trước đã ! <BR>
<%
'..............
Response.redirect "Trang2.asp"
'..............
%>
</BODY>
</HTML>
Một ví dụ cần sử dụng đến phương thức này đó là, khi người dùng chưa thực hiện đăng nhập và vào ngay trang thao tác với CSDL thì ta cần redirect đến trang đăng nhập.
Đối tượng Request
Mô hình nhập liệu từ người dùng và tiếp nhận dữ liệu của webserver: 2 con đường.
1. POST: Gửi cả một form nhập dữ liệu tới webserver
2. GET : Gửi thông qua liên kết URL
Chức năng
Nhận (lấy / đọc) về các giá trị khi người dùng Submit (gửi) đi. (Ví dụ khi người dùng điền các thông tin đăng ký tài khoản và nhấn vào nút Submit thì thông tin đó sẽ được nhận về thông qua đối tượng Request).
Có hai cách để người dùng gửi thông tin đi Có 2 cách tương ứng để tiếp nhận (đọc) .
Cách 1: Người dùng nhập thông tin trong các textbox, sau đó gửi các thông tin trong các textbox này tới một trang asp khác. Khi đó người ta gọi cách gửi đó là gửi theo kiểu “POST”.
Cách 2: Thông tin có thể gửi tới một trang khác bằng cách gắn vào sau mỗi URL của trang đó. Ví dụ để gửi hai thông tin là HoTen và Tuoi với giá trị tương ứng là TK34 và 2 cho trang XuLy.asp thì có thể thực hiện như sau:
XuLy.asp?HoTen=TK34&Tuoi=2
Cú pháp để gắn vào sau trang nhận như sau:
TrangNhan.asp ? Thuộc_Tính 1 = Giá trị1 & Thuộc_Tính 2 = Giá trị 2 & ….
Cách gửi này gọi là phương thức gửi kiểu ”GET”
Một số thuộc tính và phương thức thường dùng
2.2.1 Thuộc tính Form
Dùng để lấy giá trị của từng thuộc tính mà trang khác gửi tới bằng phương thức POST
Cú pháp:
Request.Form(“Tên_Thuộc_Tính_Cần_Lấy”)
Ví dụ: Trang1.asp có 2 ô textbox tên là HoTen và Tuoi. cho phép người dùng nhập vào và khi người dùng gửi đi (Submit) tới trang Trang2.asp. thì trang2.asp sẽ hiển thị lời chào tới người đó. Nội dung 2 file này sẽ như sau:
Trang1.asp
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
<title>Gửi dữ liệu sang trang khác</title>
</head>
<BODY>
Trang nhập thông tin : <br>
< FORM name="NhapLieu" action ="Trang2.asp" method="post">
Họ và tên : <Input type ="text" name="HoTen"> <br>
Tuổi : <Input type="text" name ="Tuoi"> <br>
<Input type="Submit" value="Gửi đi" name="cmdGui">
</ FORM >
</BODY>
</HTML>
Trang2.asp
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
<title>Nhận dữ liệu gửi từ trang khác </title>
</head>
<BODY>
<%
Dim HT , Tuoi
HT = Request.Form(“HoTen”)
Tuoi = Request.Form(“Tuoi”)
Response.write(“Chào bạn “ & HT &”. Tuổi của bạn : “ &Tuoi)
%>
</BODY>
</HTML>
Chú ý:
+ Muốn gửi thông tin trong các điều khiển (các textbox, textarea, checkbox, list…) đi thì các điều khiển đó phải đặt trong một Form (cặp thẻ <Form> …. </Form>) nào đó.
+ Trang web tiếp nhận thông tin đó sẽ được đặt trong thuộc tính Action của Form.
+ Phương thức gửi đi được chỉ định thông qua thuộc tính method. Đặt cho thuộc tính này giá trị hoặc là POST hoặc là GET.
+ Một trang có thể gửi (Post) đến chính trang đó. Điều này thường được áp dụng khi nội dung trang web là đơn giản (ví dụ trang Login), còn đối với các trang phức tạp (nhiều xử lý) thì nên gửi đến một trang riêng.
Ví dụ 2: Cho người dùng nhập vào năm sinh, sau đó tính toán và hiển thị tuổi của người đó. Cách thức ở đây là : Trang cho người dùng nhập năm sinh và trang để hiển thị kết quả là giống nhau.
Trang TinhTuoi.asp - Version 1
<%@language = vbscript %>
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
<title>Tinh tuoi</title>
</head>
<BODY>
<%
IFRequest.Form("NamSinh")="" THEN
Response.write (“<form name=Form1 action='TinhTuoi.asp' method=POST>”)
Response.write (“Nhap nam sinh cua ban : <Input type=text name=’NamSinh’>”)
Response.write (“<Input type=Submit value=’Gui di’>”)
Response.write (“</form>”)
ELSE
Response.write ("Tuoi cua ban la : " & (year(now) - Request.Form("NamSinh")))
END IF
Trang TinhTuoi.asp - Version 2
<%@language = vbscript %>
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
<title>Tinh tuoi</title>
</head>
<BODY>
<%
IFRequest.Form("NamSinh")="" THEN
%>
<FORM name=Form1 action="TinhTuoi.asp" method=POST>
Nhap nam sinh cua ban : <Input type=text name="NamSinh" >
<Input type=Submit value="Gui di">
</FORM>
<table>
<%
ELSE
Response.write("Tuoi cua ban la : " & (year(now) - Request.Form("NamSinh")))
END IF
%>
</BODY>
</HTML>
Version 3 – Sử dụng các trang xử lý riêng biệt
- ý tưởng: Ta tách làm 2 trang, một trang "Chuyên" hiển thị form nhập năm sinh, sau đó gửi tới một trang "chuyên" xử lý và hiển thị kết quả.
- Trang hiển thị form nhập do không có xử lý gì, do vậy ta chỉ cần tạo trang đó là trang HTM thông thường – NhapNamSinh.htm.
- Trang xử lý do phải dùng các câu lệnh ASP nên ta sẽ tạo trang ASP- TinhTuoi.asp
Trang NhapNamSinh.htm
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
<title>Nhap nam sinh </title>
</head>
<BODY>
<FORM Action="TinhTuoi.asp" method=POST>
Nhap nam sinh cua ban : <Input type=text name=NamSinh>
<Input type=Submit value="Gui di">
</FORM>
</BODY>
</HTML>
Trang TinhTuoi.asp
<%@language = vbscript %>
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
<title>Tinh tuoi</title>
</head>
<BODY>
<%
IFRequest.Form("NamSinh")= "" THEN
Response.Redirect("NhapNamSinh.htm")
ELSE
Response.write ("Tuoi cua ban la: " & (year(now)-Request.Form("NamSinh")))
END IF
%>
</BODY>
</HTML>
Cách (version) nào dễ dàng hơn đối với bạn ? 3 version có ưu và nhược điểm gì ? rút KL !
1.2.2 Thuộc tính QueryString
Dùng để đọc dữ liệu do trang khác gửi tới thông qua phương thức GET (Thường là gửi dữ liệu bằng cách gắn vào ngay sau liên kết - URL).
+ Cú pháp đọc dữ liệu gửi đến thông qua phương thức này như sau:
Request.QueryString("Tên_Thuộc_Tính_Cần_Lấy")
+ Ví dụ 1 : Gửi tới trang TinhTuoi.ASP năm sinh (đặt tên là NamSinh) có giá trị là 1980 ở dạng GET.
Khi đó, Hyperlink gửi đi có dạng :
http://www.tk34.com/TinhTuoi.asp?NamSinh=1980
Dòng địa chỉ trên có thể tạm dịch là "Gửi một thông tin có tên là NamSinh với giá trị 1980 đến trang TinhTuoi.ASP
Chú ý: Để gửi dữ liệu theo kiểu GET thì có thể gửi bằng cách gõ trực tiếp vào hộp địa chỉ (address) của trình duyệt hoặc có thể xây dựng một trang riêng, sau đó mới gửi.
Để tiếp nhận và xử lý dữ liệu này, nội dung trang TinhTuoi.asp sẽ như sau:
TinhTuoi.asp - Version 1
<%@language = vbscript %>
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
<title>Tinh tuoi</title>
</head>
<BODY>
<%
IFRequest.QueryString("NamSinh")= "" THEN
Response.write ("Bạn gõ địa chỉ có dạng: Domain/TinhTuoi.asp?NamSinh=So")
ELSE
Response.write ("Tuổi của bạn: " &(year(now)-Request.QueryString("NamSinh")))
END IF
%>
</BODY>
</HTML>
Với phiên bản này, rõ ràng khi muốn gửi dữ liệu cho một trang chúng ta phải gõ một cách thủ công !
Có thể gửi theo cách này nhưng dễ dàng được hơn không ? Ví dụ như cho người dùng nhập vào các ô textbox chẳng hạn ?
TinhTuoi.asp - Version 2
<%@language = vbscript %>
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8">
<title>Tinh tuoi</title>
</head>
<BODY>
<%
IFRequest.QueryString("NamSinh") = "" THEN
%>
<FORM name=Form1 action="TinhTuoi.asp" method=GET>
Nhap nam sinh cua ban : <Input type=text name="NamSinh" >
<Input type=SUBMIT value="Gui di">
</FORM>
<%
ELSE
Response.write ("Tuổi của bạn : " & (year(now)-Request.QueryString("NamSinh")))
END IF
%>
</BODY>
</HTML>
Kết quả hiển thị trên trình duyệt:
Khi lần đầu tiên mở trang TinhTuoi.asp
Sau khi nhập 1977 vào ô textbox (hãy để ý trên thanh địa chỉ)
Ví dụ 2: Giả lập một ứng dụng để hiển thị các sản phẩm và cho phép người dùng xem chi tiết mặt hàng khi người dùng click chọn hyperlink tương ứng.
Trong ứng dụng giả lập này, ta sẽ hiển thị 3 đầu mục sản phẩm có dạng :
HDD Seagate 40 GB Xem chi tiết
HDD Seagate 80 GB Xem chi tiết
HDD Seagate 160 GB Xem chi tiết
Khi người dùng click vào Hyperlink "Xem chi tiết" ở bên cạnh mỗi sản phẩm thì ta hiển thị thông tin tương ứng về sản phẩm đó.
Khi người dùng chọn một mục thì cần phải có thông tin gửi trả lại trang xử lý để biết họ đã chọn sản phẩm nào để hiển thị thông tin phù hợp ẩn chứa trong mỗi Hyperlink phải có những thông tin cần thiết, ví dụ một mã sản phẩm (MaSanPham) chẳng hạn Dùng hình thức gửi GET là phù hợp !
Trang ShowProduct.asp - Hiển thị sản phẩm và chi tiết sản phẩm: 2 in 1
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Hien thi san pham</title>
</head>
<BODY>
<%
IFRequest.QueryString("MaSanPham") = "" THEN
%>
<table border=0 cols=2 width="100%">
<TR>
<TD>HDD Seagate 20 GB </td>
<TD> <a href="ShowProduct.asp?MaSanPham=hdd20">Xem chi tiết</a> </td>
</TR>
<TR>
<TD>HDD Seagate 40 GB </td>
<TD> <a href="ShowProduct.asp?MaSanPham=hdd40">Xem chi tiết</a> </td>
</TR>
<TR>
<TD>HDD Seagate 80 GB </td>
<TD> <a href="ShowProduct.asp?MaSanPham=hdd80">Xem chi tiết</a> </td>
</TR>
</table>
<%
ELSE
SELECTCASERequest.QueryString("MaSanPham")
CASE "hdd20"
Response.write("ổ cứng Seagate 20 GB, giá 40 $")
CASE "hdd40"
Response.write("ổ cứng Seagate 40 GB, giá 80 $")
CASE "hdd80"
??? Request.QueryString("MaSanPham") = "" có nghĩa gì ?
Phiên bản ở trên : Sử dụng một trang vừa hiển thị vừa xử lý dữ liệu gửi đến (kiểu 2 in 1).
Ta có thể sử dụng cơ chế 1 in 1, tức là: Trang hiển thị riêng và trang hiển thị chi tiết riêng:
Trang HienThiSP.htm
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>HiÓn thÞ s¶n phÈm</title>
</head>
<BODY>
<table border=0 cols=2 width="100%">
<TR>
<TD>HDD Seagate 20 GB </td>
<TD> <a href=" ShowDetail.asp?MaSanPham=hdd20">Xem chi tiÕt</a> </td>
</TR>
<TR>
<TD>HDD Seagate 40 GB </td>
<TD> <a href=" ShowDetail.asp?MaSanPham=hdd40">Xem chi tiÕt</a> </td>
</TR>
<TR>
<TD>HDD Seagate 80 GB </td>
<TD> <a href=" ShowDetail.asp?MaSanPham=hdd80">Xem chi tiÕt</a> </td>
</TR>
</table>
</BODY>
</HTML>
Trang ShowDetail.asp
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>HiÓn thÞ chi tiÕt s¶n phÈm </title>
</head>
<BODY>
<%
IFRequest.QueryString("MaSanPham") <> "" THEN
SELECTCASERequest.QueryString("MaSanPham")
CASE "hdd20"
Response.write("æ cøng Reagate 20 GB, gi¸ 40 $")
CASE "hdd40"
Response.write("æ cøng Seagate 40 GB, gi¸ 80 $")
CASE "hdd80"
Response.write("æ cøng Seagate 80 GB, gi¸ 100 $")
END SELECT
ELSE
Response.write("B¹n vào trang ShowProduct.asp tríc ®· ! <BR>")
Response.write ("<a href = 'HienThiSP.htm'> < < Quay trë l¹i </a>")
END IF
%>
</BODY>
</HTML>
Nhận xét : Gửi dữ liệu theo kiểu POST khi nào ? và GET khi nào ?
Một số bài tập: (Sử dụng cả phương pháp gửi POST và GET)
- Viết trang web tra cứu từ điển. Cho người dùng nhập vào một từ tiếng Anh, trang web sẽ hiển thị nghĩa tiếng việt tương ứng.
- Viết trang web thực hiện tính toán với các phép toán, hàm đơn giản.
Đối tượng server
Là một đối tượng cung cấp một số hàm thường dùng trong ứng dụng. Có 2 phương thức được cung cấp bởi đối tượng server là Mappath và CreateObject.
Phương thức Mappath
Trả về đường dẫn vật lý từ đường dẫn (thư mục) ảo.
+ Cú pháp: Server.Mappath(“Đường dẫn ảo/ tương đối”)
+ Ví dụ: Có một địa chỉ như sau: http://localhost/HienThiSP.htm
Vị trí ảo của tệp Hienthisp.htm trên webserver
Trang web HienThiSP.htm có đường dẫn ảo là Localhost/HienThiSP.htm.
Đường dẫn vật lý (nằm trên ổ cứng của trang này) là: c:\inetpub\wwwroot\HienThisp.htm
Vị trí vật lý của tệp Hienthisp.htm trên ổ cứng.
Trong trường hợp này, Server.Mappath(“HienThiSP.htm”) sẽ cho ta kết quả là c:\inetpub\wwwroot\HienThisp.htm.
Như vậy hàm Mappath thực hiện ánh xạ từ đường dẫn ảo → đường dẫn vật lý.
Hàm này đặc biệt hay dùng khi chúng ta tham chiếu đến đường dẫn vật lý của các tệp CSDL khi kết nối.
Ví dụ:
Trang Mappath_Demo.asp
<%@ language = vbscript %>
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Mappath</title>
</head>
<BODY>
Duong dan vat ly cua mot so trang web : <br>
<%
Response.write (server.mappath("HienThiSP.htm"))
Response.write ("<BR>")
Response.write (server.mappath("/HienThiSP.htm"))
Response.write ("<BR>")
Response.write (server.mappath("/data/nwind.mdb"))
Response.write ("<BR>")
%>
</BODY>
</HTML>
Kết quả:
Kết quả
Lưu ý: Nếu tệp không tồn tại hoặc đường dẫn ảo đưa vào sai thì hàm trả về sẽ là một xâu gồm đường dẫn tới thư mục wwwroot cộng với xâu đặt trong mappath.
Hỏi : Không cần dùng đến Mappath có được không ?
Phương thức CreateObject
Tạo ra một số đối tượng. Ví dụ tạo ra các đối tượng truy xuất đến CSDL.
+ Cú pháp:
Set <Tên_Biến> = Server.CreateObject(“Xâu mô tả đối tượng cần tạo”)
Xâu thường dùng (đối tượng thường được tạo): ADODB.Connection và ADODB.Recordset.
+ Ví dụ :
Tạo một đối tượng Connection và đối tượng Recordset
Dim Conn, Rs
Set Conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
Đối tượng session – biến sesstion
Đối tượng Session : Dùng để quản lý các thông tin liên quan đến một phiên làm việc.
Một phiên (Session) làm việc là gì ?: Mỗi khi mở trình duyệt (lần đầu tiên) vào website ứng dụng, ta đã tạo ra một phiên làm việc. Phiên làm việc kết thúc khi ta ra khỏi website ứng dụng hoặc khi tất cả các cửa sổ trình duyệt bị đóng.
Biến Sesstion
Khi vào một website, người dùng có thể duyệt rất nhiều trang web của website đó. Nếu muốn lưu trữ thông tin về khách thăm này trong cả phiên làm việc thì có thể lưu vào các biến, gọi là biến Session.
Đối tượng Session
Là đối tượng dùng để quản lý (tạo, đọc, ghi) các biến sesstion và một số thông số khác.
+ Cú pháp để tạo biếnSession như sau:
Session(“Tên_Biến”) = <Giá trị>
Lưu ý: Tên biến phải đặt trong cặp dấu nháy kép. <Giá trị> có thể là xâu ký tự hoặc số.
Ví dụ : Tạo một biến tên là MaNguoiDung và gán giá trị là TK34
Session(“MaNguoiDung”) = “TK34”
+ Cú pháp để đọc giá trị của một biến sesstion như sau:
Session(“Tên_Biến”)
+ Cú pháp để ghi (thay đổi) giá trị của biến session:
Session(“Tên_Biến”) = <Giá trị>
Ví dụ:
Response.write(“Mã người dùng là : “ &Session(“MaNguoiDung”))
Riêng với đối tượng Session, nó còn có các sự kiện. Các sự kiện này tự động được gọi mỗi khi một phiên làm việc được tạo ra. Các sự kiện này có tên là On_Start và On_End. Các sự kiện này được đặt trong file Global.asa.
File Global.asa
<script LANGUAGE = "VBScript" RUNAT = Server>
'/// Thủ tục này được gọi khi bắt đầu một phiên
SUB Session_OnStart
'........
Session("MaNguoiDung") = "Khách_Lạ"
'.........
END SUB
'/// Thủ tục này được gọi khi kết thúc một phiên
SUB Session_OnEND
'........
END SUB
</SCRIPT>
Ví dụ đọc giá trị biến Session:
File Session_Demo.asp
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Đọc giá trị của biến Session có tên là MaNguoiDung</title>
</head>
<BODY>
<%
Response.write("<BR>Bạn là : " &Session("MaNguoiDung"))
%>
</BODY>
</HTML>
Ví dụ: Chỉ hiển thị các trang chủ (Home.asp) nếu người dùng có tên (UserName) là TK34 và mật khẩu là 123456. Nếu không thì hiển thị trang Login.asp để người dùng đăng nhập.
Trang Global.asa
<script LANGUAGE = "VBScript" RUNAT = Server>
'/// Thu tuc nay duoc goi khi bat dau mot phien
SUB Session_OnStart
'........
Session("MaNguoiDung") = ""
Session("MatKhau") = ""
Session("TrangThaiDangNhap") = "cha"
'.........
END SUB
'/// Thu tuc nay duoc goi khi ket thuc phien lam viec
SUB Session_OnEND
'........
END SUB
</SCRIPT>
Trang Login.asp
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Dang nhap</title>
</head>
<BODY>
<%
IFRequest.Form("MaNguoiDung")= "TK34" and Request.Form("MatKhau")="123456" THEN
Session("MaNguoiDung") = Request.Form("MaNguoiDung")
Session("MatKhau") = Request.Form("MatKhau")
Session("TrangThaiDangNhap") = "rồi"
Response.write("Bạn đã đăng nhập thành công ! Bạn có thể vào ")
Response.write("<a href = 'Home.asp'>Trang chủ </a>")
ELSE ‘/// Tạo form đăng nhập
Session("TrangThaiDangNhap") = "chưa"
Response.write("<form action='Login.asp' method = 'Post'>")
Response.write("Tên đăng nhập: <Input type = text name = MaNguoiDung> <BR>")
Response.write("Mật khẩu : <Input type = password name = MatKhau> <BR>")
Response.write("<Input type = Submit value = 'Đăng nhập'>")
Response.write("</form>")
END IF
%>
</BODY>
</HTML>
Trang Home.asp
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Trang chủ</title>
</head>
<BODY>
<%
IF Session("TrangThaiDangNhap") = "rồi" THEN
Response.write("<h2>Đây là trang chủ của lớp TK34 !</h2>")
Response.write("<h1>Chào mừng bạn đã ghé thăm website của chúng tôi !")
ELSE
Response.write("Bạn chưa đăng nhập ! <a href = 'Login.asp'> Đăng nhập. </a>")
END IF
%>
</BODY>
</HTML>
*Lưu ý: Có thể tạo biến Session ở bất kỳ đâu chứ không nhất thiết ở trong file Global.asa
??? Dùng biến Session khi nào ?
Đối tượng application
Dùng để quản lý các biến có phạm vi toàn ứng dụng.
Khái niệm biến toàn ứng dụng
Biến toàn ứng dụng là biến có tác dụng đối với mọi người dùng truy cập vào website.
Đối tượng Application
Dùng để quản lý (Tạo, đọc, ghi) các biến có phạm vi toàn ứng dụng.
+ Cú pháp tạo biến Application:
Application(“Tên_Biến”) = <Giá trị>
+ Ví dụ: Tạo biến So_Nguoi_Truy_Cap
Application(“So_Nguoi_Truy_Cap”) = 0
+ Ví dụ : Đọc và ghi biến Application
Application(“So_Nguoi_Truy_Cap”)= Application(“So_Nguoi_Truy_Cap”) + 1
Response.write(“Bạn là vị khách thứ: “ & Application(“So_Nguoi_Truy_Cap”))
Lưu ý: Khi biến đã tồn tại thì lệnh trên được hiểu là gán giá trị mới, còn nếu chưa tồn tại thì được hiểu là tạo biến.
Đối tượng Application cũng có 2 sự kiện đó là Application_OnStart và Application_OnEND. Sự kiện OnStart chỉ được kích hoạt duy nhất một lần khi yêu cầu đầu tiên phát sinh. Sự kiện OnEND được kích hoạt khi dịch vụ web dừng (unload).
Đối tượng Application có 2 phương thức là Lock và Unlock. Khi gọi phương thức Lock (khóa) thì tất cả các ứng dụng không được phép thay đổi các giá trị Application. Để các ứng dụng khác được phép thay đổi các biến Application thì gọi phương thức Unlock.
Mã lệnh viết cho 2 sự kiện này cũng được đặt trong file Global.asa.
Ví dụ tổng hợp
Mỗi khi người dùng truy cập vào website thì hiển thị cho người đó biết là vị khách thứ bao nhiêu – chẳng hạn hiển thị trong trang Home.asp.
Trang Global.asa
<script LANGUAGE = "VBScript" RUNAT = Server>
'/// Thu tuc nay duoc goi duy nhat mot lan
SUB Application_OnStart
Application("SoKhachTruyCap") = 0
END SUB
'/// Thu tuc nay duoc goi khi IIS stop
SUB Application_OnEND
Application("SoKhachTruyCap") = 0
END SUB
'/// Thu tuc nay duoc goi khi bat dau mot phien
SUB Session_OnStart
'........
Application("SoKhachTruyCap") = Application("SoKhachTruyCap") + 1
'.........
END SUB
</SCRIPT>
Trang Home.asp
HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Trang chu</title>
</head>
<BODY>
<%
Response.write("<h2>Day la trang chu cua lop TK34 !</h2>")
Response.write("<h1>Chao mung ban da ghe tham website cua chung toi !")
Response.write("<hr>")
Response.write("Ban la vi khach thu : " &application("SoKhachTruyCap"))
%>
</BODY>
Chèn file vào trang asp
Rất nhiều trang có những phần thông tin giống hệt nhau (Ví dụ phần Đầu trang, chân trang hay phần kết nối đến CSDL) Để nhanh chóng, dễ dàng sửa đổi, bảo trì, ASP cho phép người dùng chèn một trang vào trang web hiện tại.
Cú pháp chèn file:
<!-- #include Loại_Đường_Dẫn = Tên_File -->
+ Loại_Đường_Dẫn có thể là File hoặc Virtual.
Nếu Loại_Đường_Dẫn = File thì Tên_File là đường dẫn tương đối tính từ thư mục hiện hành.
Nếu Loại_Đường_Dẫn = Virtual thì Tên_File sẽ là đường dẫn ảo đầy đủ.
Ví dụ 1:
<!-- #include File = “Home.asp” -->
Ví dụ 2 :
<!-- #include Virtual = “/Data/KetNoi.asp” -->
Ví dụ tổng hợp
Tạo một trang web chứa footer cung cấp thông tin liên hệ. Footer này xuất hiện trong tất cả các trang, trong đó có trang Home.asp.
Các bước tiến hành: Tạo một trang chứa nội dung footer, đặt tên là Footer.asp
Sau đó Include vào các trang – ví dụ trang Home.asp
Trang Footer.asp
<hr>
<h4 style="text-align:center">
© by TK34 - UTEHY 2006. Telephone: 0321-123456/ Fax: 0321-713015; E-Mail: TK34@googlegroups.com
</h4>
Lưu ý:
- Thường thì các trang được Include như thế này có đuôi mở rộng là *.inc
- Nội dung các trang Include có thể chứa cả thẻ HTML và cả mã lệnh asp
Trang Home.asp (Có Include trang Footer.asp)
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Trang chu</title>
</head>
<BODY>
<%
Response.write("<h2>Day la trang chu cua lop TK34 !</h2>")
Response.write("<h1>Chao mung ban da ghe tham website cua chung toi !")
Response.write("<BR>")
Response.write("Ban la vi khach thu : " &application("SoKhachTruyCap"))
%>
<!-- #include file = "Footer.asp" -->
</BODY>
</HTML>
Kết quả khi hiển thị trang home.asp