Tài liệu Giáo trình ASP: z 
Giáo trình ASP 
 ASP 
I. Active Server Pages (ASP) là gì? 
Microsoft Active Server Pages (ASP) là một môi trường kịch bản dựa trên server 
(server-side scripting) cho phép tạo hoặc xây dựng các ứng dụng Web mạnh chứa các 
thẻ HTML, văn bản và các lệnh script hay các ứng dụng Web động, giao tiếp giữa 
Client và server một cách hiệu quả. Các trang ASP có thể gọi các thành phần ActiveX 
để thực hiện các công việc như kết nối với một database hoặc thực hiện một tính toán 
kinh doanh. Với ASP, bạn có thể đưa nội dung tương tác với các trang Web của bạn 
hoặc xây dựng toàn bộ các ứng dụng Web sử dụng các trang HTML như giao tiếp với 
khách hàng của bạn. 
 Trang ASP: 
Mỗi trang .asp có thể bao gồm một trong các thành phần sau: HTML, Script của ngôn 
ngữ VB Script hoặc Jscript, Text trong đó các tag HTML và Text sẽ được xử lý bình 
thường như đối với các văn bản HTML (.html) thông thường, các script sẽ được một 
bộ phận (engine) của ASP thông dịch và thi hành trên server. C...
                
              
                                            
                                
            
 
            
                 48 trang
48 trang | 
Chia sẻ: hunglv | Lượt xem: 1964 | Lượt tải: 1 
              
            Bạn đang xem trước 20 trang mẫu tài liệu Giáo trình ASP, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
z 
Giáo trình ASP 
 ASP 
I. Active Server Pages (ASP) là gì? 
Microsoft Active Server Pages (ASP) là một môi trường kịch bản dựa trên server 
(server-side scripting) cho phép tạo hoặc xây dựng các ứng dụng Web mạnh chứa các 
thẻ HTML, văn bản và các lệnh script hay các ứng dụng Web động, giao tiếp giữa 
Client và server một cách hiệu quả. Các trang ASP có thể gọi các thành phần ActiveX 
để thực hiện các công việc như kết nối với một database hoặc thực hiện một tính toán 
kinh doanh. Với ASP, bạn có thể đưa nội dung tương tác với các trang Web của bạn 
hoặc xây dựng toàn bộ các ứng dụng Web sử dụng các trang HTML như giao tiếp với 
khách hàng của bạn. 
 Trang ASP: 
Mỗi trang .asp có thể bao gồm một trong các thành phần sau: HTML, Script của ngôn 
ngữ VB Script hoặc Jscript, Text trong đó các tag HTML và Text sẽ được xử lý bình 
thường như đối với các văn bản HTML (.html) thông thường, các script sẽ được một 
bộ phận (engine) của ASP thông dịch và thi hành trên server. Có thể xem trang ASP 
như một trang HTML có bổ sung các ASP Script Command 
 Hoạt động của trang ASP: 
Sau khi môi trường ASP thực hiện việc thực thi các file .asp xong nó sẽ trả lại kết quả 
ở dạng HTML cho Web Server, tiếp theo Browser sẽ nhận được nội dung cần trình 
bày từ Web Server thông qua giao thức HTTP. Một trang ASP cũng sẽ được Brower 
tham khảo tới bình thường như là nó đã tham khảo tới một trang HTML của Web. 
Trang Asp khi ở trên Web Server và khi được đưa ra Browser 
 Sơ đồ một ứng dụng trên Web ASP: 
Web Server: là nơi tiếp nhận và trả lời các yêu cầu của Web user, đồng thời cũng thực 
hiện việc kết nối đến hệ DBMS trên Database Server theo yêu cầu truy cập dữ liệu của 
1 
 trang ASP. ADO cung cấp giao diện lập trình cho người phát triển xây dựng các lệnh 
truy cập CSDL, các lệnh này được chuyển đến cho hệ DBMS để thực thi thông qua 
các thành phần OLEDB (và ODBC). Kết quả truy vấn dữ liệu sẽ được Web Server đưa 
ra hiển thị trên Browser. 
Database Server: nơi diễn ra việc thực thi các thao tác CSDL như truy vấn, cập nhật 
cũng như bào đảm tính toàn vẹn dữ liệu của hệ DBMS. 
Browser: giao diện với người dùng, tiếp nhận các yêu cầu của người sử dụng cũng như 
hiển thị kết quả yêu cầu. 
Sơ đồ một ứng dụng trên WEB 
 Một vài đặc điểm của ASP: 
- Việc chèn các Script vào file HTML làm cho quá trình xử lý tạo ra văn bản HTML 
(Dynamic Pages) đồng thời với việc xử lý các Script, điều bày sẽ làm cho hoạt động 
của trang Web sẽ trở nên linh động hơn, uyển chuyển hơn. 
- Các file .asp cũng tương thích với file HTML, và việc viết các script đơn giản, không 
phải biên dịch hay liên kết như việc lập trình thông thường, ASP cung cấp các đối 
tượng tiện lợi cho nhiều thao tác như: Request, Response, Server, Apllication, Session. 
Các đối tượng có sẵn này của môi trường ASP sẽ giúp cho việc giao tiếp dữ liệu giữa 
Client và Server thực sự tiện lợi, cũng như việc quản lý ứng dụng một cách linh hoạt 
nhờ vào các biến Session, Application. 
2 
 II. Các thành phần & cú pháp ASP: 
ASP bao gồm các thành phần sau: 
1. Các bộ dịch ngôn ngữ VBScript và Jscript. 
2. Thư viện các đối tượng, chuyên dùng để truy xuất Database thông qua ODBC 
Driver (Active Server Data Object – ADO). Thư viện các đối tượng hỗ trợ cho việc 
viết các trang ASP. Một file ASP thực chất là một văn bản, nó có thể bao gồm các 
thành phần sau: 
+ Văn Bản (Text) 
+ Các HTML tag 
+ Các Script. Mỗi Script này sẽ thực hiện một công việc nào đó, giống như các phát 
biểu của một ngôn ngữ lập trình. Một Script là một chuỗi các lệnh script, nó có thể là: 
1. Một phép gán giá trị cho một biến 
2. Một yêu cầu Web server gửi thông tin đến Brower. 
3. Tổ hợp các lệnh riêng rẽ thành một thủ tục hay một hàm giống như trong các ngôn 
ngữ lập trình. 
Việc thi hành một script là quá trình gửi chuỗi các lệnh tới Scripting Engine, tại đây 
ASP sẽ thông dịch các lệnh này và chuyển tiếp cho máy tính. Script được viết bằng 
một ngôn ngữ với các luật được đặt tả nào đó, nếu ta muốn sử dụng một script 
language nào thì trên server phải chạy Script Engine cho ngôn ngữ đó. Trong ASP 
cung cấp hai Script Engine là VBScript và Jscript (với VBSCRIPT là mặc nhiên). Tuy 
nhiên ASP không phải là ngôn ngữ Script, mà nó chỉ cung cấp một môi trường để xử 
lý các Script mà ta chèn vào trong các file .asp, việc chèn này phải tuân theo một cú 
pháp nhất định của ASP. 
Cú pháp 
1. Dấu ngăn cách (Delimiter): 
Trong văn bản ASP ta sử dụng các dấu để ngăn cách phần văn bản HTML 
với phần Script, hay cụ thể là bất cứ một phát biểu Script nào cũng đều phải nằm giữa 
hai ngăn cách 
Ví dụ: 
 là một script thực hiện việc gán chuỗi Hello vào biến say 
Biểu thức đơn: 
Bạn cần đưa vào (include) bên trong dấu ngăn cách ASP nhiều biểu thức cho ngôn 
ngữ scripting đầu tiên. Ví dụ, với dòng sau là kết quả cuối cùng của văn bản với thời 
gian hiện hành của server: 
This page was last refeshed at 
Trong trường hợp này, Web server trả về giá trị now của hàm VBScript từ browser với 
text. 
2. Câu lệnh (Statement): 
Một câu lệnh trong VBScript hay trong ngôn ngữ script khác là một cấu trúc dùng để 
thực hiện một thao tác, câu lệnh phải được khai báo hoặc định nghĩa trong ngôn ngữ 
3 
 scripting. Các ngôn ngữ script trong ASP cung cấp cho ta hầu hết các cấu trúc điều 
khiển: IF… ELSE, For, While, DO WHILE… cùng với những kiểu dữ liệu cơ bản như 
integer, char, string, Array … sau sử dụng 
Ví dụ: sử dụng câu lệnh If của VBScript 
<% 
if Time >=#12:00:00 AM# And Time < #12:00:00 PM# then 
greeting ="Good Morning!" 
else 
greeting ="Hello!" 
end if 
%> 
dòng sau sẽ gởi giá trị trong Green tơí Client browser 
3. SCRIPT tag: 
Các phát biểu, biểu thức, lệnh, hay thủ tục mà bạn sử dụng bên trong hai dấu ngăn 
cách phải được nhìn nhận bởi ngôn ngữ Script mặc định hoặc ngôn ngữ 
Script được khai báo ở đầu trang ASP. Ngôn ngữ scripting mặc định của ASP là 
VBScript, tuy nhiên với ASP ta vẫn có thể sử dụng các ngôn ngữ lập trình khác bên 
trong bằng cách sử dụng thẻ và 
Ví du: 
<!-- hide Script from old browsers 
for(i=0;i<10;i++ ) 
document.write("for loop"+ i+"") 
document.write("second line of for loop"+ i+"") 
//end script hiding--> 
trong file ASP sau xử lý JScript trong hàm MyFunction 
function MyFunction () 
{ 
Response. Write("MyFunction Called") 
4 
 } 
Chú ý: bên trong tag phải là các thủ tục, không có một biểu 
thức xuất hay phát biểu nào nằm bên ngoài các thủ tục. 
4. Include file: 
Khi tạo một ứng dụng Web, bao gồm nhiều trang ASP, nếu như toàn bộ các trang đều 
cần sử dụng những thông tin chung nào đó chẳng hạn như các hằng, giá trị… để tránh 
lại việc định nghĩa lại các giá trị này ta có thể sử dụng cơ chế include file của ASP 
(giống như trong ngôn ngữ lập trình cổ điển). Để include một file trong trang ASP ta 
sử dụng cú pháp sau: 
Ví dụ: 
Bạn phải định nghĩa kiểu Virtual hoặc file. Trong đó qui định file được include phải 
có phần mở rộng là .inc hoặc .asp, phần filename bao gồm cả đường dẫn và tên file. 
 sử dụng từ khóa virtual: 
Tham sốVirtual dùng để chỉ định rằng đường dẫn được bắt đầu với một thư mục ảo 
(Virtual Directory) 
Vd: 
Sẽ include bất kỳ tập nào trên site của bạn (whatever là nằm trên thư mục gốc của web 
server) nhưng bạn phải cung cấp tên tập tin với 1 đường dẫn 
sử dụng từ khóa file 
Tham số file dùng để chỉ định đường dẫn Relative, được bắt đầu với tên thư mục chứa 
file cần include. Chẳng hạn nếu bạn có 1 file trong thư mục myapp và file header1.inc 
trong myapp/header, dòng sau sẽ chèn header1.inc vào trong file của bạn. 
Chú ý rằng đường dẫn để include file headers/header1.inc thì có liên quan đến việc 
include file, nếu nội dung của script này có cú pháp include là thư mục /myapp, cú 
pháp sẽ không hoạt động. 
ASP includes files trước khi thực thi lệnh script. Vì thế, bạn không thể sử dụng một 
lệnh script để xây dựng tên của 1 file include. chẳng hạn script sau không thể mở file 
Header1.inc bởi vì ASP chiếm để thực thi chỉ thị include trước khi gán một tên file 
cho giá trị name 
"--> 
Lệnh script và thủ tục phải hoàn toàn bao hàm dấu ngăn cách trong script, 
tag HTML và hoặc tag HTML và . 
sử dụng server script: 
Để bổ sung 1 client Script, mặc dù ASP sử dụng Script server site để xử lý văn bản, 
bạn có thể mở rộng bằng cách sử dụng nó để phát sinh ra client side script sau được xử 
5 
 lý bởi client browser. ASP làm điều này bằng cách kết hợp client_side script bao gồm 
