Đối tượng Session là đối tượng được web server tự động khởi tạo khi trang web đầu
tiên của ứng dụng đƣợc ngƣời sử dụng gọi, đối tƣợng Session đƣợc dùng để lưu lại các thông
tin của các người dùng tại một phiên làm việc nhƣ tên, id v.v., đối tượng này sẽ tồn tại cho
đến khi bị huỷ hay hết hiệu lực (time out)
Cú pháp : Session.Collecton | Property | Method
- Các thuộc tính :
CodePage : để yêu cầu webserver mã hoá dữ liệu trong các hằng, biến chuỗi theo
bảng mã sẽ đƣợc dùng để hiển thị tại client. Ví dụ sau đây yêu cầu webserver mã hoá các
chuỗi dữ liệu theo bảng mã UTF-8:
26 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 2039 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Lập trình web - Chương 4: Ngôn ngữ kịch bản vbscript, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
- 38 -
Chƣơng 4: NGÔN NGỮ KỊCH BẢN VBSCRIPT
4.1. Mở đầu
VBScript là ngôn ngữ kịch bản chính để lập trình ứng dụng web phía server khi sử dụng
công nghệ ASP. Các định danh trong VBScript không phân biệt chữ hoa hay chữ thƣờng.
VBScript cho phép các lập trình viên phát triển website tạo các trang web động cho
ngƣời dùng sử dụng các trình duyệt web nhƣ Internet Explorer mà với HTML, ta không có
đƣợc nhiều những khả năng này. VBScript có thể làm những việc đơn giản nhƣ in ra ngày
tháng hiện tại, truy cập vào các hệ thống file Server hay web Server và cung cấp các công cụ
để ta có thể phát triển các ứng dụng web.
VBScript is a prerequisite for ASP developers and should be learned thoroughly before
attempting any sophisticated ASP programming. Programmers who have used Visual Basic in
the past will feel more at home when designing their dynamic web pages with VBScript, but it
should be known that only visitor's using Internet Explorer will be able to access your code,
while other browsers will not be able to process the VBScript code.
VBScript là thành phần không thể thiếu với những ngƣời học lập trình ASP và nên
đƣợc tìm hiểu một cách kỹ lƣỡng trƣớc khi phát triển bất kỳ một hệ thống ASP phức tạp nào.
Những lập trình viên đã biết ngôn ngữ Visual Basic sẽ dễ dàng hơn khi tiếp cận VBScript.
Một điều cần chú là chỉ những ngƣời dùng sử dụng trình duyệt IE mới có khả năng truy cập
đƣợc các mã lệnh VBScript.
JavaScript có thể làm đƣợc gì ?
DHTML là tập hợp các công cụ cho phép tạo ra các trang web tƣơng tác, có thể thay đổi
nội dung và thể hiện.
Điều khiển trình duyệt.
Xử l dữ liệu trong các ứng dụng cilent-side, kiểm tra tính hợp lệ dữ liệu trong
các form.
Lƣu các trạng thái trong cookies.
JavaScript không thể làm đƣợc gì ?
Không đọc / ghi file
Không hỗ trợ mạng
Không tạo ra các đối tƣợng đồ họa.
4.2. Cú pháp cơ bản của VBScrip
4.2.1. Khai báo hằng, biến, mảng
Biến trong VBScript không cần xác định kiểu, các biến không cấu trúc đƣợc xem là
biến vô hƣớng, có thể chứa và tự chuyển đổi hầu hết các kiểu dữ liệu. Khai báo biến bằng từ
khóa Dim. Ví dụ:
<%
Dim x, y
x = 5
y = “2”
Response.Write(x+y)
„ Kết quả in ra màn hình là : 7
%>
- 39 -
Hằng đƣợc khai báo bằng từ khóa Const. Ví dụ:
<%
Const p = 3.14
Const str=”Danang College of Education”
%>
Mãng đƣợc định nghĩa và truy xuất thông qua chỉ số. Ví dụ :
<%
Dim A(5)
„ Mãng gồm 5 phần tử, phần tử đầu tiên có chỉ số là 0
A(0)= 5
...
A(5) = 0
%>
Để khai báo mãng động (có thể thay đổi kích thƣớc) : Dim A(). Sau đó ta có thể thay
đổi kích thức qua lệnh REDIM. Ví dụ : ReDim A(6).
Nếu muốn áp đặt phải khai báo biến trƣớc khi sử dụng (và đây là điều cần thiết) ta
khai báo trƣớc thẻ dòng lệnh
Để hiển thị giá trị một biểu thức trên trang web ta dùng một trong hai phƣơng pháp :
Sử dụng phƣơng thức Write của Object Response: Response. Write(bthức)
Sử dụng cách viết tắt của Response. Write(bthức) :
4.2.2. Chú thích
Sử dụng dấu nháy đơn để bắt đầu một dòng ghi chú. Ví dụ :
<%
„In ra chuỗi Hello World !
Response.Write(“Hello World !”)
%>
4.2.3. Các toán tử
Các toán tử số học : +, -, *, / , mod, \ (chia lấy phần nguyên), ^ (lũy thừa)
Các toán tử so sánh : =, >, = và
Các toán tử logic : NOT, AND, OR, XOR
Các toán tử cộng chuỗi : + hoặc &
4.2.4. Các cấu trúc điều khiển
Các lệnh điều khiển rẽ nhánh
if ... then và if ... then ... else
select case
Ví dụ 1:
<%
Dim ngay
Ngay = #23/07/2005#
If ngay<Now then
Response. Write(“Trƣớc đây”)
- 40 -
„Now là hàm trả về ngày hiện tại của hệ thống
Else
Response. Write(“Sau này”)
End if
%>
Ví dụ 2:
<%
Dim so
So = 7
Select case (So mod 2)
Case 0
Response.Write(so&” là một số chẳn”)
Case 1
Response.Write(so&” là một số lẻ”)
End Select
%>
Các lệnh lặp
VBScript cung cấp 4 dạng câu lệnh lặp mà chúng ta đã nghiên cứu trong VB:
For ... Next : lặp với số lần xác định
For Each... Next : lặp với các phần tử trong một tập hợp
Do ... Loop : lặp trong khi điều kiện kiểm tra của Loop còn đúng. Câu lệnh này
có 2 biến thể: Do ... While và Do ... Until.
While ... Wend : lặp trong khi điều kiện kiểm tra của While còn đúng.
4.2.5. Hàm và Thủ tục
Hàm
Khai báo một hàm : Function ... End Function
Hàm trả về một giá trị thông qua tên gọi hàm n ên có thể tham gia trong một biểu thức
nhƣ một toán hạng.
VBScript có một số hàm dựng sẵn (cách sử dụng tƣơng tự nhƣ trong VB):
Các hàm toán học : ATN, COS, SIN, TAN, EXP, LOG, SQR, RND, INT
Các hàm thao tác trên chuỗi :
INSTR : trả về vị trí bắt đầu của một chuỗi con subStr trong một chuỗi khác Str. Cú
pháp InStr(subStr, Str).
LEN : trả về số k tự của một chuỗi.
LCASE : chuyển một chuỗi viết thƣờng sang viết hoa, tƣơng tự cho UCASE
LTRIM : trả về một chuỗi đã loại bỏ các k tự trống phía bên trái. Tƣơng tự, ta có các
hàm RTRIM, TRIM
STRING : trả về một chuỗi gồm một số k tự giống nhau. Ví dụ : String(5,”b”) cho lại
chuỗi “bbbbb”
LEFT : trả về một chuỗi con trong một chuỗi Str bắt đầu từ vị trí đầu tiên bên trái cho
đến k tự thứ num. Cú pháp: LEFT(Str, num). Tƣơng tự ta có hàm RIGHT.
MID : trả về một chuỗi con gồm num k tự trong một chuỗi Str bắt đầu từ vị trí pos Cú
pháp: MID(Str, pos, num)
- 41 -
Các hàm về ngày giờ: DATE, TIME, NOW, WEEKDAY, WEEKDAYNAME,
YEAR, MONTH, DAY, HOUR, MINUTE, SECOND.
DATEDIFF : trả về số ngày tồn tại giữa hai ngày
DATEADD : cộng thêm số ngày trả về số ngày mới
Các hàm chuyển đổi kiểu dữ liệu
ABS : trả về giá trị tuyệt đối của một số
ASC : trả về mã ASCII của một k tự
ASCW : trả về mã Unicode của một k tự
CHR : trả về k tự có mã theo AINSI
CDATE : trả về giá trị của đối số theo variant có kiểu là Date
ROUND : làm tròn số
Các hàm kiểm tra
ISARRAY : kiểm tra một biểu thức có phải là một mảng hay không.
ISDATE : kiểm tra một biểu thức có phải kiểu Date hay không.
ISEMPTY : kiểm tra một biến đã đƣợc khởi tạo chƣa.
ISNULL : kiểm tra một biểu thức có phải là NULL không
ISNUMERIC : kiểm tra một biểu thức có phải là số không
Thủ tục
Khai báo một thủ tục : Sub ... End Sub
Gọi một thủ tục : call tên_thủ_tục
Ví dụ : xây dựng hàm chuyển đổi độ C sang độ F
<%
Function Celsius(fDegrees)
Celsius = (fDegrees-32)*5/9
„ gán giá trị cho hàm
End Function
„ thủ tục in ra cửa sổ trang web kết quả chuyển đổi
Sub ConvertTemp()
Response. Write(“Nhiệt độ là :”&Celsius(95)&” độ C”)
End Sub
„Gọi thủ tục
Call ConvertTemp
%>
4.3. Tƣơng tác giữa VBScript và HTML
VBScript là ngôn ngữ lập trình kiểu thông dịch dành cho Web. Khi đoạn mã VBScript
đƣợc chèn vào trang HTML thì trình duyệt Web sẽ thông dich và thực hiện. VBScript do
Microsoft phát triển. Cú pháp của nó gần giống nhƣ Visual Basic. VBScript là ngôn ngữ
script đƣợc viết phía client và nó chỉ đƣợc hổ trợ tốt nhất trên trình duyệt Internet Explore của
Microsoft.
Vị trí đặt đoạn mã VBScript:
Đoạn script sẽ thực thi ngay khi trang web đƣợc mở
Đặt giữa tag và
- 42 -
Khi đoạn script đặt giữa tag ... thì bảo đảm nó sẽ đƣợc thực thi trƣớc
khi gọi hàm
Ví dụ:
CODE
các câu lệnh
Đặt giữa tag và
Đoạn script trong phần body đƣợc thực thi khi trang web đang mở
Ví dụ:
CODE
các câu lệnh
Đặt giữa tag và hay và
Đoạn script có thể đặt trong phần đầu hay phần thân của tag HTML. Số lƣợng đoạn
script không hạn chế
Ví dụ:
CODE
các câu lệnh
some statements
4.4. Các đối tƣợng của trình duyệt
Đối tƣợng (Object) là tập hợp các thuộc tính, phƣơng thức. Trong VBScript có những
đối tƣợng đƣợc xây dựng sẵn để mở rộng khả năng của ngôn ngữ, hỗ trợ việc xây dựng các
kịch bản mạnh hơn.
4.4.1. Đối tượng ERR
Đối tƣợng ERR chứa các thuộc tính mang thông tin về lỗi của VBScript và các phƣơng
thức xử l lỗi. Khi chƣơng trình phát sinh lỗi, cần nắm bắt và xử l các lỗi phát sinh bằng
cách khai báo dòng lệnh vào đầu trang ASP hay đầu của hàm,
thủ tục của ngƣời viết script tạo ra.
- 43 -
- Thuộc tính
Number, Description : cung cấp mã lỗi và mô tả lỗi
HelpFile : tên đƣờng dẫn tệp tin trợ giúp
Source : nơi xuất hiện lỗi
- Phương thức:
Clear : xoá các thông tin trong đối tƣợng ERR
Raise : tự tạo mã lỗi, khi sử dụng phƣơng thức này ngƣời viết script phải cung cấp đầy
đủ các thông tin cho các thuộc tính của đối tƣợng ER
4.4.2. Đối tượng kịch bản DICTIONARY
Đối tƣợng Dictionary cung cấp phƣơng thức lƣu trữ và truy xuất thông tin thuận lợi,
tƣơng tự nhƣ mãng. Muốn sử dụng đối tƣợng Dictionary cần phải tạo một thể hiện (instance)
của đối tƣợng này qua lệnh :
CreateObject(“Scripting.Dictionary”)
Để thiết lập chỉ mục và giá trị cho một mục thông tin ta sử dụng phƣơng thức Add với
hai tham số : chỉ mục, nội dung hoặc gán nội dung trực tiếp cho từng phần tử của thể hiện.
- Thuộc tính :
Count : lƣu trữ số phần tử trong thể hiện
- Phương thức :
Add : thêm một chỉ mục và nội dung của một phần tử trong thể hiện
Remove : loại bỏ một phần tử trong thể hiện.
RemoveAll : loại bỏ tất cả các phần tử trong thể hiện.
Items : trả về mảng lƣu trữ các Item của thể hiện
Keys : trả về mảng lƣu trữ các chỉ mục của thể hiện
Ví dụ : tạo một thể hiện của đối tƣợng Dictionary để lƣu trữ số điện thoại và tên chủ
thuê bao.
<%
Dim DanhBa, ListOfCustomer, num
Set DanhBa = CreateObject(“Scripting.Dictionary”)
DanhBa.Add “841323”,” Trƣờng Đại học Sƣ phạm”
DanhBa(“842308”) = “Trƣờng Đại học Bách khoa”
„ Truy xuất thông tin
Response.Write(DanhBa.Item(“841323”))
„ In ra dòng Trƣờng Đại học Sƣ phạm
„ Ta dùng mảng Keys và thuộc tính Count để duyệt các phần tử của thể hiện
ListOfCustomer = DanhBa.Items
num = DanhBa.Count - 1
For i = 0 to num Response.Write(ListOfCustomer[i]&””)
%>
4.4.3. Đối tượng FileSystemObject
Đối tƣợng FileSystemObject cho phép làm việc với tệp tin và thƣ mục trên webserver.
Muốn sử dụng đối tƣợng FileSystemObject phải tạo một thể hiện của đối tƣợng này với cú
pháp : CreateObject(“Scripting.FileSystemObject”)
- Một số phương thức :
CopyFile : sao chép tệp tin. Sử dụng nhƣ hệ điều hành DOS
- 44 -
Ví dụ ta có FS là một thể hiện của FileSystemObject:
FS.CopyFile “C:\*.*” C:\backup”
MoveFile, CopyFolder, CreateFolder, DeleteFile, DeleteFolder
DriverExists, FolderExists, FileExists : kiểm tra sự tồn tại của một ổ đĩa ,...
GetDrive, GetFolder, GetFile : lấy tên ổ đĩa, thƣ mục, tệp tin chỉ định.
- Các đối tượng và tập hợp của thể hiện đối tượng FileSystemObject
Đối tƣợng File :
Các thuộc tính : Name. DateCreated, DateLastAccessed, DateLastModified, Size,
Drive (ổ đĩa chứa tệp tin), ParentFolder
Các phương thức : Copy, Delete và Move
Đối tƣợng Folder : có các thuộc tính và phƣơng thức nhƣ đối tƣợng File, ngoài ra
còn có các thuộc tính SubFolder (tập các thƣ mục con) và IsRoot (có phải là thƣ mục gốc hay
không)
Đối tƣợng Drive và tập hợp Drives (tập hợp các ổ đĩa của webserver)
Thông qua tập hợp Drives ta có thể truy xuất đến các đối tƣợng Drive. Đối tƣợng
Drive có các thuộc tính :
- DriveLetter : Tên ổ đĩa
- VolumeName : Label của ổ đĩa
- FreeSpace : Dung lƣợng còn trống của ổ đĩa (tính theo byte)
- TotalSize : Dung lƣợng của ổ đĩa (tính theo byte)
- IsReady : đĩa đã sẵn sàng truy cập chƣa
- DriveType : kiểu ổ đĩa (1: Removable, 2: HardDisk, 3: Network Drive, 4: CD, 5:
Ram Drive)
- FileSystem: loại bảng FAT đang sử dụng
- RootFolder : trả về thƣ mục gốc.
Ví dụ : Viết script để hiển thị thông tin về các ổ dĩa của webserver và các tệp tin, thƣ
mục con của thƣ mục C:\
<%
„ Thông tin về các ổ đĩa
Dim Fs, Drv, Drvs
„ Fs : FileSystem Object
Set Fs = CreateObject(“Sripting.FileSystemObject”)
Set Drvs = Fs.Drives
For each Drv in Drvs
If Drv.IsReady = True then
Response.Write(“Drive: “&Drv.VolumeName &””)
Response.Write(“Space Free: “&Drv.FreeSpace&” bytes”+””)
Else
Response.Write(“Drive isn‟t ready “+””)
End If
Next
„ Thông tin về các thư mục con và tệp tin của C:\
Dim Fo, RootDir, RootFiles
„ Fo : FileObject
- 45 -
Set Drv = Fs.GetDrive(“C:”)
Set RootDir = Drv.RootFolder
Set RootFiles = RootDir.Files
For Each Fo in RootFiles
Response.Write(Fo.Name&””)
Next
Set Fs = Nothing
„ Giải phóng biến Fs khỏi bộ nhớ
%>
Ngoài đối tƣợng FileSystemObject, VBScript còn có đối tƣợng TextStream cho phép
ta tạo ra một tệp tin hay thêm dữ liệu vào một tệp tin đã tồn tại.
CÂU HỎI VÀ BÀI TẬP
5. Viết một script cho lại các mục của trình đơn để giải phƣơng trình bậc nhất, phƣơng
trình bậc hai một ẩn
6. Viết một script cho phép nhập dữ liệu vào mãng. Hãy sắp xếp mãng đó theo phƣơng
thức Sort và in ra kết quả (Sử dụng phƣơng thức document.write biến)
7. Viết một script cho phép nhập một chuỗi k tự. Cho biết độ dài của chuỗi, số từ trong
chuỗi, xóa bỏ các khoảng trống không có nghĩa trong chuỗi.
8. Tạo một lịch gồm có các thông tin : ngày, tháng, năm để ngƣời sử dụng có thể tra cứu
thông tin theo thời gian đã lựa chọn (không dùng đối tƣợng ActiveX)
(Tạo lịch giống đối tƣợng ActiveX, nhƣng chỉ sử dụng JavaScript: tham khảo tại địa chỉ
hay thƣ viện JavaScript trên
- 46 -
Chƣơng 5: ACTIVE SERVER PAGE.
5.1. Mô hình các lớp
Trong phát triển ứng dụng, để dễ quản l các thành phần của hệ thống, cũng nhƣ
không bị ảnh hƣởng bởi các thay đổi, ngƣời ta hay nhóm các thành phần có cùng chức năng
lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và
ảnh hƣởng lẫn nhau. Ví dụ trong một công ty bạn có từng phòng ban, mỗi phòng ban sẽ chịu
trách nhiệm một công việc cụ thể nào đó, phòng này không đƣợc can thiệp vào công việc nội
bộ của phòng kia nhƣ Phòng tài chính thì chỉ phát lƣơng, còn chuyện lấy tiền đâu phát cho các
anh phòng Marketing thì các anh không cần biết. Trong phát triển phần mềm, ngƣời ta cũng
áp dụng cách phân chia chức năng này. Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều
lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3
lớp này là gì? Là Presentation, Business Logic, và Data Access. Các lớp này sẽ giao tiếp với
nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng
không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình
và sử dụng nó mà thôi.
Presentation Layer
Lớp này làm nhiệm vụ giao tiếp với ngƣời dùng cuối để thu thập dữ liệu và hiển thị
kết quả/dữ liệu thông qua các thành phần trong giao diện ngƣời sử dụng. Lớp này sẽ sử dụng
các dịch vụ do lớp Business Logic cung cấp.
Business Logic Layer
Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớpData Access
cung cấp, và cung cấp các dịch vụ cho lớp Presentation. Lớp này cũng có thể sử dụng các dịch
vụ của các nhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình.
Data Access Layer
Lớp này thực hiện các nghiệp vụ liên quan đến lƣu trữ và truy xuất dữ liệu của ứng
dụng. Thƣờng lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu nhƣ SQL
Server, Oracle, để thực hiện nhiệm vụ của mình. Trong lớp này có các thành phần chính là
Data Access Logic, Data Sources, Servive Agents).
MVC là một trong những mô hình các lớp đƣợc sử dụng rộng rãi .MVC có ba thành
phần giống nhƣ tên gọi - controller,views và model. Mặc dù các thành phần này là những
khái niệm logic nhƣng thƣờng là để làm cho chúng rõ ràng hơn, các ứng dụng thƣờng chia nó
làm 3 thành phần vật l . Mô hình này có tất cả các thao tác nghiệp vụ, bao gồm cả các giao
tiếp với lớp truy cập cơ sở dữ liệu. View biểu diễn Model dƣới dạng các mẫu tƣơng tác với
ngƣời dùng, thông thƣờng là các phần tử giao diện ngƣời dùng. Controller đáp ứng lại các sự
kiện, thƣờng là các thao tác của ngƣời dùng và gọi tới các Model và View thích hợp. Luồng
hoạt động cơ bản của MVC bao gồm các bƣớc sau:
1. Ngƣời dùng tƣơng tác với giao diện ngƣời dùng (User Interface) theo một số cách nào
đó ( vd: nhấn một nút).
2. Controller nhận đƣợc thông điệp của ngƣời dùng từ giao diện ngƣời dùng.
3. Controller truy cập và Model, để cập nhật các thay đổi thích hợp tƣơng ứng với hành
động của ngƣời dùng.
4. Model đáp ứng lại các thay đổi của View
5. View sử dụng Model để tạo ra giao diện thích hợp với ngƣời dùng.
6. Giao diện ngƣời dùng chờ các thao tác tiếp theo của ngƣời dùng để tiếp tục một chu
kỳ mới.
- 47 -
Tổng quát về MVC, các yêu cầu đƣợc chuyển trực tiếp tới Controller, nơi nó sẽ thực
thi Model (hoặc điều gì đó) liên quan tới hành động cần đáp ứng, và cuối cùng nó thực thi
View (hoặc điều gì đó) liên quan tới các hành động đó.
5.2. Thiết lập WebServer
5.2.1. ASP (Active Server Page)
ASP do Microsoft xây dựng, là môi trường lập trình ứng dụng phía server, hỗ trợ cho
việc xây dựng các ứng dụng web. ASP không phải phải là một công nghệ độc lập, nó cho
phép liên kết nhiều ứng dụng web gồm các thành phần HTML, VBScript, SQL, ADO
(ActiveX Data Objects) và COM (Component Object Model)
ASP đƣợc hỗ trợ mặc định khi cài đặt IIS(Internet Information Server), trong môi
trƣờng hệ điều hành khác cần thiết phải cài đặt thƣ viện hỗ trợ ASP nhƣ Sun Chili!Soft.
Những ƣu điểm và nhƣợc điểm của ASP:
Ưu điểm : Sử dụng ADO để thao tác trên cơ sở dữ liệu thuận lợi, có nhiều đối tƣợng
dựng sẵn hỗ trợ việc lập trình dễ dàng, nhanh chóng. Đặt biệt, ASP có tính mở, nó cho phép
ngƣời lập trình dùng một ngôn ngữ lập trình khác để xây dựng các component để xử dụng
trong môi trƣờng ASP.
Nhược điểm : Tốc độ thực hiện chậm hơn công nghệ Java Servlet của Sun, tính bảo
mật thấp vì các mã ASP đều có thể đọc đƣợc nếu ngƣời dùng có quyền truy cập vào web
server
5.2.2. Trang ASP
Trang ASP là một text file có phần mở rộng là .asp, có cấu trúc nhƣ một tệp tƣ liệu
HTML, trong trang ASP còn các thẻ khác để nhúng các mã kịch bản để làm việc với dữ liệu
nhƣ một ngôn ngữ lập trình thật sự. Khi webserver nhận đƣợc yêu cầu từ client về một trang
asp, nó sẽ yêu cầu trình xử l trang asp (ASP engine) để tạo ra một tệp tƣ liệu HTML gửi về
cho client.
Ngôn ngữ kịch bản mặc nhiên trong môi trƣờng ASP là VBScript, ngoài ra có thể sử
dụng các ngôn ngữ khác nhƣ Perl, Python, Jscript ... nếu webserver có cài đặt bộ xử l ngôn
ngữ này. Một trang ASP thông thƣờng gồm có các thành phần :
- 48 -
Khai báo ngôn ngữ kịch bản đƣợc sử dụng :
Các thẻ HTML
Các script cho phía client đƣợc đặt trong cặp thẻ và
Mã chƣơng trình đƣợc đặt trong cặp thẻ
Với cấu trúc nhƣ vậy, ta có thể xem trang asp là một tƣ liệu HTML đƣợc nhúng phần
xử l viết bằng mã ASP.
Ví dụ :
Trang ASP
Trang Web đầu tiên
<%
Response.Write(“Hôm nay ngày :” &Date())
%>
5.2.3. IIS (Internet Information Server)
IIS là thành phần hạt nhân của web server, nó có nhiệm vụ nhận yêu cầu của client, xử
l và chuyển các trả lời đến client thông qua giao thức HTTP. Ngoài ra nó cũng cung cấp các
giao diện lập trình Internet, dịch vụ nhƣ FTP.
Mô hình ứng dụng web thể hiện qua công nghệ ASP đƣợc minh họa nhƣ sau:
Client Server
Request: Page ASP
Response : page HTML
Để thử nghiệm các trang ASP, cần thiết phải cài đặt trình chủ IIS và ODBC
Cài đặt trình chủ IIS: Control Panel – Add/Remove Program – Add/Remove
Windows Component – Chọn Iternet Information Services
Thiết lập thư mục ảo cho ứng dụng : thiết lập một ánh xạ từ thƣ mục ảo đến một
thƣ mục vật l trên đĩa cứng.
Mở IIS – Default Web Site – New... – Virtual Directory
Thiết lập DSN trong ODBC (Open DataBase Connectivity): để tạo kết nối cơ sở
dữ liệu cho trang ASP thông qua Database System Name với driver phù hợp với
Database.
5.3. Xử l các yêu cầu của IIS
Webserver xử l nhƣ thế nào khi ngƣời dùng yêu cầu một trang ASP: Không giống
nhƣ html, khi ngƣời dùng yêu cầu 1 trang html, web server sẽ tìm trong kho dữ liệu và trả về
file html đó để browser hiển thị lại phía client. Khi ngƣời dùng yêu cầu 1 trang Asp, IIS
Browser Web Server
ASP
IAPI Data Store
- 49 -
server sẽ chuyển trang ASP đó cho một bộ phận xử l gọi là ASP engine. Engine sẽ đọc mã
nguồn file asp theo từng dòng, thực thi các script trong file. Cuối cùng file ASP đƣợc trả về
cho ngƣời dùng dƣới dạng một trang html thuần túy (không còn mã script) giống nhƣ trang
web tĩnh. Nếu chúng ta xem lại mã nguồn của trang này trên browser thì có thể thấy những
đoạn code asp trong file đã đƣợc dịch thành các dữ liệu html bình thƣờng.
Trang ASP sau khi thực thi trả về cho client dƣới dạng 1 trang web tĩnh.
Browser không xem đƣợc mã nguồn của trang ASP
5.4. Mô hình đối tƣợng
Mô hình đối tƣợng mô tả mối liên hệ giữa các đối tƣợng trong ASP nhằm tạo ra các thành
phần động cho các trang web viết bằng ASP. Mỗi đối tƣợng có một tập hợp các phƣơng thức, thuộc
tính và sự kiện chúng cung cấp các tất cả các chức năng cho đối tƣợng. Dƣới đây chúng ta cùng xem
xét 5 đối tƣợng chính trong mô hình đối tƣợng của ASP.
Đối tƣợng sinh mã ngữ cảnh (Scripting Context Object)
Nó là tập các các đối tƣợng sinh mã ngữ cảnh đặt là gốc của mô hình đối tƣợng của ASP.
Chúng ta không thể tham chiếu tới nó vì nó đƣợc sinh ra tự động mỗi khi một đoạn mã ASP nào đƣợc
chạy. Nó tạo ra các vùng để các đoạn mã đó đƣợc thực thi. Và tự động hủy khi đoạn mã ASP đƣợc
thực thi xong.
Các đối tƣợng giao tiếp – Resquest và Response
Thông thƣờng đối với các trang web tĩnh sẽ không có các tƣơng tác giữa ngƣời dùng với
server. Server chỉ đơn thuần là nơi chứa các tài liệu HTML và đáp ứng lại các yêu cầu của ngƣời dùng
một cách bị động. Với ASP có cung cấp thêm các đối tƣợng Request và Response cho phép ngƣời
dùng (trình duyệt) tƣơng tác với Server. Nhằm tạo ra các trang web động. Đối tƣợng Request thực
- 50 -
hiện việc lắng nghe các yêu cầu từ phía máy khách gửi tới máy chủ. Còn Respone có nhiệm vụ gửi các
kết quả sau khi đã đƣợc server xử l và gửi trả về máy khách.
Các đối tƣợng trạng thái – Application và Session
HTTP là giao thức phi trạng thái. Nó không thể lƣu lại các hành động đã thực hiện. Vì vậy các đối
tƣợng Application và Session đƣợc dùng để cung cấp bộ nhớ ảo cho ứng dụng web chạy chính xác và
lƣu giữ lại các trạng thái đó.
Đối tƣợng Server
Đối tƣợng Server là đối tƣợng hữu dụng nhất trong tất cả. Nó gồm 4 phƣơng thức khác nhau hỗ trợ
server thực thi các tác vụ, sử dụng nhiều nhất trong số đó là CreateObject - cho phép chúng ta tạo ra
một thể hiện của một thành phần trong ASP.
5.5. Các đối tƣợng của ASP
Một đối tƣợng của ASP là một tập gồm : thuộc tính, phƣơng thức, tập hợp (collection)
và sự kiện có thể tác động lên đối tƣợng.
ASP cung cấp 7 đối tƣợng dựng sẵn cho lập trình ứng dụng web phía server:
Application, ASPError, ObjectContext, Request, Response, Server và Session.
Ngoài ra, ASP còn cung cấp các component dựng sẵn cho các ứng dụng.
(Component là các thành phần các đoạn mã có thể sử dụng lại, các component thƣờng
đƣợc viết bằng một ngôn ngữ lập trình nào đó nhƣ VB, C, Java, v.v..)
5.5.1. Đối tượng Application
Đối tƣợng Application lƣu trữ toàn bộ các biến, các đối tƣợng của toàn bộ ứng dụng,
mỗi ứng dung chạy trên server chỉ có duy nhất một thể hiện của đối tƣợng Application, mọi
trang ASP của ứng dụng có thể truy xuất các biến, đối tƣợng đƣợc lƣu trữ trên đối tƣợng này.
Nói cách khác, đối tƣợng Application dùng để chia sẻ dữ liệu cho mọi client.
- Để khởi tạo một biến và thêm vào đối tƣợng Application ta có cú pháp :
Application(“tên_biến”) = giá_trị
- Để khởi tạo một đối tƣợng và thêm vào đối tƣợng Application ta có cú pháp
Application(“tên_đối_tƣợng”) =Server.CreateObject(“ADOBB.Connection”)
Các tập hợp của đối tượng Application
Đối tƣợng Contents : là tập hợp các đề mục đƣợc tạo ra và thêm vào đối tƣợng
Application trong phiên làm việc của client thông qua các câu lệnh script nhƣ
Server.CreateObject mà không sử dụng thẻ của HTML .
Cú pháp : Application.Contents(key)
Với Key là tên của thuộc tính (biến, đối tƣợng) cần nhận về.
Ví dụ :
<%
„ Khởi tạo các biến, đối tượng
Application(“name”) = “Thiết kế & Lập trình Web”
Application(“publishdate”) = “01/01/2005”
Application(“author”) = “Ngô Đình Thƣởng”
Application(“Obj1”) = Server.CreateObject(“ADODB.Connection”)
„ Truy xuất các biến, đối tượng
Dim Item
For Each Item in Application.Contents
If IsObject(Application.Contents(Item)) then
Response.Write(Item & “ is a Object ”)
Else
- 51 -
Response.Write(Item & “=” & Application.Contents(item) & “”
End If
Next
%>
Đối tƣợng StaticObjects : là tập hợp các đề mục đƣợc tạo ra và thêm vào đối tƣợng
Application trong phiên làm việc của client thông qua sử dụng thẻ của HTML .
Ví dụ : Giả sử ta có tệp tin Global.asa (sẽ nghiên cứu sau) và truy xuất các thông tin đã
cài đặt thông qua tệp tin này.
--- Global.asa---
<Object RunAt = Server Scope = Application ID = MyInfo
PROGID = ”MSWC.MyInfo”
<Object RunAt = Server Scope = Application ID = MyConnection
PROGID = ”ADODB.Connection”
<Object RunAt = Server Scope = Application ID = MyADRot
PROGID = ”MSWC.ADRotator”
--- File.asp---
<%
For Each Item in Application.StaticObjects
Response.Write Item&””
Next
%>
Kết quả hiển thị ra màn hình :
MyInfo
MyConnection
MyADRot
- Các phương thức của đối tượng Contents
Remove : Xoá bỏ một đề mục trong tập hợp Contents
Ví dụ : Application.Remove(1)
„ Xoá bỏ Item “name”
Application.Remove(“author”)
RemoveAll : Xoá bỏ mọi đề mục trong tập hợp Contents
Các phương thức của đối tượng Application
Lock : Khoá toàn bộ ứng dụng, ngăn chặn các client khác thay đổi giá trị của biến
dùng chung trong đối tƣợng Application. Nếu phƣơng thức UnLock không đƣợc gọi thì
server tự động thực hiện lệnh này sau khi sử l xong các script hay time out.
UnLock : Cho phép client thay đổi giá trị của các biến trong đối tƣợng Application
đã bị Lock trƣớc kia.
Ví dụ :
Application.Lock
Application(“publishdate”) = “15/08/2005”
Application.UnLock
Các sự kiện
Applìcation_OnEnd : xảy ra khi kết thúc một phiên làm việc của client.
- 52 -
Ví dụ : ta có tệp tin Global.asa nhƣ sau:
Sub Application_OnEnd()
Calculate_Stats()
End Sub
Sub Application_OnStar()
Application(“NumSession”)=0
Application(“NumVisited”)=0
End Sub
Sub Session_OnEnd()
Application(“NumSession”) = Application(“NumSession”) - 1
End Sub
Sub Application_OnStar()
Application(“NumSession”) = Application(“NumSession”) + 1
Application(“NumVisited”) = Application(“NumVisited”) + 1
End Sub
--- File.asp ---
<%
Response.Write “You are “ & Application(“NumSession”) & “ of “ &
& Application(“NumVisited”) & “ users”
%>
Applìcation_OnStart : xảy ra khi bắt đầu một phiên làm việc của client.
5.5.2. Đối tượng AspError
Đối tƣợng AspError chỉ chứa các thuộc tính chỉ đọc, mô tả chi tiết các lỗi trong quá
trình sử dụng các đối tƣợng của ASP.
- ASPCode : trả về mã lỗi đƣợc phát sinh do IIS
- ASPDescription : trả về một chuỗi mô tả chi tiết về lỗi
- Category : trả về một chuỗi mô tả chi tiết về lỗi đƣợc phát sinh từ IIS do quá trình sử
dụng một đối tƣợng hay script không đúng.
- Column : Trả về một số nguyên chỉ vị trí xảy ra lỗi trong tệp tin ASP
- File : Trả về tên tệp ASP bị xuất hiện lỗi.
5.5.3. Đối tượng ObjectContext
Đối tƣợng ObjectContext chỉ chứa các phƣơng thức dùng để điều khiển các giao tác
(transaction) của ASP mà các giao tác này đƣợc quản l bởi trình MTS (Microsoft
Transaction Server). Muốn sử dụng đối tƣợng này phải khai báo dòng lệnh @Transaction =
“Required” ở dòng đầu tiên của trang ASP.
Các phương thức :
- SetAbort : xác định giao tác không hoàn thành và nguồn tài nguyên có thể không
đƣợc cập nhật.
- SetComplete : ngƣợc lại với phƣơng thức SetAbort. Khi phƣơng thức SetComplete
đƣợc gọi thì webserver sẽ bỏ qua bất kỳ lệnh SetAbort đƣợc gọi trƣớc đó.
Các sự kiện :
- OnTransactionAbort : xảy ra khi giao tác bị huỷ bỏ
- OnTransactionCommit : xảy ra khi giao tác đƣợc hoàn thành.
- 53 -
Đối tƣợng này chủ yếu sử dụng khi có sự tƣơng tranh cơ sở dữ liệu bởi nhiều client.
Chúng ta sẽ minh hoạ về đối tƣợng này trong chƣơng 9,Kết nối cơ sở dữ liệu.
5.5.4. Đối tượng Response
Đối tƣợng Response dùng để gửi tất cả các thông tin vừa đƣợc server xử l trả về cho
client. Chúng ta có thể xử dụng đối tƣợng này để giao tiếp với ngƣời sử dụng.
- Các thuộc tính :
Buffer : giá trị mặc định là false, nếu thuộc tính này là true thì web server chỉ trả
kết quả cho client khi tất cả các script đƣợc xử l hoặc phƣơng thức Flush hay End đƣợc gọi.
Cú pháp: Response.Buffer = False | True
Ví dụ :
<%
Response.Buffer = TRUE
x=0
Do
x = x+1
Response.Write x & ""
Loop
%>
CacheControl : quy định proxy server có đƣợc lƣu kết quả do trang ASP này phát
sinh hay không. Giá trị mặc định là không (private)
Cú pháp: Response.CacheControl = Private | Public
ContentType : quy định dạng dữ liệu do web server trả về cho client. Giá trị mặc
định là Text/HTML. Ví dụ sau đây quy định dữ liệu trả về dƣới dạng một WorkSheet của
Exel:
24
56
Expires : Chỉ định thời gian Cookies lƣu trên trình duyệt của client. Cú pháp :
Response.Expires = minutes. Thuộc tính ExpiresAbsolute chỉ định thời gian (dạng M/D/Y
h:m:s) Cookies lƣu trên trình duyệt của client, ví dụ :
Response.ExpiresAbsolute = #May 15, 2005 18:00:00#
IsClientConnected : kiểm tra client có còn kết nối với web server không. Ví dụ sau
đây sẽ kiểm tra client nếu còn kết nối với server thì tiếp tục xử l cơ sở dữ liệu :
<%
„ Phần kết nối cơ sở dữ liệu sẽ trình bày ở chương 9
set connDB=server.createobject("adodb.connection")
- 54 -
connDB.Open "books", "", ""
mySQL="select * from books"
Set rsBookSrch = Server.CreateObject("ADODB.Recordset")
rsBookSrch.Open mySQL, connDB, adOpenStatic, adLockPessimistic
%>
<%
Do until (rsBookSrch.eof or Response.IsClientConnected=false)
Response.Write rsBookSrch.Fields("Title") %>
<% rsBookSrch.MoveNext
Loop
rsBookSrch.Close
connDB.Close
%>
- Các phương thức :
BinariWrite : dùng để truyền dữ liệu dạng nhị phân cho client
---File1.asp---
Name:
Age:
Sex:
---File2.asp----
<%
bytecount = Request.TotalBytes
binread = Request.BinaryRead(bytecount)
Response.BinaryWrite binread
%>
Giả sử dữ liệu nhập lần lƣợt là An, 25, Female. Kết quả hiển thị :
name=An&age=25&Sex=Female&submit=submit
Clear : xoá tất cả dữ liệu trong vùng đệm. Muốn sử dụng phƣơng thức này phải
thiết lập Response.Buffer = True.
End : Khi thực hiện phƣơng thức này, server dừng xử l các script và trả về cho
client tất cả dữ liệu đã xử l đƣợc.
Flush : Gửi tất cả dữ liệu trong vùng đệm cho client. Muốn sử dụng phƣơng thức
này phải thiết lập Response.Buffer = True.
Redirect : Chuyển hƣớng trình duyệt của client đến một URL khác. Ví dụ :
---File1.asp---
- 55 -
<%
Response.Write "This is File1.asp and switching to File2.asp"
Response.Clear
Response.Redirect "File2.asp"
%>
---File2.asp---
<%
Response.Write "This is File2.asp"
%>
Write : Ghi thông tin cho client.
- Các tập hợp :
Cookies : tập hợp Cookies dùng để thiết lập giá trị cho biến cookies, nếu cookies
không tồn tại thì webserver tạo ra một cookie trên máy client
Cú pháp : Response.Cookies(name) [key | .Attribute] = value
Trong đó :
- name : tên cookies muốn tạo ở máy client
- key : là tham số tuỳ chọn, nếu giá trị này đƣợc thiết lập thì cookies đƣợc xem nhƣ
một cookies từ điển
- Attribute : bao gồm những thông tin liên quan đến cookie nhƣ : Domain, đây là thuộc
tính chỉ ghi cho biết domain tạo cookie này. Expires : quy định ngày hết hạn cookie. Haskeys:
cho biết cookie có chứa item hay không.
Ví dụ :
<%
For Each objCK In Request.Cookies
Response.Write objCK & " = " & Request.Cookies(objCK) & ""
Next
%>
5.5.5. Đối tượng Request
Đối tƣợng Request nhận tất cả các thông tin mà trình duyệt của client gửi đến web
server thông qua một yêu cầu HTTP (HTTP request), các thông tin này đƣợc lƣu trữ trong 5
kiểu tập hợp của đối tƣợng Request. Các biến có thể đƣợc truy cập trực tiếp bằng cách gọi
Request(Var), không thông qua tên tập hợp; trong trƣờng hợp này Web server tìm thông tin
trong các tập hợp theo thứ tự: QueryString, Form, Cookies, ClientCertificate và
ServerVariable.
- Các thuộc tính:
TotalBytes : trả lại tổng số byte trong phần thân của HTTP request đã đƣợc gửi đến
server
Ví dụ :
--- file1.html ----
- 56 -
Name:
Age:
Sex:
-------------------File2.asp------------------
<%
Dim ByteCount
ByteCount = Request.TotalBytes
Response.Write("ByteCount = " & ByteCount & " bytes")
%>
Kết quả in ra trang web phụ thuộc vào dữ liệu cụ thể trong Form. Ví dụ nhập: Name =
Quan, Age = 56, và Sex = male.
Ta có : ByteCount = 39 bytes
- Các phương thức:
BinaryRead(Count) : trả về số byte đã đƣợc gửi đến web server từ browser nhƣ là một
phần của POST request. Khi phƣơng thức này đƣợc thực hiện xong, biến Count trả về số byte
đã đƣợc đọc. Giá trị của count tƣơng đƣơng với Request.TotalBytes.
Ví dụ :
<%
Dim ByteCount, BinRead
ByteCount = Request.TotalBytes
BinRead = Request.BinaryRead(ByteCount)
...
Response.BinaryWrite(BinRead)
%>
- Các tập hợp:
QueryString : Tập hợp QueryString cho phép lấy thông tin gửi đến web server bằng
phƣơng thức GET với biểu mẫu HTML hay dữ liệu gắn với URL khi trang web đƣợc yêu cầu.
Cú pháp : Request.QueryString.Form(“element”)
hoặc : Request.QueryString(“element”)
Ví dụ :
--- File1.asp ----
Query sample
---- File2.asp ----
<%
For Each item In Request.QueryString
- 57 -
Response.Write(item&" = "&Request.QueryString(item)&VbCrLf)
Next
%>
Kết quả in ra trang web
language = ASP
type = general
Forms : tập hợp Forms chứa các phần tử của gửi đến web server thông
qua phƣơng thức POST.
Cú pháp : Request.Forms(“element”) [“index”]
Trong đó element là tên của một phần tử của
Ví dụ :
---- File1.asp ----
Name:
Company:
Position:
Address:
Phone:
----- File2.asp----
works for
at address
as a
.
Giả sử ta nhập dữ liệu lần lƣợt là : Lê Văn Duẫn, Softech, 15A Quang Trung, Đà
Nẵng, Web Designer
Kết quả hiển thị trên trang web:
Lê Văn Duẫn works for Softech at address 15A Quang Trung, Đà Nẵng as a
Web Designer
ClientCertificate : tập hợp này đƣợc lƣu trong trƣờng client certificate và gửi kèm
trong một HTTP request. Nếu browser dùng giao thức SSL3.0 để kết nối với server và server
yêu cầu certificate thì browser mới gửi trƣờng này, ngƣợc lại ClientCertificate có giá trị
EMPTY
ServerVariables : chứa tất cả thông tin về biến môi trƣờng và ta sử dụng những
biến này để truy cập vào HTTP header.
Cú pháp : Request. ServerVariables (EnvironmentVariable)
- 58 -
Ví dụ :
<%
IPAddress = Request.ServerVariables("REMOTE_ADDR")
Software = Request.ServerVariables("SERVER_SOFTWARE")
Protocol = Request.ServerVariables("SERVER_PROTOCOL")
Response.Write "Your IP Address is " & IPAddress & " and your server is running "
& Software & " under " & Protocol & "protocol."
%>
Kết quả hiển thị trên trang web:
Your IP Address is 127.0.0.1 and your server is running Microsoft-IIS/5.1 under
HTTP/1.1 protocol.
Để liệt kê các biến môi trƣờng đƣợc lƣu trữ trong tập hợp ServerVariables, ta có đoạn
script :
<%
for each key in Request.ServerVariables
response.write(key+": "+Request.ServerVariables(key)+"")
next
%>
5.5.6. Đối tượng Server
Đối tƣợng Server cung cấp các thuộc tính và các phƣơng thức dùng để truy cập web
server.
- Các thuộc tính :
ScriptTimeOut : quy định thời gian lớn nhất mà các lệnh script còn đƣợc thực
hiện, giá trị mặc nhiên là 90 giây.
- Các phương thức :
CreateObject : tạo một thể hiện (instance) của một đối tƣợng dùng trong trang ASP
hay tạo một đối tƣợng thuộc dạng COM của Windows thực thi phía web server, đây là
phƣơng thức quan trọng nhất của đối tƣợng Server.
Cú pháp : Server.CreateObject(ObjectID)
Ví dụ : Server.CreateObject(“ADODB.Connection”)
Execute : cho phép ta gọi một trang ASP khác từ một trang ASP. Ví dụ:
---CallingAsp.asp---
How now cow?
---CalledAsp.asp---
<%
Response.Write "pink"
%>
Kết quả sẽ hiển thị : How now pink cow?
GetLastError : phƣơng thức này trả lại đối tƣợng ASPError mô tả các lỗi xảy ra về
các loại Script, runtime. Ví dụ :
<%
Dim objErrorInfo
- 59 -
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)
%>
HTMLEncode : dùng để mã hoá một chuỗi HTML để khi nó hiển thị trong trình
duyệt, trình duyệt sẽ không dịch HTML nhƣ là các lệnh trình bày văn bản.
Cú pháp : Server.HTMLEncode(string)
Ví dụ :
") %>
Kết quả mã hoá : The tag for a table is: <Table>
Kết quả hiển thị trên trang web: The tag for a table is:
URLEncode : mã hoá chuỗi string theo quy tắc chuyển đổi của URL hiểu đƣợc bởi
các trình duyệt phía máy client.
Ví dụ :
Kết quả hiển thị trên trang web:
http%3A%2F%2Fwww%2Eud%2Eedu%2Evn
MapPath : chuyển đƣờng dẫn URL ảo thành đƣờng dẫn vật l của ổ đĩa trên web
server.
Ví dụ : Giả sử ta có test.asp đặt trong virtual folder là ASP và thư mục vật lý là
E:\Documents and Settings\Administrator\My Documents\My Webs\ASP
The path of this file is :
Kết quả hiển thị trên trang web:
The path of this file is :
E:\Documents and Settings\Administrator\My Documents\My Webs\ASP\test.asp
Transfer : phƣơng thức này cho phép truyền toàn bộ thông tin từ trang ASP này
sang trang ASP khác.
Ví dụ : trang ASP Calling.asp sẽ truyền toàn bộ thông tin chứa trong các đối tƣợng
sang trang Called.asp.
----Calling.asp----
<%
Application("name") = "Giáo trình thiết kế & Lập trình Web"
Application("publishdate") = "01/01/05"
Application("author") = "Ngô Đình Thƣởng"
- 60 -
Set Application("Obj1") = Server.CreateObject("ADODB.Connection")
Server.Transfer("CalledAsp.asp")
%>
----Called.asp----
<%;
Response.Write "Output from Called.asp" +””
For Each Item in Application.Contents
If IsObject(Application.Contents(Item)) Then
Response.Write Item & " is an object."
Else
Response.Write Item & "=" & Application.Contents(Item) & ""
End If
Next
%>
Kết quả hiển thị do trang Called.asp phát sinh
Output from Called.asp :
name = Giáo trình thiết kế & Lập trình Web
publishdate = 01/01/2005
author = Ngô Đình Thƣởng
OBJ1 is an object.
5.5.7. Đối tượng Session
Đối tƣợng Session là đối tƣợng đƣợc web server tự động khởi tạo khi trang web đầu
tiên của ứng dụng đƣợc ngƣời sử dụng gọi, đối tƣợng Session đƣợc dùng để lƣu lại các thông
tin của các ngƣời dùng tại một phiên làm việc nhƣ tên, id v.v., đối tƣợng này sẽ tồn tại cho
đến khi bị huỷ hay hết hiệu lực (time out)
Cú pháp : Session.Collecton | Property | Method
- Các thuộc tính :
CodePage : để yêu cầu webserver mã hoá dữ liệu trong các hằng, biến chuỗi theo
bảng mã sẽ đƣợc dùng để hiển thị tại client. Ví dụ sau đây yêu cầu webserver mã hoá các
chuỗi dữ liệu theo bảng mã UTF-8:
„ dùng cho toàn bộ các trang trong session hiện hành, nếu muốn chỉ xác định
„ codepage cho một trang hiện hành :
Để có thông tin về codepage của các ngôn ngữ khác, có thể xem thông tin tại website
library/ default.asp? url= /workshop/ author/ dhtml/ reference/
charsets/charset4.asp
LCID : xác định Id của địa chỉ (LoCation IDentifier) sẽ sử dụng nội dung động.
LCID là một con số duy nhất một vị trí địa l hay vùng miền, đây là thuộc tính để quy định
cách hiển thị khuôn dạng ngày giờ, tiền tệ, dấu thập phân, dấu phân cách lớp nghìn trên trang
web.
Ví dụ :
<%
Session.LCID = 3079
Response.Write "This is the LCID for this page " & Session.LCID & ""
- 61 -
Response.Write "This is the Time and Date format for the above LCID: " & NOW() &
""
%>
Kết quả hiển thị:
This is the LCID for this page now 3079
This is the Time and Date format for the above LCID 27.07.05 14:01:33
LCID của nƣớc Pháp là 1036.
SessionID : là một con số kiểu LongInteger đƣợc phát sinh bởi webserver khi một
session đƣợc tạo. Mỗi ngƣời dùng sẽ có có một SessionID không giống nhau. Khi webserver
bị stop và start trở lại thì những SessionID phát sinh lần sau có thể trùng với SessionID phát
sinh trƣớc khi bị stop.
TimeOut : thời gian tồn tại của một Session, tính bằng phút, giá trị mặc định là 20
phút. Trong khoảng thời gian TimeOut nếu ngƣời sử dụng không Refresh hay không truy cập
một trang khác của ứng dụng thì Session kết thúc.
- Các phương thức :
Abandon : dùng để hủy đối tƣợng Session và giải phóng tài nguyên của webserver.
Ví dụ:
<%
Response.Write "Your SessionID is " & Session.SessionID
Session("Application") = "EducationSite"
Session.Abandon
Response.Write "The Application name is " & Session("Application")
%>
Contents.Remove : xoá bỏ một mục nội dung trong tập hợp Contents
Ví dụ :
<%
Session("name") = "Session Duty"
Session("publishdate") = "01/01/05"
Session("author") = "Education"
Session.Contents.Remove(1)
Session.Contents.Remove("publishdate")
For Each Item in Session.Contents
Response.Write Item & "=" & Session.Contents(Item) & ""
Next
%>
Contents.RemoveAll : xoá bỏ tất cả nội dung trong tập hợp Contents
- Các tập hợp :
Contents : chứa tất cả các đề mục mà chúng ta thiết lập cho đối tƣợng Session mà
không sử dụng thẻ HTML .
Cú pháp : Session.Contents(key)
Trong đó key là tên của thuộc tính cần nhận về.
StaticObjects :chứa tất cả các đề mục mà chúng ta thiết lập cho đối tƣợng Session
bằng cách sử dụng thẻ HTML khi xây dựng tệp cấu hình ASP Global.asa
- 62 -
Ví dụ :
----Global.asa----
<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo
PROGID="MSWC.MyInfo">
<OBJECT RUNAT=Server SCOPE=Session ID=MyConnection
PROGID="ADODB.Connection">
<OBJECT RUNAT=Server SCOPE=Session ID=MyADRot
PROGID="MSWC.ADRotator">
---File.asp----
<%
For Each Item In Session.StaticObjects
Response.Write Item & ""
Next
%>
Kết quả hiển thị trên trang web:
MyInfo
MyConnection
MyADRot
- Các sự kiên :
Session_OnEnd : sự kiện này xảy ra khi một Session đƣợc tạo ra, server xử l thủ
tục này khi thực thi yêu cầu một trang, Session_OnEnd là nơi thuận tiện cho việc thiết lập các
biến.
Session_OnStart : sự kiện này xảy ra khi Session bị huỷ bởi phƣơng thức Abandon
hoặc time out. Các thủ tục Session_OnStart, Session_OnEnd phải đƣợc đặt trong tệp
Global.asa.
Ví dụ :
---Global.asa----
Sub Application_OnEnd()
End Sub
Sub Application_OnStart()
Application("NumSession") = 0
Application("NumVisited") = 0
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
- 63 -
-----File1.asp----
Response.Write "You are " & Application("NumSession") & " of " &
Application("NumVisited") & " users."
CÂU HỎI VÀ BÀI TẬP
1. Tại sao VBScript không đƣợc ƣa dùng để viết kịch bản phía client?
2. Câu lệnh : On Errorr Resume Next là câu lệnh của VBScript hay ASP? Giải thích cách
áp dụng.
3. Phân biệt cách sử dụng hai đối tƣợng của ASP: Session và Application. Sử dụng đối
tƣợng Session để xây dựng một hàm kiểm tra sự đăng nhập hệ thống của một user có
đƣợc phép hay không? (Giả sử rằng password của các user đƣợc lƣu trong một mãng.
Trong chƣơng 8, ta sẽ nghiên cứu cách lƣu trữ password trong một bảng)
4. Cài đặt IIS trên Windows XP Professional, thiết lập virtual directory và quyền của các
user (administrator và các user khác) trên virtual directory này. Kiểm nghiệm một
trang ASP đơn giản. Giả sử phisical directory có cấu trúc nhƣ sau:
Các file đính kèm theo tài liệu này:
- lap_trinh_web_p2_2895_2515.pdf