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 |
Chia sẻ: hunglv | Lượt xem: 1818 | 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