những chú thích HTML của server _side script và bao gồm cả dấu ngăn cách: 
<!-- 
client script 
client script 
client script 
... 
--> 
Với chức năng trong scripts của bạn, bạn có thể tạo ra 1 ứng dụng thú vị. 
Chẳng hạn script sau sử dụng một database để cung cấp mẫu tin script client như là kết 
quả hành động của user. 
Trong Script sau ASP tìm dữ liệu từ Database và phát ra mỗi chương trình con cho 
mỗi dòng dữ liệu. Chương trình con đó điều khiển cái gì xảy ra khi 1 user click vào 
liên kết trong trang hiển thị trong client browser. 
Chú ý: 
Trong script này sẽ không có hàm của chính bản thân nó. Nó cho thấy ở đây chỉ minh 
họa chức năng của ASP nếu sử dụng trang liên kết với Database, server-side scripting 
và client-side scripting. 
Lưu ý: 
 Việc include file có thể gây nên một vòng lặp nếu file được include lại gọi 
include một file khác, hay file ban đầu. 
 Vì Asp sẽ include file trước khi xử lý các Script cho nên ta không thể sử dụng 
một lệnh mà lệnh này lại tạo ra một lời gọi include, hoặc sử dụng include như sau là 
sai: 
"-- > 
  Ta cũng không thể mở dấu 
trong một file include khác, ví dụ sau là sai: 
<%For i = 1 To n 
statements in main file 
Next 
%> 
Script sau sẽ hoạt động được: 
<% 
For i = 1 to n 
6 
 statements in main file 
%> 
III. CÁC ĐỐI TƯỢNG CƠ BẢN CỦA ASP: 
ASP cung cấp cho người lập trình các đối tượng có sẵn, mỗi đối tượng này sẽ thực 
hiện một chức năng riêng nào đó, các đối tượng có sẵn (built-in object) bao gồm: 
Tên đối tượng Chức năng 
Request Lấy thông tin từ một user 
Respone Gửi thông tin tới một user 
Server Điều khiển môi trường hoạt động của ASP 
Session Lưu giữ thông tin về một session của user 
Application Chia sẻ thông tin giữa các user trong cùng một ứng dụng. 
III. 1. Đối tượng Request 
Với đối tượng Request, các ứng dụng ASP có thể dễ dàng lấy được thông tin gửi tới từ 
user. Đối tượng Request cho phép truy xuất chi tới bất kỳ thông tin nào user gửi tới 
bằng giao thức HTTP như: 
1. Các thông tin chuẩn nằm trong các biến Server (Server Variable) 
2. Các tham số được gửi tới bằng phương thức POST 
3. Các thông tin được gửi tới bằng phương thức GET 
4. Các cookies (là thông tin của user được gửi kèm theo) tới từ Browser 
5. Các Client Certificates 
Đối tượng Request tìm kiếm các giá trị mà client browser đưa vào server trong khi có 
một yêu cầu HTTP 
Cú pháp: 
 Request.collection|property|method 
Collections 
Cookies Giá trị của các cookie gởi trong yêu cầu HTTP 
Form Giá trị các phần tử form trong thân của yêu cầu HTTP 
QueryString Giá trị của các biến trong chuỗi truy vấn HTTP 
ServerVariables Giá trị của các biến môi trường đã được xác định trước 
Properties 
TotalBytes Tổng số byte client đang gởi trong thân của yêu cầu 
Các tham số biến là chuỗi ký tự chỉ rõ mục (item) được tìm kiếm từ một collection 
hoặc được sử dụng như là mục vào đối với một phương thức (method) hoặc một 
property 
7 
 Ghi chú: 
Tất cả các biến có thể được truy cập một cách trực tiếp bằng cách gọi cú pháp Request 
(variable) mà không cần tên collection. Trong trường hợp này, Web server tìm kiếm 
các collection theo thứ tự sau: 
1. QueryString 
2. Form 
3. Cookies 
4. ClientCertificate 
5. ServerVariables 
III.1. Làm việc với các HTML FORM 
Sử dụng đối tượng Request, bạn có thể tạo và xử lý thông tin với HTML FORM, 
HTML FORM là cách thức thông thường để trao đổi thông tin giữa Web server và 
user, nó cung cấp nhiều cách nhập thông tin của user: Text boxes, Buttons, Check 
boxes cho phép user tương tác với trang Web và Submit thông tin tới một Web Server. 
Ví dụ: Tạo một FORM để user có thể nhập vào họ tên, tuổi và đưa vào một nút để 
submit thông tin tới Web server. FORM cũng chứa một điều khiển hidden để đưa 
thêm thông tin tới Web server. 
III. 2 Xử lý FORM nhập vào với ASP 
Khi một FORM submit thông tin tới Web server, Web browser của user yêu cầu file 
.asp chỉ định trong thuộc tính ACTION của thẻ HTML . File .asp chứa đoạn 
script thực hiện việc xử lý giá trị FORM như hiển thị một bảng nội dung kết quả hoặc 
truy vấn thông tin từ một cơ sở dữ liệu. Bạn có thể sử dụng file .asp để thu thập giá trị 
HTML FORM một trong 3 cách: 
 File .html chứa các form và submit giá trị của nó tới một file .asp. 
 File .asp có thể tạo form và chuyển giá trị tới một file asp khác. 
 File .asp có thể tạo form và gửi thông tin tới chính nó đó là đến file .asp mà chứa 
đựng form. 
III. 3 Lấy thông tin nhập vào FORM 
Sử dụng QueryString Collection 
QueryString collection lấy lại các giá trị form đưa vào Web server của bạn như là một 
chuỗi sau một dấu? trong yêu cầu URL. Việc sử dụng Querystring collection làm cho 
việc truy xuất thông tin trở nên dễ dàng hơn 
8 
 Cú pháp 
 Request. QueryString(variable)[(index)|. Count] 
Các tham số 
Variable tên của biến trong chuỗi query HTTP. 
Index Cho phép bạn truy vấn một trong các giá trị cho variable. Nó có thể là bất 
kỳ số nguyên nào trong khoảng từ 1 tới Request. QueryString(variable).Count. 
 Nếu phương thức gởi từ form là POST thì Querystring chứa tất cả thông tin gửi tới 
như là 1 tham số sau trang URL. 
 Nếu phương thức gởi từ form là GET thì Querystring Collection chứa toàn bộ thông 
tin gửi tới như là các tham số đi đằng sau dấu “?” trong URL. Như vậy nếu phương 
thức là GET thì toàn bộ thông tin gởi tới sẽ nằm trong Querystring Collection. 
Ví dụ: nếu ví dụ trước đó sử dụng phương thức GET(ACTION= “GET”) và người sử 
dụng gõ vào Jeff, Smith, và 30, sau đó yêu cầu URL sẽ được gởi tới server là: 
Myfile.asp có thể chứa đoạn script xử lý như sau: 
Hello, 
. 
You are years old. 
<% 
If Request. QueryString("userstatus") = "new user" then 
 Response. Write"This is your first visit to this Web site!" 
End if 
%> 
Trong trường hợp này, Web sever của bạn sẽ trả về đoạn văn bản sau tới Web browser 
của user: 
Hello, Jeff Smith. You are 30 years old. This is your first visit to this Web site! 
Khi có nhiều biến cùng một tên và mỗi biến có giá trị khác nhau. Khi đó, QueryString 
collection có một tham số dùng để truy cập nhiều giá trị xuất hiện trong thân của yêu 
cầu. Bạn có thể sử dụng đặc tính Count để đếm số lần mà một kiểu đặc trưng giá trị 
xuất hiện. 
Ví dụ: một FORM chứa một list box với nhiều mục có thể trả lại như sau: 
Để hiển thị nhiều kiểu giá trị, List.asp có thể chứa đoạn script sau: 
và kết quả hiển thị là: 
apples 
9 
 olives 
bread 
III. 4. Sử dụng Form Collection 
Form collection chứa toàn bộ các giá trị mà user nhập vào FORM sau đó gửi bằng 
phương thức POST. Phương thức POST gởi dữ liệu FORM trong thân yêu cầu HTTP, 
có thể gởi không giới hạn số ký tự tới server 
Cú pháp 
Request. Form(element)[(index)|.Count] 
Các tham số 
 Element tên của phần tử form collection cần truy vấn. 
 Index Một tham số lựa chọn cho phép bạn truy vấn một trong các giá trị 
đối với một tham số. Nó có thể là bất kỳ số integer nằm trong vùng từ 1 đến 
Request.Form(thamsố).Count. 
Ghi chú Form collection được chỉ mục bởi tên trong thân của yêu cầu. Giá trị của 
Request. Form (element) là một dãy của tất cả các giá trị của element xuất hiện trong 
thân của yêu cầu. Bạn có thể xác định số giá trị của một tham số bằng cách gọi 
Request.Form(element).Count. 
Để tham khảo một giá trị đơn của một phần tử form có nhiều giá trị, bạn phải chỉ định 
một giá trị cho index. Tham số index có thể là bất kỳ số nào giữa 1 và 
Request.Form(element).Count. 
Ví dụ: nếu user điền vào FORM bằng cách đưa vào một danh sách tên thì bạn có thể 
lấy lại các tên với đoạn script sau: 
2. Sử dụng ServerVariables collection 
ServerVariables collection lấy lại các giá trị các biến môi trường đã được xác định 
trước. ServerVariables cung cấp thông tin từ tiêu đề HTTP với một yêu cầu của user. 
Cú pháp 
 Request.ServerVariables (server environment variable) 
Tham số 
server environment variable: là tên của biến môi trường. 
Bạn có thể sử dụng vòng lặp để lặp thông qua tên các biến server. Ví dụ, đoạn script 
sau sẽ in ra tất cả các giá trị của các biến môi trường trong một bảng. 
ServerVariableValue 
10 
Ví dụ: sử dụng đối tượng Request để hiển thị một số biến môi trường. 
ALL_HTTP server variable = 
CONTENT_LENGTH server variable = 
CONTENT_TYPE server variable = 
QUERY_STRING server variable = 
SERVER_SOFTWARE server variable = 
Ví dụ: sử dụng ServerVariables collection để chèn tên server vào trong một siêu liên 
kết (hyperlink). 
/scripts/MyPage.asp">Link to MyPage.asp 
III. 5. Gửi thông tin trong cùng một file.asp: 
- Với ASP bạn phải định nghĩa động 1 form trong 1 file .asp mà đặt giá trị đầu vào trả 
lại chính bản thân nó. 
- ASP cho phép một file.asp có chứa From, khi user điều khiển các giá trị vào From 
rồi gửi (Submit) thì chính file .asp sẽ nhận được các thông tin này và xử lý. 
III. 6. Đối tượng Response 
Bạn có thể sử dụng đối tượng Response để gởi kết xuất tới client. 
Cú pháp 
 Response.collection|property|method 
Collections 
Cookies Chỉ định giá trị cookie và thiết lập các giá trị cookie. 
Properties 
Buffer Chỉ ra liệu trang kết xuất được đệm hay không. 
ContentType Chỉ định kiểu nội dung HTTP(vd:”Text/HTML”) khi đáp ứng. 
Expires Chỉ định thời gian trước khi một trang lưu trữ trên browser kết thúc. 
Status Server trả về giá trị của trạng thái dòng. 
Methods 
AddHeader Thiết lập tên (name) tiêu đề HTML bằng giá trị (value). 
Clear Hủy bỏ vùng đệm kết xuất HTML. 
End Dừng xử lý tập tin .asp và gởi trả kết quả hiện hành 
Redirect Chỉ dẫn browser kết nối tới một URL khác. 
11 
 Write Xuất một biến tới trang hiện hành như là một chuỗi. 
