Trong nhu cầu thường ngày, ta cần phải tra cứu một số thông tin theo nhucầu riêng của mình như điểm thi tuyển sinh, danh bạ điện thoại trực tuyến v.v..., đểgiải quyết vấn đề này cần phải
Trang 1Chương 7
CĂN BẢN VỀ ASP
I GIỚI THIỆU VỀ ASP
I.1 Trang web động
Ngôn ngữ HTML là ngôn ngữ chủ yếu để xây dựng các trang web, ngoài ra
ta còn sử dụng các ngôn ngữ kịch bản để tạo nên các trang web tương tác, có thểtrao đổi dữ liệu giữa client và server; nhưng những trang web này là tĩnh (static), đãđược xây dựng và lưu trữ trên web server
Trong nhu cầu thường ngày, ta cần phải tra cứu một số thông tin theo nhucầu riêng của mình như điểm thi tuyển sinh, danh bạ điện thoại trực tuyến v.v , đểgiải quyết vấn đề này cần phải xây dựng các trang web có thông tin chọn lọc theo
yêu cầu của client, những trang web này được gọi là các trang web động (active
web page), cách khác: các trang web động không tồn taị sẵn mà chỉ được tạo ratheo yêu cầu của client
Hiện nay có nhiều môi trường để tạo ra các trang web động: CGI, ASP, JSP,PHP, ColdFusion, Perl v.v
I.2 Giới thiệu về ASP
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), trongmô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ư SunChili!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 truycập vào web server
I.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àmviệ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
Trang 2cầ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ư 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 :
Khai báo ngôn ngữ kịch bản được sử dụng :
<%@ language= ngôn_ngữ%>
Các thẻ HTML
Các script cho phía client được đặt trong cặp thẻ <Script> và </Script>
Mã chương trình được đặt trong cặp thẻ <% và %>
Với cấu trúc như vậy, ta có thể xem trang asp là một tư liệu HTML đượcnhúng phần xử lý viết bằng mã ASP
I.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ủaclient, 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
Browser Web Server
ASP
Trang 3 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 driverphù hợp với Database
II TỔNG QUAN VỀ VBSCRIPT
VBScript là ngôn ngữ kịch bản chính để lập trình ứng dụng web phía serverkhi 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
II.2 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ụ:
Trang 4• Để 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ầnthiết) ta khai báo trước thẻ <HTML> dòng lệnh <%Option Explicit%>
• Để hiển thị giá trị một biểu thức trên trang web ta dùng một trong haiphươ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) : <% =bthức %>
II.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 &
II.4 Các cấu trúc điều khiển
II.4.1 Các lệnh điều khiển rẽ nhánh
• if then và if then else
Response Write(“Trước đây”)
‘Now là hàm trả về ngày hiện tại của hệ thống
Response.Write(Cstr(so) & ” là một số lẻ”)End Select
%>
II.4.2 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:
Trang 5• 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
II.5 Hàm và Thủ tục
II.4.1 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ộtbiể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ácStr 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 UCASELTRIM : 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êntrá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í posCú pháp: MID(Str, pos, num)
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àytrả 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
Trang 6ISNUMERIC : kiểm tra một biểu thức có phải là số không
II.4.2 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àmEnd Function
‘ thủ tục in ra cửa sổ trang web kết quả chuyển đổi
II.6 Các đối tượng của VBScript
Đố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
II.6.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áclỗi phát sinh bằng cách khai báo dòng lệnh <% On Error Resume Next %> vào đầutrang ASP hay đầu của hàm, thủ tục của người viết script tạo ra
- 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ảicung cấp đầy đủ các thông tin cho các thuộc tính của đối tượng ERR
II.6.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 tinthuậ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ộtthể hiện (instance) của đối tượng này qua lệnh :
CreateObject(“Scripting.Dictionary”)
Trang 7Để 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]&”<BR>”)
%>
II.6.2 Đố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ênwebserver 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
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 :
Trang 8Cá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 Đốitượ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:\
Else Response.Write(“Drive isn’t ready “+”<br>”)
End IfNext
‘ Thông tin về các thư mục con và tệp tin của C:\
Dim Fo, RootDir, RootFiles
‘ Fo : FileObject
Set Drv = Fs.GetDrive(“C:”)
Set RootDir = Drv.RootFolder
Set RootFiles = RootDir.Files
For Each Fo in RootFiles
Response.Write(Fo.Name&”<br>”)Next
Set Fs = Nothing
‘ Giải phóng biến Fs khỏi bộ nhớ
%>
Trang 9Ngoà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
III 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áccomponent thường được viết bằng một ngôn ngữ lập trình nào đó như VB, C, Java,v.v )
III.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 đốitượng Application, mọi trang ASP của ứng dụng có thể truy xuất các biến, đốitượ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 :
• Tập hợp Contents : là tập hợp các đề mục được tạo ra và thêm vào đốitượ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ẻ <OBJECT> 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”
Trang 10If IsObject(Application.Contents(Item)) then
Response.Write(Item & “ is a Object <br>”) Else
Response.Write(Item & “=” & Application.Contents(item) & “<br>” End If
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>
- 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 haytime out
• UnLock : Cho phép client thay đổi giá trị của các biến trong đối tượngApplication đã bị Lock trước kia
Trang 11• Applìcation_OnStart : xảy ra khi bắt đầu ứng dụng web.
• Applìcation_OnEnd : xảy ra khi kết thúc ứng dụng web
Ví dụ : ta có tệp tin Global.asa như sau:
<Script Language = “VBScript” RunAt = Server>
Application(“NumSession”)=0Application(“NumVisited”)=0End Sub
Calculate_Stats()End Sub
Application(“NumSession”) = Application(“NumSession”) + 1Application(“NumVisited”) = Application(“NumVisited”) + 1' Set objCon=Server.CreateObject("ADODB.Connection")
' Câu lệnh trên có thể đưa vào Application_OnStart()
End Sub
Application(“NumSession”) = Application(“NumSession”) - 1End Sub
</Script>
File.asp
-<%
Response.Write “You are “ & Application(“NumSession”) & “ of “ &
& Application(“NumVisited”) & “ users”
%>
III.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ỗitrong 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 doquá trình sử dụng một đối tượng hay script không đúng
Trang 12- 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
III.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ácgiao 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ònglệnh ở dòng đầu tiên của trang ASP như sau
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
Đố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.
III.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 serverchỉ 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