III.6.1 Gởi nội dung 
Để gởi trở lại một trang chứa văn bản, hình ảnh và các nội dung khác tới browser bên 
trong dấu ngăn cách ASP hoặc từ một thủ tục. Sử dụng phương thức Write của đối 
tượng Response. 
Cú pháp 
 Response.Write variant 
Tham số 
Variant Dữ liệu để xuất. Tham số này có thể là bất kỳ dữ liệu nào mà ngôn ngữ 
script hỗ trợ (kể cả các ký tự, chuỗi, số nguyên). 
Ví dụ 1: câu lệnh gởi lời chào khác nhau tới user tùy thuộc vào user đã viếng thăm 
trang trước đó bao nhiêu lần: 
<% 
If FirstTime = True Then 
Response.Write "Welcome to the Overview Page" Else 
Response.Write "Welcome Back to the Overview 
Page" 
End If 
%> 
Bên ngoài một thủ tục, bạn không cần phải sử dụng phương thức Response.Write để 
gởi nội dung trở lại tới user. Nội dung này thì không nằm trong dấu ngăn cách 
scripting mà được gởi trực tiếp tới browser. 
Ví dụ 2: đoạn script sau sẽ có kết xuất như đoạn script trước: 
 Welcome to the Overview Page. 
Welcome Back to the Overview Page. 
III.6.2 Gởi cookie tới browser 
Một Cookie được coi như một dấu hiệu đi kèm theo người sử dụng trong quá trình trao 
đổi thông tin giữa Client browser vàWeb server hoặc giữa Web server và Client 
browser. Cookies cung cấp cho 1 kiểu của tham tin từ sự giao kết với người sử dụng. 
Các script của ASP có thể sử dụng Cookies collection để thiết lập giá trị của một 
Cookie. Khi dùng Response. Cookies nếu cookie được đặc tả chưa tồn tại thì nó sẽ 
được tạo mới, nếu Cookie đã tồn tại thì nó sẽ lấy giá trị mới, giá trị cũ sẽ bị loại bỏ. 
Cú pháp: 
 Response.Cookies(cookie)[(key)|.attribute] = value 
Các tham số 
Cookie Tên của cookie. 
12 
 Key Tham số lựa chọn. Nếu key được chỉ định, cookie là một từ điển và key thì thiết 
lập giá trị (value). 
Attribute Chỉ định thông tin về cookie đó. 
Các thuộc tính có thể là: 
Tên Mô tả 
Domain Nếu chỉ định, cookie chỉ được gởi tới yêu cầu của vùng domain đó. 
Expires Ngày cookie kết thúc. Cookie sẽ kết thúc khi session kết thúc. 
HasKeys Chỉ định cookie chứa các khóa hay không. 
Path Nếu chỉ định, cookie chỉ được gởi yêu cầu tới đường dẫn này. Nếu không, 
đường dẫn của chương trình ứng dụng được dùng. 
Secure Chỉ định có được bảo đảm hay không. 
Value Giá trị để gán vào key hoặc attribute. 
Ví dụ: bạn có thể thiết lập giá trị cho một cookie và gán các giá trị vào các thuộc tính 
(attribute) của nó 
<% 
Response.Cookies("Type") = "Chocolate Chip" 
Response. Cookies("Type").Expires = "July 31, 1997" 
Response. Cookies("Type").Domain = "msn. com" 
Response. Cookies("Type").Path = "/www/home/" 
Response. Cookies("Type").Secure = FALSE 
%> 
III. 6. 3 Chuyển hướng điều khiển browser 
Thay vì gởi một nội dung tới user, ta có thể gởi một thông báo đến browser để nó 
chuyển tới một URL khác bằng cách sử dụng phương thức Redirect. 
Cú pháp 
 Response.Redirect URL 
Tham số 
URL Địa chỉ URL (Uniform Resource Locator) mà ta chuyển hướng điều khiển tới. 
Ví dụ: 
Bạn muốn khi khách thăm Website của bạn thì họ đăng ký trước khi sử dụng nó. Ta 
tạo một Form có tên là register.asp: 
---register.asp--- 
Register 
Registration: 
Please enter your first name: <INPUT NAME = "FirstName" TYPE=“TEXT” SIZE = 
30> 
Please enter your last name: <INPUT NAME = "LastName" TYPE=“TEXT” SIZE = 
20> 
13 
Sau đó để kiểm tra xem user có đưa vào đầy đủ thông tin hay không. Nếu không thì 
chuyển hướng điều khiển về lại trang đăng ký là “register.asp”. 
---regresults.asp--- 
<% 
If Request. Form(“FirstName”)=“” Then Response. Redirect “/register.asp” 
%> 
Registration Results 
<% 
Thank you for registering! 
%> 
Chú ý: Nếu sử dụng Response.Redirect sau khi một nội dung đã được gửi về cho user 
thì sẽ xảy ra lỗi. 
III.6.4 Đệm trang 
Bình thường, khi một trang ASP được xử lý trên server, kết xuất được gởi tới browser 
ngay lập tức sau khi mỗi lệnh trong trang được thực thi. 
Khi bạn muốn đệm kết xuất của một trang ASP thì server sẽ không gởi đáp ứng nào 
tới client cho đến khi tất cả các server script trong trang hiện hành đã được xử lý hoặc 
là cho đến khi phương thức Flush hoặc End được gọi. 
Buffer property không thể thiết lập khi server đã gửi nội dung về client, vì thế để thiết 
lập ta phải gọi Response.Buffer ở đầu trang. 
Cú pháp 
 Response.Buffer [= flag] 
Các tham số 
Flag Chỉ định trang kết xuất có được đệm hay không. 
Giá trị Mô tả 
FALSE Không đệm. Server gởi kết xuất tới client buffer được xử lý. 
TRUE Server không gởi kết xuất tới client cho đến khi tất cả các đoạn script 
ASP trên trang hiên hành đã được xử lý hoặc cho đến khi phương thức Flush hoặc End 
được gọi 
Giá trị Buffer mặc định cho tất cả các trang ASP là FALSE. Tuy nhiên bạn có thể đặt 
buffer của đối tượng Response là TRUE để thi hành các script trong một trang trước 
khi gởi tới user 
Ví dụ: đoạn script này sẽ hiển thị các số từ 1 đến 100 nhưng tất cả nội dung của trang 
được gởi cùng một lúc tới browser cho đến khi đoạn script xử lý xong. 
14 
Buffer Example 
<% 
For i=1 To 100 
Response. Write i & “” Next 
%> 
Có thể sử dụng Buffer để xác định tại một số điểm nào đó của trang được xử lý, mà ở 
đó ta không muốn gửi nội dung trước đó tới người sử dụng, lúc đó có thể sử dụng 
phương thức Redirect để kết nối người sử dụng với URL khác, hoặc sử dụng phương 
thức Clear để xóa Buffer và gởi nội dung khác tới người sử dụng. 
Ví dụ: 
---Choose.asp--- 
News 
Sport 
Music 
---jump.asp--- 
<% which=Request.QueryString(“whichpage”) 
Select Case which 
case “news” 
Response.Redirect “/news.asp” 
case “sport” 
Response.Redirect “/sport.asp” 
case “music” 
Response.Redirect “/music.asp” 
%> 
15 
III.6.5 Thiết lập kiểu nội dung của trang 
ContentType property chỉ rõ kiểu nội dung của thân đáp ứng (kiểu MIME). 
Các kiểu phổ biến là: “text/HTML”, “image/GIF”, “application/msword”, “text/rtf”… 
Nếu ContentType không được chỉ định, mặc định là text/HTML. 
Cú pháp 
 Response.ContentType [= ContentType ] 
Tham số 
ContentType Chuỗi mô tả nội dung kiểu dữ liệu. Chuỗi này thường được định 
dạng là type/subtype sao cho type là loại nội dung tổng quát và subtype là kiểu nội 
dung đặc trưng. 
Ví dụ 1: để hiển thị source code của một văn bản HTML, bạn thiết lập ContentType 
property thành “text/plain”, thân của đáp ứng được gởi như là một văn bản bình 
thường hơn là một trang HTML. 
HTML Document 
This is an HTML Document 
Khi đó browser sẽ hiển thị trang nhận được như một trang văn bản bình thường chứ 
không phải là một trang HTML. 
Ví dụ 2: để hiển thị trang trên Web browser làmột trang HTML, bạn thiết lập 
ContentType property thành “text/HTML” 
HTML Document 
This is an HTML 
III.6.6 Mã trạng thái 
Status property chỉ định giá trị của dòng trạng thái trả về bởi server trong một đáp ứng 
HTTP, property này không sửa đổi tiêu đề. Giá trị các trạng thái được định nghĩa trong 
đặc tả HTTP. 
Cú pháp: 
 Response.Status = StatusDescription 
Tham số 
StatusDescription Một chuỗi gồm có 3 chữ số cho biết mã trạng thái. 
Ví dụ: trả về mã trạng thái 401 Not Authorized nếu ai đó truy tìm trang ASP trong 
ngày Wednesday 
16 
 <% 
If WEEKDAY(WEEKDAY(DATE))=“Wednesday” Then 
Response. Status=“401 Not Authorized” Response. End 
Else 
%> 
Not Wednesday 
Today is not Wednesday. 
III. 7. Đối tượng Server 
Đối tượng server cung cấp truy cập tới các phương thức và đặc tính (property) trên 
server. Hầu hết các phương thức và đặc tính (property) server như là các chức năng 
tiện ích. 
Cú pháp 
 Server.property|method 
Properties 
ScriptTimeout Khoảng thời gian mà một script có thểchạy trước khi hết thời gian 
(time out). 
Methods 
CreateObject Tạo một thực thể (instance) của một đối tượng hoặc thành phần 
server. 
HTMLEncode Mã hóa chuỗi thành dạng HTML. 
MapPath Ánh xạ đường dẫn ảo, đường dẫn tuyệt đối hay tương đối trên server hiện 
hành vào một đường dẫn vật lý. 
URLEncode Mã hóa chuỗi kí tự thành dạng URL. 
III. 7. 1 ScriptTimeout 
ScriptTimeout property chỉ định khoảng thời gian tối đa một script có thể chạy trước 
khi nó được kết thúc. Khoảng thời gian này sẽ không ảnh hưởng trong khi đang xử lý 
một thành phần server. 
Cú pháp 
 Server.ScriptTimeout = NumSeconds 
Các tham số 
NumSeconds Chỉ định số giây tối đa mà một script có thể chạy trước khi kết thúc 
nó. Giá trị mặc định là 90 giây. 
Ghi chú: Bạn không thể thiết lập giá trị nhỏ hơn giá trị chỉ định. 
Ví dụ: trong một số trường hợp, bạn muốn thi hành một đoạn script mà thời gian của 
nó dài hơn 90 giây mà không muốn chỉ một phần của đoạn script được hiển thị thì khi 
đó ta có thể sử dụng ScriptTimeout property để thực thi đoạn script đó. 
17 
ScriptTimeOut Example 
<% 
For i=1 To 10000 
Response.Write i & “” Next 
%> 
III.7.2 CreateObject 
Phương thức CreateObject tạo một thực thể (instance) của một thành phần server để 
có thể sử dụng các phương thức và truy cập các property của thành phần đó. 
Cú pháp 
 Server.CreateObject( progID ) 
Thamsố 
progID Chỉ định kiểu đối tượng cần tạo. 
Ví dụ: để xem một Web browser có hỗ trợ cookie, frames, tables ta sử dụng một trong 
các thành phần cung cấp cho ASP là thành phần Browser Capabilities. 
CreateObject Example 
<% 
‘tạo thực thể của thành phần 
Set objBrowser= Server.CreateObject("MSWC. BrowserType") 
%> 
‘sử dụng các property 
Your browser has the properties: 
Cookies = 
Tables = 
Frames = 
Ghi chú: 
Mặc định, các đối tượng tạo bởi phương thức Server.CreateObject có page scope 
(phạm vi trang) nghĩa là server tự động hủy bỏ chúng khi server xử lý xong trang ASP 
hiện hành. 
Để tạo một đối tượng với phạm vi là session hay application, bạn có thể sử dụng thẻ 
 và thiết lập thuộc tính SCOPE cho SESSION hoặc APPLICATION, hoặc 
là lưu trữ đối tượng trong biến session hoặc application. 
Tạo thành phần với Session scope (phạm vi session) 
Một đối tượng session-scope được tạo ra cho mỗi session mới trong một ứng dụng và 
được giải phóng khi session kết thúc. Do đó, có một đối tượng trên session hoạt động. 
18 
 Biến session có thể được sử dụng mà một user yêu cầu. Để tạo một đối tượng session 
scope, bạn có thểsử dụng thẻ trong tập tin Global.asa hoặc là sử dụng 
phương thức Server.CreateObject trên trang ASP. 
Ví dụ 1: sử dụng phương thức Server.CreateObject 
Ví dụ 2: sử dụng thẻ trong tập tin Global.asa 
<OBJECT RUNAT=Server SCOPE=Session ID=objAd 
PROGID="MSWC.adrotator"> 
Tạo thành phần với Application scope (phạm vi Application) 
Một đối tượng application-scope object là một thực thể đơn của một đối tượng được 
tạo ra khi ứng dụng bắt đầu. Đối tượng này được chia sẽ bởi tất cả các gien yêu cầu. 
Ví dụ 1: sử dụng phương thức Server.CreateObject 
Ví dụ 2: sử dụng thẻ trong tập tin Global.asa 
<OBJECT RUNAT=Server SCOPE=Application ID=objAd 
PROGID="MSWC.adrotator"> 
Bạn không thể tạo một thực thể (instance) có tên trùng với các đối tượng có sẵn. 
Ví dụ: 
III.7.3 HTMLEncode 
Phương thức HTMLEncode dùng để mã hóa một chuỗi thành dạng HTML. 
Cú pháp 
 Server.HTMLEncode( string ) 
Tham số: 
String: Chuỗi để mã hóa. 
Ví dụ: 
HTMLEncode Example 
The bold tag " 
Response.Write “” 
Response.Write Server.HTMLEncode("The bold tag ") 
%> 
kết quả hiển thị là: 
The bold tag 
<B>The bold tag </B> 
19 
 III.7 4 MapPath 
Phương thức MapPath ánh xạ một đường dẫn tương đối hoặc ảo tới một thư mục vật lí 
trên server 
Cú pháp 
 Server.MapPath( Path ) 
Tham số 
Path Chỉ định đường dẫ n tương đối hoặc ảo ánh xạ thành một thư mục vật lý. Nếu 
Path bắt đầu với 1 forward (/) hoặc backward slash hay (\) thì phương thức MapPath 
trả về một đường dẫn nếu Path là một đường dẫn ảo đầy đủ. Nếu Path không bắt đầu 
với một slash (/ hoặc\ ), phương thức MapPath trả về một đường dẫn tương đối tới thư 
mục của tập tin .asp đang thực thi. 
Ví dụ: tập tin data.txt được định vị trong thư mục, C:\Inetpub\Wwwroot\Script, như là 
tập tin test.asp chứa đoạn script sau. Thư mục C:\Inetpub\Wwwroot thì được thiết lập 
như là thư mục chủ của server. 
Đoạn script sau sử dụng biến server là PATH_INFO để ánh xạ đường dẫn vật lý của 
tập tin hiện hành. 
kết quả là: C:\inetpub\wwwroot\script\test.asp 
Nếu không bắt đầu với ký tự slash (/ hoặc \) thì chúng được ánh xạ tương đối tới thư 
mục hiện hành, trong trường hợp này là C:\Inetpub\Wwwroot\Script. 
kết quả là: c:\inetpub\wwwroot\script\data.txt 
c:\inetpub\wwwroot\script\script\data.txt 
III.7.5 Mã hóa một chuỗi query 
Phương thức ULREncode mã hóa một chuỗi thành dạng URL. 
Ví dụ, tất cả các khoảng trắng được chuyển đổi thành dấu cộng. 
Cú pháp 
 Server.URLEncode( string ) 
Các thamsố 
String Chuỗi để mã hóa. 
Ví dụ 1: 
") %> 
khi đó kết quả mã hóa là: The+paragraph+tag%3A+%3CP%3E 
Ví dụ 2: 
khi đó kết quả mã hóa là: 
http%3A%2F%2Fwww%2Emicrosoft%2Ecom 
Ứng dụng cơ bản ASP gồm có một thư mục ảo trên server và tất cả tài liệu và tập tin 
mà nó ở trong thư mục ảo. 
20 
 Khi sử dụng những ứng dụng cơ bản của ASP bạn có thể sử dụng các loại đối tượng 
sau: 
 Application state: tất cả thông tin gắn liền với một ứng dụng có thể được dùng cho 
tất cả những user của một ứng dụng. 
 Session state: những thông tin thì chỉ có thể được dùng cho một user. 
III. 8. Đối tượng Session 
Đối tượng Session được sử dụng để lưu trữ và tìm lại thông tin về một user session. 
Các giá trị lưu trữ trong đối tượng Session không bị loại bỏ đi khi user di chuyển từ 
trang này sang trang khác trong ứng dụng, Web server tự động tạo ra một đối tượng 
Session khi một trang Web trong ứng dụng được yêu cầu bởi một user chưa có 
session. Server hủy bỏ đối tượng Session khi nó hết thời gian hay được hủy bỏ. Thực 
tế, một Session chỉ thuộc về một user. 
Dữ liệu Session thường gắn liền với một user, nó quản lý các thông tin về user đang sử 
dụng một ứng dụng. 
Cú pháp 
 Session.collection|property|method 
Collections 
Contents Chứa các mục (item) mà bạn thêm vào session với các lệnh script. 
Properties 
SessionID Trả về định danh session đối với user. 
Timeout Khoảng thời gian đối với các session trong ud. 
Methods 
Abandon Hủy bỏ một đối tượng Session và giải phóng tài nguyên của nó. 
Events 
Se_OnStart Xảy ra khi người sử dụng đầu tiên yêu cầu một trang trong một chương 
trình ud 
Se_OnEnd Xảy ra khi session kết thúc 
III.8.1. Lưu trữ thông tin Session 
Nếu bạn cần lưu trữ dữ liệu trong đối tượng Session thì lưu trữ trong một collection 
của đối tượng Session. Thông tin lưu trữ trong đối tượng Session thì có giá trị thông 
qua session và có session scope. 
Ví dụ: lưu trữ dữ liệu trong 2 biến của đối tượng Session 
Session Example 
<% 
Session("Name") = "John" 
Session("age") = 20 
%> 
21 
Để truy tìm lại thông tin từ đối tượng Session, truy cập tên biến. 
Ví dụ: hiển thị giá trị hiện hành của Session("Name") và Session("age") 
Session Example 
<% 
Response.Write Session("Name") & “” 
Response.Write Session("age") & “” 
%> 
 Quản lý các session 
 Bắt đầu và kết thúc Session 
 Một Session có thể bắt đầu bằng 3 cách: 
 User muốn yêu cầu một URL được định nghĩa trong tập tin.asp và tập 
tin Global.asa cho ứng dụng bao gồm cả thủ tục Session_OnStart 
 User lưu trữ giá trị trong đối tượng Session 
 User yêu cầu một tập tin asp trong một trình ứng dụng và tập tin 
Global.asa của ứng dụng sử dụng thẻ để khởi tạo một đối tượng với 
session scope. 
Một session tự động kết thúc nếu user không có yêu cầu hoặc refresh một trang trong 
một ứng dụng trong một khoảng thời gian. Giá trị này mặc định là 20 phút. Bạn có thể 
thay đổi giá trị mặc định cho một ứng dụng bằng cách thiết lập Session Timeout 
property. 
Ví dụ: đặt lại khoảng thời gian là 40 phút. 
Ngoài ra, bạn cũng có thể kết thúc một session với phương thức Abandon của đối 
tượng Session. Ví dụ: 
III. 8. 2. Nhận dạng một Session 
ASP gán mỗi user session một định danh duy nhất. Mỗi session có một định danh duy 
nhất được phát sinh bở i server khi session được tạo ra. Để tìm lại session ID, sử dụng 
SessionID property của đối tượng Session. 
Cú pháp 
 Session.SessionID 
Ví dụ: 
SessionID Example 
22 
 Your session ID is: 
III.8.3. Timeout 
Timeout chỉ định khoảng thời gian đã gán đối tượng Session cho ứng dụng (tính bằng 
phút). Nếu người sử dụng không refresh (làm tươi) hoặc yêu cầu một trang trong một 
khoảng thời gian, session kết thúc. 
Cú pháp 
 Session.Timeout [ = nMinutes] 
Tham số 
nMinutes Chỉ định số phút mà một session có thể vẫn còn trước khi server kết thúc 
nó một cách tự động, mặc định là 20 phút. 
Ví dụ: hiển thị Timeout property và đặt lại giá trị Timeout mới. 
Timeout Example 
Timeout= 
Your new time out is: 
Lưu ý: Bạn không thể đặt lại khoảng thời gian nhỏ hơn giá trị mặc định. 
III.8.4. Các sự kiện Session 
Đối tượng Session có 2 sự kiện: Session_OnEnd được kích khởi khi một session bắt 
đầu và Session_OnStart được kích khởi khi một session kết thúc. Cả 2 sự kiện này 
phải được định vị trong tập tin Global.asa. Nó chứa toàn bộ thông tin về ứng dụng 
Web site của bạn. Tập tin Global.asa có cấu trúc sau: 
Sub Session_OnEnd 
End Sub 
Sub Session_OnStart 
End Sub 
Tham số 
ScriptLanguage Chỉ định ngôn ngữ scripting sử dụng để viết các script sự kiện. Nó 
có thể là bất kỳ ngôn ngữ scripting được hỗ trợ như là VBScript hoặc JScript. 
Ghi chú: 
Bạn không thể sử dụng các thẻ HTML hoặc phương thức Response.Write bên trong 
tập tin Global.asa. 
Bạn không thể gọi phương thức MapPath trong đoạn script Session_OnEnd. 
23 
 Bạn nên chú ý rằng bất kỳ script sự kiện Session_OnStart nào theo sau là một lời gọi 
tới phương thức Redirect thì không được thực thi. Vì thế, bạn nên gọi phương thức 
Redirect sau cùng trong script sự kiện của bạn. 
Ví dụ như: 
Sub Session_OnStart 
' đoạn script khởi tạo Session 
Response.Redirect "http:/server/app/StartHere.asp" 
End sub 
Tuy nhiên, bạn không thể lưu trữ một đối tượng có sẵn trong đối tượng Session. 
Ví dụ như: 
<% 
Set Session("var1") = Session 
Set Session("var2") = Request 
Set Session("var3") = Response 
Set Session("var4") = Server 
Set Session("var5") = Application 
%> 
Bạn có thể sử dụng đối tượng session để thiết lập những đối tượng hoặc biến có 
session scope. Scope là sự mở rộng mà nó là 1 đối tượng thành phần hoặc biến có giá 
trịtrong ASP. Một biến mà có session scope thì nó chỉ có thể bên trong session đó. 
III.8.5. Đối tượng Application 
Đối tượng Application dùng để chia sẻ thông tin giữa tất cả người sử dụng của một 
ứng dụng. Một ứng dụng trên ASP được định nghĩa như toàn bộ các tập tin .asp trong 
một thư mục ảo và các thư mục con của nó. Một số đặc điểm của ứng dụng ASP: 
Dữ liệu có thể được chia sẻ giữa các trang trong ứng dụng. 
Một thực thể của một đối tượng có thể được chia sẻ giữa các trang trong ứng dụng. 
Dừng một ứng dụng mà không ảnh hưởng tới các ứng dụng khác. 
Cú pháp 
 Application.method 
Collections 
Contents Chứa tất cả các mục đã được thêm vào đối tượng Application thông qua 
các lệnh script. 
Methods 
Lock Ngăn cấm các client khác sửa đổi đặc tính đối tượng Application. 
Unlock Cho phép các client khác sửa đổi đặc tính đối tượng Application. 
Events 
Application_OnEnd Xảy ra khi ứng dụng kết thúc (ví dụ khi ngừng web server). 
24 
 Application_OnStart Xảy ra khi một trang trong ứng dụng lần đầu được tham 
khảo đến. 
III.8.5.1. Sử dụng phương thức Lock vàUnlock 
Để ngăn cấm giá trị các biến lưu trữ trong đối tượng Application có thể bị hư khi có 2 
client cố gắng truy cập dữ liệu cùng một lúc thì chúng ta có thể sử dụng phương thức 
Lock và Unlock. Khi phương thức đang Lock diễn tiến thì không có các đoạn script 
khác cố gắng thay đổi thông tin lưu trữ trong đối tượng Application cho đến khi 
phương thức Unlock được gọi. 
Cú pháp 
Application.Lock 
Application.Unlock 
Ví dụ: sử dụng biến ứng dụng NumVisits để lưu trữ số lần một trang cụ thể đã được 
truy cập. Phương thức Lock được gọi để chỉ có client hiện hành có thể truy cập hoặc 
thay đổi NumVisits. Sau đó gọi phương thức Unlock cho phép những người sử dụng 
khác truy cập đối tượng Application. 
<% Application.Lock 
Application("NumVisits") = Application("NumVisits") + 1 
Application.Unlock 
%> 
This application page has been visited 
 times! 
III.8.5.2. Các sự kiện Application 
Giống như đối tượng Session, đối tượng Application cù ng có 2 sự kiện: Sự kiện 
Application_OnStart xảy ra khi một ứng dụng ASP bắt đầu và trước sự kiện 
Session_OnStart, sự kiện Application_OnEnd xảy ra khi ứng dụng kết thúc và sau sự 
kiện Session_OnEnd. 
Cú pháp 
Sub Application_OnEnd 
End Sub 
Sub Application_OnStart 
End Sub 
Tham số 
ScriptLanguage Chỉ định ngôn ngữ scripting sử dụng đểviết các script sự kiện. Nó 
có thể là bất kỳ ngôn ngữ scripting được hỗ trợ như là VBScript hoặc JScript. 
Ghi chú 
Bạn không thể gọi phương thức MapPath trong đoạn script Application_OnEnd. 
25 
 Ví dụ: hiển thị thông tin cho mỗi user của ứng dụng xem khi vào ứng dụng bằng cách 
sử dụng sự kiện Application_OnStart, sau đó cho phép người sử dụng sửa đổi lại 
thông tin. 
Sub Application _OnStart 
Application (“yourname” )= “Unknow” 
Application (“occuption” )= “Unknow” 
End Sub 
---Display.asp--- 
‘hiển thị thông tin để user truy cập tập tin Display.asp có thể xem 
Thank you, 
You are 
---Change.asp--- 
‘ thay đổi giá trị mới và nhấn Send để thay đổi 
Please enter your name: 
Please choose your occupation: 
Studen 
Teacher 
Engineer 
---Result.asp--- 
‘đặt lại giá trị nhận được từ user trong tập tin Change.asp và chuyển hướng kết nối 
user tới tập tin Display.asp để xem giá trị mới. 
<% 
If Not IsEmpty(Request.Form(“ newmsg” )) then 
Application.Lock 
Application(“yourname”) = Request. QueryString(“name”) 
Application(“your_occup”) = Request. QueryString(“occup” ) 
Application.UnLock 
26 
 End If 
Response.Redirect “Display.asp” 
%> 
Bạn không thể lưu trữ một đối tượng có sẵn trong đối tượng Application. 
Ví dụ như: 
<% 
Set Application("var1") = Session 
Set Application("var2") = Request 
Set Application("var3") = Response 
Set Application("var4") = Server 
Set Application("var5") = Application 
%> 
VI. CÁC THÀNH PHẦN (COMPONENT) CỦA ASP 
Ngoài các đối tượng cơ bản có sẵn trong môi trường ASP, ASP việc tạo các trang Web 
động bằng ASP còn được trợ giúp nhờ một số thư viện các đối tượng (Active X 
Component) của ActiveX Server. Các thành phần được thiết kế để chạy trên Web 
Server như một ứng dụng Web cơ sở hợp thành các gói nhỏ đặc trưng chung là động. 
Mỗi thành phần được sử dụng cho một công việc chuyên biệt nhiệm cho là một thư 
viện các lớp (hay đối tượng), được thiết kế ở dạng Automation Server, thực hiện một 
nhóm công việc chung nhất cho một thao tác nào đó, chẳng hạn như truy xuất 
database, truy xuất file… vì thế người phát triển ứng dụng Web bằng ASP khộng cần 
phải tạo lại các đặc tính này. 
Bạn có thể tạo động, tương tác với các trang Web bằng cách sử dụng các thành phần 
server đã được included với Active Server Pages (ASP) trong các đoạn script của bạn. 
Thành phần File Access 
VI.1. Đối tượng FileSystemObject 
Thành phần File Access sử dụng đối tượng FileSystemObject và TextStream để khôi 
phục lại và sửa đổi thông tin lưu trữ trong file trên server. 
Đối tượng FileSystemObject cung cấp thao tác các tập tin văn bản từ bên trong đoạn 
mã của chúng ta. Chúng ta có thể tạo một thực thể của đối tượng FileSystemObject 
bằng cách sử dụng đoạn script sau: 
Set objFSO=CreateObject(“Scripting.FileSystemObject”) 
Mỗi khi chúng ta có một đối tượng FileSystemObject, chúng ta tạo đối tượng 
TextStream bằng cách sử dụng các phương thức của FileSystemObject 
VI 1.1 Phương thức CreateTextFile 
Phương thức CreateTextFile tạo một file văn bản mới hoặc viết đè lên một file đã tồn 
tại. Phương thức này trả về một đối tượng TextStream mà chúng ta có thể sử dụng để 
27 
 đọc file hoặc ghi vào file. Trước tiên chúng ta tạo một đối tượng FileSystemObject, 
sau đó sử dụng đối tượng này để tạo đối tượng TextStream. 
Cú pháp: 
 [object. ]CreateTextFile(filename[, overwrite]) 
Các tham số: 
Object Tên của một đối tượng FileSystemObject 
Filename Đường dẫn và tên file chúng ta tạo ra hoặc ghi lên 
Overwrite TRUE ghi đè lên một file đã tồn tại, ngược lại là FALSE 
Ví dụ: tạo một file mới và ghi dữ liệu vào file.txt 
<% 
Set objFSO=Server.CreateObject(“Scripting.FileSystemObject”) 
Set objNewFile=obj.CreateTextFile(“C:\MyFile\file.txt”, FALSE) 
objNewFile.Write(“Hello”) 
objNewFile.WriteLine(“Welcom”) 
objNewFile.Close 
%> 
VI.1.2. Phương thức OpenTextFile: 
Phương thức OpenTextFile mở một file văn bản đã tồn tại. Phương thức này trả về 
một đối tượng TextStream mà chúng ta có thể sử dụng để đọc file hoặc thêm dữ liệu 
vào file. Trước tiên, chúng ta tạo một đối tượng FileSystemObject sau đó sử dụng đối 
tượng này để tạo đối tượng TextStream. 
Set objFSO=CreateObject(“Scripting.FileSystemObject”) 
Set objNewFile=obj.OpenTextFile (“C:\TextFile\Myfile.txt”) 
Cú pháp: 
 [object. ]OpenTextFile (filename[, iomode[, create]]) 
Các tham số: 
Object Tên của một đối tượng FileSystemObject. 
Filename Đường dẫn và tên tập tin muốn mở. 
Iomode ForReading hoặc ForAppending. Mặc định là ForReading. 
Create TRUE tạo một file mới hoặc là FALSE nếu file đã tồn tại rồi. 
Ví dụ1: đọc một file sử dụng phương thức ReadLine 
ReadingFile.asp 
<% 
Set objFSO=Server.CreateObject(“Scripting.FileSystemObject”) 
Set objTextFile=obj.OpenTextFile(“C:\MyFile\file. txt”, 1, FALSE ) 
28 
 WHILE NOT objTextFile.atEndOfStream 
Response.Write objTextFile.ReadLine(“Hello”) 
WEND 
objTextFile.Close 
%> 
Ví dụ 2: thêm dữ liệu vào file.txt 
ReadingFile.asp 
<% 
Set objFSO=Server.CreateObject(“Scripting.FileSystemObject”) 
Set objTextFile=obj.OpenTextFile(“C:\MyFile\file.txt”, ForAppending) 
objTextFile.WriteBlankLines(2) 
objTextFile.WriteLine(“This is a new line”) 
objTextFile.Close 
%> 
VI. 2.. Đối tượng TextStream 
Sử dụng các phương thức và property của đối tượng TextStream để đọc hay ghi dữ 
liệu vào file. 
Phương thức 
Close Đóng một file. 
Read(numchars) Đọc numchars ký tự từ file. 
ReadAll Đọc toàn bộ nội dung của file TextStream. 
ReadLine Đọc một dòng từ file. 
Skip(numchars) Nhảy qua numchars ký tự khi đọc file. 
SkipLine Nhảy qua dòng kế tiếp khi đọc file. 
Write(string) Ghi chuỗi lên file. 
WriteLine([string]) Ghi chuỗi và thêm ký tự xuống hàng lên file. 
WriteBlankLine(n) Ghi n dòng lên file. 
Properties 
AtEndOfLine TRUE nếu con trỏ file ở cuối dòng trong một file. 
AtEndOfStream TRUE nếu con trỏ file ở cuối file. 
29 
 Column Trả về số cột hiện hành trong một file, bắt đầu từ 1. 
Line Trả về số dòng hiện hành trong một file, bắt đầu từ 1. 
Ví dụ 1: sử dụng FileSystemObject để ghi dữ liệu vào file 
<% 
Set objFile =Server.CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFile.CreateTextFile ("c:\myfile. txt", True) 
objTextFile.WriteLine("This is a test. ") 
objTextFile.Close 
%> 
Ví dụ 2: sử dụng FileSystemObject để đọc file 
<% 
Set objFile =Server.CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFile.CreateTextFile("c:\testfile.txt", True) 
While NOT objTextFile.atEndOfStream 
Response.Write(objTextFile.ReadLine) 
Wend 
objTextFile.Close 
%> 
VI. 3. Thành phần Ad Rotator 
Thành phần Ad Rotator tạo một đối tượng tự động quay các hình ảnh quảng cáo trên 
một trang Web. Mỗi khi một user mở hoặc nạp lại trang Web, thành phần Ad Rotator 
hiển thị một thông báo mới dựa trên thông tin bạn chỉ định trong Rotator Schedule File 
Cú pháp: 
 Set AdRotator = Server.CreateObject("MSWC.adRotator") 
với AdRotator là tên của đối tượng AdRotator. 
Properties 
Border Chỉ định kích thước đường viền của quảng cáo banner. 
Clickable Cho biết quảng cáo banner có chức năng là một siêu liên kết. Nó có 2 giá 
trị là TRUE và FALSE. 
TargetFrame Chỉ định tên của frame để hiển thị thông báo trong đó. 
Methods 
GetAdvertisement Lấy chi tiết thông tin về quảng cáo banner. 
Để tạo một thực thể của thành phần Ad Rotator, chúng ta sử dụng phương thức 
CreateObject của đối tượng Server. 
Ví dụ: Hiển thị các thông báo khác nhau mỗi khi user xem trang Web, trong đó tập tin 
MyAdFile.txt chứa thông tin về các quảng cáo được hiển thị. 
30 
 Adrotator Example 
<% 
Set objAd = Server.CreateObject("MSWC.adRotator") %> 
objAd.Border(0) ‘không có đường viền 
objAd.Clickable(TRUE) ‘là một siêu liên kết 
objAd.TargetFrame(“MyFrame”) 
‘nạp vào frame tên MyFrame 
strHTML=objAd.GetAdvertisement(“AdFiles\MyAdFile.txt”) 
Response.Write(strHTML) ‘đưa HTML vào trong trang 
%> 
VI. 4. Thành phần Browser Capabilities 
Xác định khả năng, loại, kiểu của mỗi browser như tên, version, có hỗ trợ frame, table 
hay không…) 
Khi một browser kết nối tới web server, nó tự động gởi tiêu đề User Agent HTTP. 
Tiêu đề này là một chuỗi ASCII định dạng browser và version của nó. Bạn có thể 
thêm các property hoặc định nghĩa browser mới bằng cách cập nhật file browscap.ini. 
Cú pháp 
 Set BrowserType = Server.CreateObject("MSWC.BrowserType") 
với BrowserType là tên đối tượng BrowserType. 
Ví dụ: sử dụng đối tượng BrowserType hiển thị một bảng cho biết các khả năng của 
browser hiện hành 
Browser Example 
Browser 
Version 
Frames 
 TRUE 
 FALSE 
Tables 
 TRUE 
 FALSE 
31 
BackgroundSounds 
 TRUE 
 FALSE 
VBScript 
 TRUE 
 FALSE 
JScript 
 TRUE 
 FALSE 
VI. 5. Thành phần Content Linking 
Tạo nội dung của trang và liên kết chúng với nhau giống như những trang trong một 
quyển sách. 
Thành phần Content Linking tạo Nextlink quản lý danh sách các URL, nó có thể phát 
sinh và cập nhật bảng nội dung và điều khiển liên kết tới các trang trước đó và các 
trang sau đó. 
Cú pháp 
 Set NextLink = Server.CreateObject("MSWC.NextLink") 
với NextLink là tên của đối tượng được tạo bởi phương thức Server.CreateObject. 
Các phương thức 
GetListCount(list) T
L
L
M
L
L
L
rả về tổng số trang chứa trong list file. 
GetNextURL(list) ấy URL của trang kế tiếp trong list file. 
GetPreviousDescription(list) Lấy dòng mô tả của trang trước đó trong list file. 
GetListIndex(list) ấy vị trí của trang hiện hành trong list file. 
GetNthDescription(list, n) ô tả trang thứ N trong list file 
GetPreviousURL(list) ấy URL của trang trước đó trong list file. 
GetNextDescription(list) ấy mô tả của trang kế tiếp trong list file. 
GetNthURL(list, n) ấy URL của trang thứ Nth trong list file. 
VI.5.1. Tạo nội dung của một trang 
Xây dựng bảng nội dung trong trang: 
<% intCount = objNextLink.GetListCount ("contentlink.txt") 
For intLoop=1 To intCount %> 
32 
 "> 
ext %> 
Count = objNextLink.GetListCount ("links\ contentlink.txt") 
I.5.2. Duyệt thông qua các trang 
k và nút Next tới một file HTML. 
ListIndex(strListFile) 
Back” Onclick=“location.href=’<%= 
utton Value=“Home” Onclick=“location.href=’content, asp %>’ 
tThisPage 
hành phần Database Access 
b động tác động lẫn nhau bằng cách sử dụng các thành 
 viết bằng cách sử dụng thành phần Database Access của 
) với hầu hết 
các ứng dụng 
 xét các phần trong thư viện công cụ này. 
kế một cách đơn giản nhất, nó giao tiếp với database thông qua 
cơ sở dữ liệu theo dạng bảng như Exel, hoặc File text thì ODBC không hỗ trợ). 
<% N
<% int
<% intCoun=objNextLink.GetListCount ("/demo/contentlink.txt") 
V
Đoạn script sau thêm vào nút Bac
<% Set objNextLink = Server.CreateObject ("MSWC.NextLink") 
strListFile=(“contentlink.txt”) 
intThisPage= objNextLink.Get
If ( intThisPage > 1) Then %> 
<Input Type=Button Value=“<
objNextLink.GetPreviousURL (strListFile) %>’ ; "> 
<Input Type=B
; "> 
If ( in
” Onclick=“location.href=’<%= 
NextLink.GetNextURL (strListFiel) %>’; "> 
T
Ta có thể tạo những trang We
phần Server sau trong Script 
Một ứng dụng Web Database
ActiveX hay còn gọi là thư viện ADO (ActiveX Data Object). Đây cũng chính là một 
điểm mạnh nhất của ASP trong việc phát triển ứng dụng Web Database. 
Các đối tượng của ADO cung cấp cơ chế tạo ra các kết nối (Connection
các kiểu Database, cũng như việc truy xuất, cập nhật các Database này. 
Hiện nay thư viện ADO là một công cụ mạnh nhất trong việc phát triển 
Database trên Internet. 
Trong phần này ta sẽ xem
Giao diện ADO: 
ADO được thiết 
phương thức ODBC (Open Database Connectivity), chúng ta có thể sử dụng chúng với 
bất kỳ loại Database nào nếu như ODBC có driver hỗ trợ. (Hiện nay tồn tại Driver cho 
hầu hết các loại Database, như Foxpro, Access, oracle, Spl server…tuy nhiên các file 
33 
 Các đối tượng trong ADO 
Các đối tượng chính trong ADO đó là: Connection, Commmand và RecordSet. 
Ngoài ba đối tượng chính này còn có các đối tượng con của nó cùng với các tham số, 
iên kết property, phương thức bên trong. Sử dụng Connection ta có thể thiết lập sự l
với cơ sở dữ liệu, thông qua đó ta có thể thực hiện các query để lấy ra các record hoặc 
cập nhật một record bằng sử dụng đối tượng Command. Kết quả thực hiện các query 
trên database sẽ được lưu vào đối tượng RecordSet, trên đối tượng này ta có thể duyệt 
và lấy ra một hay nhiều Record. 
1. Đối tượng Connection 
Để sử dụng đối tượng Connection, trước tiên ta phải tạo ra một thực thể (instance) cho 
 của đối tượng này trong trang ASP. 
ection_name= Server. CreateObject (“ADODB. Connection”) 
ata Source cố định 
ất cả trang thì khi đó ta sẽ đặt thực thể (instance) của Connection ở mức 
art () 
bjConn= Servcer.CreateObject (“ADODB.Connection”) 
ập tầm vực cho Connection ở mức Sesstion như sau: 
bjConn = Server.CreateObject (“ADODB.Connection”) 
 ta có thể xem xét thêm việc tối ưu cho các Connection trong một ứng dụng 
iều người sử dụng truy xuất tới Database, đó là khả năng Connection Pooling của 
 cậy đối với các Website có sự lưu 
thông dữ liệu thấp (low-trafic) 
nó, đây thực sự là thực thể
Để tạo một thực thể (instance) đối tượng Connection bạn có thể sử dụng đoạn script 
sau: 
< % 
Conn
% > 
Thông thường trong một ứng dụng nếu ta cần có một liên kết với D
cho t
application scope bằng cách đưa phát biểu tạo thực thể (instance) ở trên vào sự kiện 
Application_OnStart: 
<% 
Sub Application_OnSt
Set o
End Sub 
%> 
hoặc thiết l
< % 
Sub Session_OnStart () 
Set o
End Sub 
%> 
Tuy nhiên
có nh
ODBC 3.0. Connection Pooling. Các ứng dụng cơ sở ứng dụng truyền thống đều tạo 
một nối liên kết đơn tới Database mà nó sử dụng, còn các ứng dụng Database trên 
Web lại mở và đóng các liên kết này ở mỗi một trang Web. Một phương pháp cho các 
ứng dụng Database trên Web là tạo một sự liên kết liên tục với cơ sở dữ liệu của từng 
người sử dụng và lưu trữ trong đối tượng Session. 
Tuy nhiên phương pháp này có thể làm gia tăng số lượng các user có kết nối với cơ sở 
dữ liệu mà không làm việc và nó chỉ đạt được độ tin
34 
 Phương pháp tiện lợi trong việc quản lý các kết nối với cơ sở dữ liệu của ứng dụng 
Web là quản lý bằng Connection Pool của ODBC 3.0, nhằm giảm bớt số lượng liên 
kết rảnh rỗi, ODBC sẽ mở các kết nối và quản lý các kết nối này. 
n kết rảnh nào trong 
ion 
Mỗi khi có một yêu cầu mới thì thực hiện việc kiểm tra xem có liên kết nào trong 
Connection Pool đang rảnh không, nếu không có thì sẽ tạo kết nối mới, nếu có thì nó 
sẽ lấy liên kết rảnh này mà không tạo liên kết mới. Nếu một liê
Connection Pool tồn tại quá 60 giây thì nó sẽ tự động loại bỏ. 
Connection Pooling được kích hoạt mặc nhiên trong ASP, ta có thể loại bỏ bằng cách 
thiết lập giá trị Register Entry Start Connection Pool về giá trị 0. 
Các phương thức và đặc tính (property) của đối tượng Connect
Phương thức Môtả 
Open Mở một kết nối mới tới dữ liệu nguồn. 
Close Đóng lại một kết nối. 
Execute Thực thi một query, SQL hoặc một thủ tục lưu trữ sẵn. 
Property Môtả 
CommandTimeout Số giây chờ đợi khi thực thi một lệnh trước khi kết thúc. 
ConnectionString Thông tin dùng để tạo kết nối tới nguồn dữ liệu. 
ConnectionTimeout Số giây chờ đợi khi tạo ra một kết nối trước khi kết thúc. 
1. kết 
Đ ố ợng 
onnection, sau đó ta có thể mở một kết nối tới dữ liệu nguồn (DSN) để có thể truy 
 1 Mở và đóng một nối Database 
ể thiết lập một liên n i với database thì bạn tạo thực thể (instance) của đối tư
C
xuất dữ liệu. 
Cú pháp: 
 Connection.Open ConnectionString, User, Password 
Trong đó 
ConnectionString: Chuỗi định nghĩ a tên của Data Source Name (DSN), tên này được 
người sử dụng đưa vào khi mở một kết nối 
ên là student, user="student" và password ="magic" 
on") 
onn.Close 
khai báo trong ODBC. 
User: Tên 
Password: Mật mã đưa vào khi thiết lập một kết nối. 
Ví dụ: mở một DSN có t
<% 
Set objConn=Server.CreateObject("ADODB.Connecti
objConn.Open "DSN=student;uid=student;pwd=magic" 
objC
Set objConn=Nothing 
%> 
35 
 Sau khi xử lý xong dữ liệu trên data source, trước khi kết thúc trang ta phải đóng lại 
i, bạn không thể sử dụng kết nối để giao tiếp với database. 
.2 Thực thi câu lệnh SQL với kết nối Open:
các kết nối đã mở. Sử dụng phương thức Close của đối tượng Connection để đóng một 
kết nối: objConn.Close 
Sau khi đóng một kết nố
1 
ực thi một câu lệnh SQL hoặc với một thủ 
 Một biến đối tượng Recordset chứa kết quả truy vấn. 
on. 
ng đến. 
mmandText. 
Giá trị Hằng tương ứng Mô tả CommandText 
Sau khi đã kết nối với Data Source, để th
tục, sử dụng phương thức Execute cho phép thực thi một câu lệnh tác động lên Data 
Source. Phương thức này có 2 dạng: Một dạng được sử dụng khi tìm kiếm kết quả từ 
một database và dạng khác là được sử dụng khi không có kết quả nào được trả về. 
Set recordset = connection.Execute(CommandText, RecordsAffected, Options) 
connection.Execute CommandText, RecordsAffected, Options 
Trong đó 
Recordset:
CommandText: Chứa query để thực thi. 
Connection: Một biến đối tượng Connecti
RecordsAffected: chứa số record mà lệnh tác độ
Options: Có các giá trị khác nhau tương ứng với mỗi loại Co
0 AdCmdUnknown à mặc định khi định nghĩa. Unknown. Giá trị này l
1 AdCmdText CommandText là một câu lệnh như câu lệnh SQL. 
2 AdCmdTable Tên của bảng tạo recordset. 
3 AdCmdStoredProc ocedure) trong data source. Một thủ tục trữ sẵn (stored pr
T ớc k
c thi một câu lệnh SQL mà không tìm 
BS. INC"--> 
một instance (thực thể) của đối tượng Connection 
ion") 
dent;uid=student;pwd=magic" 
c 
thing 
rư hi bạn có thể sử dụng những hằng số này trong một trang ASP, bạn phải 
include một file đặc biệt gọi là ADOVBS.inc. 
Ví dụ 1: sử dụng phương thức Execute để thự
kiếm lại bất kỳ kết quả nào. 
<!-- #include virtual="ADOV
<% 
‘tạo 
Set objConn = Server.CreateObject("ADODB.Connect
‘mở kết nối tới Database 
objConn.Open "DSN=stu
‘thực thi một thủ tục lưu trữ sẵn tên là MyPro 
objConn.Execute “MyProc”, adCmdStoredPro
objConn.Close 
Set objConn=No
%> 
SQL
36 
 Ví dụ 2: sử dụng phương thức Execute để trả kết quả từ một câu truy vấn 
một thực thể của đối tượng Connection 
.Connection") 
ent;uid=student;pwd=magic" 
FROM MyTable WHERE Name= 'John' " 
thing 
. Đối tượng Command. 
ơng thức Execute của đối tượng Connection để thực thi một 
ruy vấn không sử dụng đối tượng Command, đưa một chuỗi 
ượng 
et objCmd = Server.CreateObject (“ADODB.Command”) 
xét các đặc tính và 
<% 
‘tạo 
Set objConn = Server.CreateObject("ADODB
‘Mở kết nối tới Database 
objConn.Open "DSN=stud
‘thực thi câu lệnh SQL 
SQLtemp="SELECT * 
objConn.Execute SQLtemp, adCmdText 
objConn.Close 
Set objConn=No
%> 
2
Thay vì phải sử dụng phư
thủ tục lưu trữ sẵn hoặc một câu lệnh SQL, ta có thể sử dụng đối tượng Command để 
thi hành các thao tác với cơ sở dữ liệu như: thêm, xóa, cập nhật dữ liệu hoặc truy vấn 
dữ liệu trong một bảng. 
Chú ý: Để thực thi một t
truy vấn vào phương thức Execute của đối tượng Connection hoặc là tới phương thức 
Open của đối tượng Recordset. Tuy nhiên, đối tượng Command cần được sử dụng khi 
bạn muốn vẫn giữ lại lệnh và thực thi lại nó, hoặc sử dụng các tham số truy vấn. 
Việc tạo một thực thể (instance) cho đối tượng Command cũng giống như đối t
Connection tức là ta cũng sử dụng phương thức Server.CreateObject. 
Ví dụ: 
 S
Tuy nhiên để thực sự sử dụng biến đối tượng này ta phải xem 
phương thức đi kèm theo nó. 
Phương thức Mô tả 
CreateParameter t đối tượng Parameter trong Parameters collection. Tạo mộ
Execute Thực thi câu lệnh SQL hoặc thủ tục lưu trữ sẵn chỉ định trong 
CommandText property. 
roperty Mô tả P
ActiveConnection ng Connection nào được sử dụng với đối tượng Command. Đối tượ
CommandText Chỉ định câu lệnh cần thực thi. 
CommandTimeout h, giá trị thời gian này tính theo Xác định thời gian thực thi lện
iâCommandType Cho biết kiểu của query chỉ định trong CommandText. 
Prepared Tạo ra lệnh chuẩn bị trước khi thực thi. 
37 
2.1 Tạo một kết nối Active Connection: 
 đối tượng Connection đã được kết nối với cơ sở Sau khi đã có thực thể (instance) của
dữ liệu và đối tượng Command. Lúc này nếu muốn sử dụng đối tượng Command ta 
phải gán tên của Connection thích hợp (Connection nào kết nối tới cơ sở dữ liệu cần 
làm việc) vào cho ActiveConnecttion của đối tượng Command. 
Cú pháp 
e.activeConnection = Connection_name nam
í dụ:V 
<% 
bjCSet o onn = Server.CreateObject("ADODB.Connection") 
onnection, ta có thể sử dụng phương thức 
ên đã sử dụng 
thing 
dTimeout đầu tiên để xác định khoảng thời 
objConn.Open "DSN=student;uid=student;pwd=magic" 
objCmd.activeConnection = objConn.Open 
%> 
khi đã thiết lập kết nối với đối tượng CSau 
Exexcute của đối tượng Command gần giống như với Connection. Tuy nhiên, điểm 
khác với đối tượng Connection là đối với đối tượng Command nếu ta có dự định thi 
hành một lệnh nào thì ta sẽ phải khởi tạo các giá trị cho CommandText, 
CommandType, …. 
Ví dụ: đoạn chương trình thi hành một câu query trên một data source 
<% 
bjConn = Server.CreateObject("ADODB.Connection") Set o
Set objCmd = Server.CreateObject(“ADODB.Command”) 
‘tạo kết nối 
en "DSN=student;uid=student;pwd=magic" objConn.Op
objCmd.activeConnection = objConn.Open 
objCmd.CommandText="SELECT * FROM Contact WHERE State=’LA’" 
‘cho biết CommandText là một câu lệnh SQL 
objCmd.CommandType = 1 
‘biên dịch câu lệnh 
TRUE objCmd.Prepared = 
‘thực thi câu lệnh 
objCmd.Execute 
uy‘giải phóng tài ng
Set objCmd.activeConnection = No
%> 
g ta có thể thiết lập giá trị CommanChún
gian thực thi câu lệnh, mặc định là 30 giây, nếu để giá trị này là 0 thì ADO sẽ thực thi 
cho đến khi tác vụ được hoàn tất. 
2.2 Sử dụng tham số cho các lệnh SQL. 
38 
 Nếu như query cần thực hiện có yêu cầu các tham số, thì ta phải thêm các tham số này 
vào Parameter collection trước khi thực hiện câu lệnh. Đối với phương thức Execute 
của đối tượng Connection không có khả năng này. 
Sử dụng phương thức Execute của đối tượng Command thực thi câu query chỉ định 
trong CommandText property. 
Cú pháp 
Set recordset = command. Execute(RecordsAffected, Parameters, Options) 
command.Execute RecordsAffected, Parameters, Options 
Trong đó 
recordset: Một biến đối tượng Recordset chứa kết quả truy vấn. 
command: Một biến đối tượng đại diện cho đối tượng Command. 
RecordAffected và Options có chức năng và giá trị giống như trong đối tượng 
Connection. 
Parameter là một dãy các giá trị tham số được đưa vào với một câu lệnh SQL. 
Để tìm hiểu cách tạo ra danh sách các tham số của câu lệnh, ta hãy xem xét các 
phương thức và property của Parameter collection. 
Phương thức Mô tả 
Append Thêm một tham số vào collection.
Delete Xoá một tham số trong collection. 
Refresh Cập nhật collection để phản ánh sự thay đổ i các tham
Property Mô tả 
Count Trả về số tham số trong collection. 
Item Lấy lại giá trị của một tham số trong collection. 
Tạo và thêm tham số vào Collection 
Mỗi một phần tử của Parameter collection có thể coi như một đối tượng Parameter và 
chúng cũng có các đặc tính (property) riêng của mình. 
Property Mô tả 
Attributes Kiểu dữ liệu mà tham số chấp nhận. 
Direction Thể hiện kiểu dữ liệu mà tham số là Input hay Output, hay là cả hai, 
hay nó là giá trị trả về từ một thủ tục lưu trữ sẵn (stored procedure). 
Name Tên của tham số. 
NumericScale Số chữ số thập phân trong tham số kiểu số. 
Precision Số chữ số của tham số kiểu số. 
Size Kích thước lớn nhất, tính theo byte, của giá trị tham số. 
Type Kiểu dữ liệu của tham số. 
Value Giá trị gán cho tham số. 
39 
 Để tạo một đối tượng Parameter mới, sử dụng phương thức CreateParameter của đối 
tượng Command 
Cú pháp 
Set pamareter = command.CreateParameter(Name, Type, Direction, Size, Value) 
Để thêm một tham số mới vào Parameter collection. Trước tiên ta phải tạo một thực 
thể (instance) cho đối tượng Parameter, sau đó thiết lập các giá trị property cho nó và 
cuối cùng sử dụng phương thức Append. 
Ví dụ: tạo một tham số mới và thêm tham số này vào Parameter collection. 
Set objParam = objCmd.CreateParameter ( “State”, 128, 1, 2, ”Ny” ) 
objCmd.Parameters.append objParam 
Ví dụ: 
<% 
‘tạo một thực thểcủa đối tượng Command 
objCmd = Server.CreateObject(“ADODB. Command”) 
‘tạo kết nối 
objConn.Open "DSN=student;uid=student;pwd=magic" 
objCmd.activeConnection = objConn.Open 
objCmd.CommandText="DeleteStateQuery" 
‘cho biết CommandText là một thủ tục lưu trữ sẵn 
objCmd.CommandType = 4 
strValue=Request. Form(“txtState”) 
‘khi submit từ một form 
Set objParam = objCmd.CreateParameter ( “State” ) 
‘chỉ có tên tham số 
ObjParam.Type=adChar 
‘ kiểu tham số là chuỗi 
ObjParam.Direction=adParamInput 
‘một query đưa vào tham số 
ObjParam.Size=Len(strValue) 
‘kích thước của chuỗi 
ObjParam.Value=strValue 
‘giá trị chuỗi 
objCmd.Parameters.append objParam 
‘thêm tham số vào collection 
objCmd.Execute 
‘thực thi câu lệnh 
Set objCmd.activeConnection = Nothing 
‘giải phóng tài nguyên đã sử dụng 
%> 
Tham khảo các đối tượng collection 
40 
 Mỗi khi chúng ta có các tham số trong collection. Để lấy giá trị của tham số trong 
collection ta có thể sử dụng Item property hoặc sử dụng chỉ mục (index) hoặc là tên 
tham số. 
Cú pháp 
objCmd.Parameters.Item(index) 
hoặc objCmd.Parameters(index) 
hoặc objCmd.Parameters. Item(tên_tham_số) 
hoặc là objCmd.Parameters(tên_tham_số) 
Ví dụ: để lấy giá trị của tham số State và 128 ở ví dụ trên, ta có thể sử dụng các Cú 
pháp objCmd.Parameters.Item(0) 
hoặc objCmd.Parameters(0) 
hoặc objCmd.Parameters.Item(“State”) 
hoặc là objCmd.Parameters(“State”) 
tương tự objCmd.Parameters.Item(1) 
hoặc objCmd.Parameters(1) 
hoặc objCmd.Parameters.Item(128) 
hoặc là objCmd.Parameters(128) 
Đọc và hủy bỏ các tham số 
Chúng ta có thể sử dụng vòng lặp For…Each để xuất ra tên và giá trị của tất cả các 
tham sốtrong Parameter collection và đặt chúng trong trang hiện hành sử dụng phương 
thức Response.Write 
Ví dụ: 
<% 
For Each objParam In objCmd.Parameters 
Response.Write “Parameter name = ” & objParam.Name & “” 
Response.Write “Parameter value = ” & objParam.Value 
Next 
%> 
Để hủy bỏ một tham số trong Parameter collection, sử dụng phương thức Delete. 
Ví dụ: xoá tham số tên State, chúng ta có thể sử dụng tên hoặc chỉ mục của nó 
objCmd.Parameters.Delete “State” 
objCmd.Parameters.Delete 0 
3. Đối tượng Recordset. 
Bằng cách sử dụng các đối tượng Connection và Command ta có thể thực thi các 
query để thêm vào, cập nhật hay xóa một record trong data source. Tuy nhiên trong 
các ứng dụng thì ta cũng phải thực hiện việc lấy ra một số các record từ ADO, để hiển 
thị giá trị của chúng ta phải sử dụng đối tượng Recordset. Sử dụng Recordset để hiển 
thị các record 
Một Recordset có thể được sử dụng để tượng trưng cho các record trong một bảng 
database. Nó có thể chứa một hoặc nhiều record (hàng), mỗi record có thể chứa một 
41 
 hoặc nhiều field (cột). Để tạo một thực thể (instance) của đối tượng Recordset, sử 
dụng phương thức 
Server.CreateObject: 
Set objRs = Server.CreateObject("ADODB.Recordset") 
Sau khi đã có biến đối tượng Recordset, ta có thể khởi tạo giá trị cho nó bằng cách lưu 
kết quả trả về mỗi khi thực thi phương thức Execute của đối tượng Connection hay 
Command. Để hiển thị các record trong Recordset, sử dụng vòng lặp thông qua các 
record. 
Ví dụ: 
<% 
Set objConn = Server.CreateObject(“ADODB.Connection”) 
‘tạo một thực thể (instance) của đối tượng Connection 
Set objRs = Server. CreateObject(“ADODB.Recordset”) 
objConn.Open "DSN=student;uid=student;pwd=magic" 
Set objRs = objConn.Execute(“SELECT * FROM MyTable” ) 
Do While objRs.EOF 
Response.Write objRs(“Name”) & “” 
objRs.MoveNext 
Loop 
Set objRs.Close 
Set objConn.Close 
%> 
Làm việc với Fields Collection. 
Mỗi đối tượng Recordset có một Fields collection chứa dữ liệu và thông 
tin về mỗi trường (field) trong record hiện hành. Sử dụng Fields collection để lấy mỗi 
record trong Recordset. 
Phương thức Mô tả 
Refresh Cập nhật collection để phản ánh sự thay đổi tới giá trị các field. 
Property Mô tả 
Count Trả về số field trong collection. 
Item Lấy lại nội dung của các field trong collection. 
Để hiển thị giá trị của cột trong bảng, bạn có thể sử dụng tên của trường (cột) hoặc khi 
bạn không biết tên của trường (cột) thì ta có thể sử dụng chỉ mục của trường đó để 
hiển thị. 
Chú ý: chỉ số của cácfiled trong record được đánh số từ 0 cho tới giá trị 
objRs.Fields.Count-1. 
42 
Ví dụ: hiển thị tất cả các hàng và cột trong một bảng 
Dislay Database Example 
<% whichDSN="DSN=student;uid=student;pwd=magic" 
Mysql="Select * From MyTable " 
Set objConn = Server.CreateObject("ADODB.Connection") 
Conn.Open whichDSN 
Set objRs = Server.CreateObject("ADODB. Recordset") 
Mysql="Select * From MyTable " 
objRs = objConn. Execute("Select * From MyTable ") 
howmanyfields= objRs.Fields.Count –1 
‘chứa số field trong Recordset 
%> 
‘hiển thị tên của các field 
‘hiển thị tất cả các field trong Recordset 
<% 
objRs.movenext 
Loop 
objRs.close 
set objRs=nothing 
objConn.close 
set objConn=nothing %> 
Các kiểu con trỏ (Cursor) và khóa (Locking) Recordset 
43 
 Một cursor xác định kiểu thao tác có thể thực hiện và kiểu thay đổi mà các user khác 
khi mở một Recordset. 
Còn kiểu locking xác định database sẽ xử lý trường hợp nhiều user cố gắng thay đổi 
một record trong cùng một lúc. 
Để thực hiện việc này, đầu tiên bạn tạo một thực thể (instance) của đối tượng 
Recordset, sau đó sử dụng phương thức Open để mở một Recordset. 
Cú pháp 
 objRs.Open Source, ActiveConnection, CursorType, LockType, Options 
với các tham số: 
Source: Một đối tượng Command, câu lệnh SQL, tên bảng hoặc thủ tục lưu trữ sẵn 
(stored procedure). 
ActiveConnection: Tên của dt Connection đã được mở kết nối với cơ sở dữ liệu cần 
làmviệc. 
CursorType: Kiểu của con trỏ được sử dụng khi mở Recordset. 
CursorType sử dụng các kiểu cursor khi mở Recordset là: 
AdOpenForwardOnly: (Mặc định)Với tham số này bạn chỉ có thể duyệt 
các record trong Recordset theo một chiều từ đầu đến cuối. 
AdOpenKeyset: Recordset được mở có khả năng cho phép ta cập nhập 
các record (xóa, thay đổi). Tuy nhiên, nếu user khác thêm một record mới, record này 
sẽ không xuất hiện trong Recordset. 
AdOpenDynamic: Có thể duyệt theo tất cả các chiều (lên, xuống) trong Recordset. 
Phản ánh tất cả những thay đổi (thêm vào, sửa đổi, loại bỏ) record trong Recordset do 
user thực hiện. 
AdOpenStatic: Bạn có thể duyệt theo tất cả các chiều (lên, xuống) trong Recordset. 
Không phản ánh tất cả những thay đổi record trong Recordset do user thực hiện. 
LockType: Kiểu locking sử dụng khi mở Recordset. 
LockType sử dụng các kiểu locking khi mở Recordset là: 
adLockReadOnly: Mặc định. Không thể thay đổi các record trong Recordset. 
adLockOptimistic: Một record chỉ bị lock (khóa) ngay sau khi thay đổi dữ liệu trên 
Recordset trên data source. 
adLockPessimistic: Một record chỉ bị lock (khóa) khi bạn gọi phương thức Update của 
Recordset. 
adLockBatchOptimistic: Các record sẽ được cập nhật theo bó (batch update). 
Options: Kiểu của query hoặc bảng đại diện bởi Source. 
Ví dụ: 
Cursor and Locking Example 
44 
<% 
Set objConn = Server.CreateObject(“ADODB.Connection”) 
Set objRs = Server.CreateObject(“ADODB.Recordset”) 
objConn.Open "DSN=student;uid=student;pwd=magic" 
MySql=(“Select * From MyTable”) 
objRs.Open Mysql, objConn, adOpenForwardOnly, adLockReadOnly, adCmdText 
objRs.close 
set objRs=nothing 
objConn.close 
set objConn=nothing 
%> 
Sửa đổi các record trong Recordset 
Bạn có thể sử dụng một số phương thức của Recordset để sửa đổi các record trong một 
Recordset. 
Phương thức Mô tả 
AddNew Thêm một record mới vào Recordset. 
Close Đóng lại đối tượng Recordset và các đối tượng con của nó. 
Delete Xoá record hiện hành trong Recordset. 
Requery Thực hiện lại query. 
Update Lưu các thay đổi trên record hiện hành. 
Ví dụ: sử dụng phương thức AddNew để thêm một record vào Recordset 
AddNew Database Example 
<% 
Set objConn = Server.CreateObject(“ADODB.Connection”) 
Set objRs = Server.CreateObject(“ADODB.Recordset”) 
objConn.Open "DSN=student;uid=student;pwd=magic" 
MySql=(“Select Name From MyTable”) 
objRs.Open Mysql, objConn, adOpenForwardOnly, adLockReadOnly, adCmdText 
objRs.addNew(“Name”)=“David” 
objRs.Update 
objRs.close 
set objRs=nothing 
45 
 objConn.close 
set objConn=nothing 
%> 
Duyệt các record trên Recordset. 
Đối tượng Recordset bao gồm một số phương thức để dịch chuyển qua 
các record trong một Recordset, record mà nó dịch chuyển tới là record hiện hành. Khi 
mở một Recordset thì kiểu CursorType mặc định là adOpenForwardOnly nghĩa là 
chúng ta chỉ có thể dịch chuyển về phía trước, còn nếu muốn dịch chuyển quanh một 
Recordset thì ta cần mở Recordset với kiểu CursorType là adOpenStatic (hoặc 
adOpenDynamic, adOpenKeyset). 
Move: Dịch chuyển vị trí của record hiện hành. 
MoveFirst: Dịch chuyển về record đầu tiên. 
MoveLast: Dịch chuyển về record cuối cùng. 
MoveNext: Dịch chuyển về record kế tiếp. 
MovePrevious: Dịch chuyển về record trước đó. 
Khi ta đã có một Recordset, để hiển thị truy xuất tới mỗi Recordset trong đó ta có thể 
sử dụng các phương thức duyệt như: MoveFirst, MoveLast, MoveNext, MovePrevious 
sẽ õ lấy được nội dung của record đầu tiên, cuối cùng, kế tiếp hay record phía trước. 
Khi sử dụng các phương thức để dịch chuyển các vị trí không xác định. Nếu record 
hiện hành là record là record cuối cùng trong Recordset thì khi gọi phương thức 
MoveNext thì sẽ gây ra lỗi. Để tránh trường hợp này thì ta sử dụng các property của 
Recordset như BOF, EOF để xác định record hiện hành là đầu tiên hay là cuối cùng. 
Các property này có ý nghĩa như sau: 
BOF property có giá trị TRUE nghĩa là con trỏ đang ở vị trí đầu Recordset, khi 
Recordset mới được mở thì BOF luôn có giá trị này. 
EOF property có giá trị TRUE nghĩa là con trỏ đang ở vị trí cuối cùng của Recordset. 
Nếu không có record nào trong Recordset thì cả BOF lẫn EOF đều là TRUE. 
Ví dụ: sử dụng một vòng lặp và phương thức MoveNext để duyệt các record trong 
Recordset. 
AddNew Database Example 
<% 
Set objConn = Server.CreateObject(“ADODB.Connection”) 
Set objRs = Server.CreateObject(“ADODB.Recordset”) 
objConn.Open "DSN=student;uid=student;pwd=magic" 
MySql=(“Select Name From MyTable”) 
objRs.Open Mysql, objConn, adOpenDynamic, adCmdText 
46 
 objRs.MoveLast 
Do While Not objRs.BOF 
Response.Write “” & objRs(“Name”) 
objRs.MovePrevious 
Loop objRs.Close 
set objRs=Nothing 
objConn.Close 
set objConn=Nothing 
%> 
Lưu ý: 
BOF và EOF có các điểm sau: 
 Nếu Recordset không chứa record nào khi bạn mở nó cả BOF và EOF là TRUE. 
 Khi BOF và EOF là TRUE, thuộc tính vẫn còn là TRUE cho đến khi bạn di chuyển 
tới một record đang tồn tại, ở thời điểm này giá trị BOF hay EOF sẽ trở thành FALSE. 
 Khi BOF hay EOF là FALSE và record duy nhất trong recordset bị xóa, thuộc tính 
vẫn giữ FALSE cho tới khi bạn cố di chuyển tới 1 record khác, ở thời điểm này cả 
BOF và EOF trở thành TRUE. 
 Vào lúc bạn tạo hay mở một Recordset có chứa ít nhất một record, record đầu tiên 
là record hiện hành và cả BOF và EOF là FALSE. 
47 
            Các file đính kèm theo tài liệu này:
 Giáo trình ASP.pdf Giáo trình ASP.pdf