Chương I Giới thiệu Internet và Intranet
Chương II Ngôn ngữ HTML
Chương III Cascading style sheets
Chương IV Ngôn ngữ kịch bản Javascript
Chương V Active Server Page
123 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 2524 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Phân biệt Internet và Intranet, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
>
Ví dụ form đơn giản kiểm tra dữ liệu đầu vào
function butCheckForm_onclick()
{
var myForm = document.form1;
if (myForm.txtAge.value == "" || myForm.txtName.value == "")
{
alert("Please complete all the form");
if (myForm.txtName.value == "")
{
myForm.txtName.focus();
}
else
{
myForm.txtAge.focus();
}
}
else
{
alert("Thanks for completing the form " + myForm.txtName.value);
}
}
function txtAge_onblur()
{
var txtAge = document.form1.txtAge;
if (isNaN(txtAge.value) == true)
{
alert("Please enter a valid age");
txtAge.focus();
txtAge.select();
}
}
function txtName_onchange()
{
window.status = "Hi " + document.form1.txtName.value;
}
Please enter the following details:
Name:
Age:
<input type="button" value="Check Details" name=butCheckForm
onclick="butCheckForm_onclick()">
Hộp text mậtkhẩu
Hộp text ẩn
Phần tử textarea
Hello World
Line 2
Theo dõi dự kiện
Để trơ giúp minh họa các sự kiện như phím lên, xuống, bấm phím bất kì.. làm việc như thế nào, ví dụ dưới đây minh họa điều đó
function DisplayEvent(eventName)
{
var myMessage = window.document.form1.textarea2.value;
myMessage = myMessage + eventName;
window.document.form1.textarea2.value = myMessage;
}
<textarea rows=15 cols=40 name=textarea1
onchange="DisplayEvent('onchange\n');"
onkeydown="DisplayEvent('onkeydown\n');"
onkeypress="DisplayEvent('onkeypress\n');"
onkeyup="DisplayEvent('onkeyup\n\n');">
<input type="button" value="Clear Event TextArea"
name=button1 onclick="window.document.form1.textarea2.value=''">
Checkboxes và Phím Radio
For example, to create a group of three radio buttons, our HTML would be
Ví dụ:
var radCpuSpeedIndex = 0;
function radCPUSpeed_onclick(radIndex)
{
var returnValue = true;
if (radIndex == 1)
{
returnValue = false;
alert("Sorry that processor speed is currently unavailable");
// Next line works around a bug in IE that doesn't cancel the
// Default action properly
document.form1.radCPUSpeed[radCpuSpeedIndex].checked = true;
}
else
{
radCpuSpeedIndex = radIndex;
}
return returnValue;
}
function butCheck_onclick()
{
var controlIndex;
var element;
var numberOfControls = document.form1.length;
var compSpec = "Your chosen processor speed is ";
compSpec = compSpec + document.form1.radCPUSpeed[radCpuSpeedIndex].value;
compSpec = compSpec + "\nWith the following additional components\n";
for (controlIndex = 0; controlIndex < numberOfControls; controlIndex++)
{
element = document.form1[controlIndex];
if (element.type == "checkbox")
{
if (element.checked == true)
{
compSpec = compSpec + element.value + "\n";
}
}
}
alert(compSpec);
}
Tick all of the components you want included on your computer
DVD-ROM
CD-ROM
Zip Drive
Select the processor speed you require
<input type="radio" name="radCPUSpeed" checked
onclick="return radCPUSpeed_onclick(0)" value="3.8 GHz">
3.8 GHz <input type="radio" name="radCPUSpeed"
onclick="return radCPUSpeed_onclick(1)" value="4.8 GHz">
4.8 GHz
<input type="radio" name="radCPUSpeed"
onclick="return radCPUSpeed_onclick(2)" value="6 Ghz">
6 GHz
<input type="button" value="Check Form" name="butCheck"
onclick="return butCheck_onclick()">
Phần tử select
and tags.
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Thẻ Monday chứa từ được lựa chọn, tạo ra lựa chọn mặc định khi trang được nạp. Giá trị của các option được định nghĩa bởi số.
Nếu muốn tạo thành hộp danh sách rơi xuống, chúng ta cần thay đổi thuộc tính size trong thẻ thành 1:
Nếu muốn người dùng lựa chọn nhiều hơn một giá trị trong danh sách tại một thời điểm, cần bổ sung thêm thuộc tính multiple.
Thẻ tạo ra đối tượng Select. Đối tượng này có thuộc tính mảng options[], và mảng này tao ra các đối tượng Option, mỗi một phần tử trong phần tử kết hợp với đối tượng Select. Ví dụ: ở ví dụ trước, nếu phần tử chứ trong form (tên form là theform) thì:
Document.theform.theday.options[0] tham chiếu tới giá trị đầu tiên (Monday)
Đối tượng Option có index, text và thuộc tính giá trị. Thuộc tính index trả về vị trị của option trong mảng options[]. Thuộc tinh text được hiển thị trong danh sách, còn thuộc tính value xác định giá trị cho option.
Ví dụ
var theDayElement = window.document.form1.theDay;
document.write("There are " + theDayElement.length + "options");
var optionCounter;
for (optionCounter = 0; optionCounter < theDayElement.length; optionCounter++)
{
document.write("Option text is " + theDayElement.options[optionCounter].text)
document.write(" and its value is ");
document.write(theDayElement.options[optionCounter].value);
document.write("")
}
Bố sung mới option
Tạo ra đối tượng mới Option
Bổ sung vào mảng options[] phần tủ option
var myNewOption = new Option("TheText","TheValue");
document.theForm.theSelectObject.options[0] = myNewOption;
Loại bỏ option: gán bằng giá trị null
document.theForm.theSelectObject.options[0] = null;
Ví dụ
function butRemoveWed_onclick()
{
if (document.form1.theDay.options[2].text == "Wednesday")
{
document.form1.theDay.options[2] = null;
}
else
{
alert('There is no Wednesday here!');
}
}
function butAddWed_onclick()
{
if (document.form1.theDay.options[2].text != "Wednesday")
{
var indexCounter;
var days = document.form1.theDay;
var lastoption = new Option();
days.options[6] = lastoption;
for (indexCounter = 6;indexCounter > 2; indexCounter--)
{
days.options[indexCounter].text = days.options[indexCounter - 1].text;
days.options[indexCounter].value = days.options[indexCounter - 1].value;
}
var option = new Option("Wednesday",2);
days.options[2] = option;
}
else
{
alert('Do you want to have TWO Wednesdays?????');
}
}
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
<input type="button" value="Remove Wednesday" name=butRemoveWed
onclick="butRemoveWed_onclick()">
<input type="button" value="Add Wednesday" name=butAddWed
onclick="butAddWed_onclick()">
Bổ sung Option mới trong IE
Trong IE< có rất nhiều thuộc tính bổ sung, phương thức và sự kiện được kết hợp với đối tượng. Mảng options[] có phương thức add() và remove() cho phép bổ sung và loại bỏ option.
Trước khi bổ sung, cần phải tạo trước bằng cách sử dụng toán tử new
PHương thức add() có 2 tham số: giá trị và thứ tự
Ví dụ
function butAddWed_onclick()
{
if (document.form1.theDay.options[2].text != "Wednesday")
{
var option = new Option("Wednesday",2);
document.form1.theDay.options.add(option,2);
}
else
{
alert('Do you want to have TWO Wednesdays?????');
}
}
Ví dụ sử dụng phương thức remove()
function butRemoveWed_onclick()
{
if (document.form1.theDay.options[2].text == "Wednesday")
{
document.form1.theDay.options.remove(2);
}
else
{
alert('There is no Wednesday here!');
}
}
Các sự kiện phần tử lựa chọn
Các phần tử lựa Select có 3 sự kiện: onblur, onfocus và onchange.
Ví dụ
function writeOptions(startNumber, endNumber)
{
var optionCounter;
for (optionCounter = startNumber; optionCounter <= endNumber; optionCounter++)
{
document.write('' + optionCounter);
}
}
function writeMonthOptions()
{
var theMonth;
var monthCounter;
var theDate = new Date(1);
for (monthCounter = 0; monthCounter < 12; monthCounter++)
{
theDate.setMonth(monthCounter);
theMonth = theDate.toString();
theMonth = theMonth.substr(4,3);
document.write('' + theMonth);
}
}
function recalcDateDiff()
{
var myForm = document.form1;
var firstDay = myForm.firstDay.options[myForm.firstDay.selectedIndex].value;
var secondDay =
myForm.secondDay.options[myForm.secondDay.selectedIndex].value;
var firstMonth =
myForm.firstMonth.options[myForm.firstMonth.selectedIndex].value;
var secondMonth =
myForm.secondMonth.options[myForm.secondMonth.selectedIndex].value;
var firstYear =
myForm.firstYear.options[myForm.firstYear.selectedIndex].value;
var secondYear =
myForm.secondYear.options[myForm.secondYear.selectedIndex].value;
var firstDate = new Date(firstDay + " " + firstMonth + " " + firstYear);
var secondDate = new Date(secondDay + " " + secondMonth + " " + secondYear);
var daysDiff = (secondDate.valueOf() - firstDate.valueOf());
daysDiff = Math.floor(Math.abs((((daysDiff / 1000) / 60) / 60) / 24));
myForm.txtDays.value = daysDiff;
return true;
}
function window_onload()
{
var theForm = document.form1;
var nowDate = new Date();
theForm.firstDay.options[nowDate.getDate() - 1].selected = true;
theForm.secondDay.options[nowDate.getDate() - 1].selected = true;
theForm.firstMonth.options[nowDate.getMonth()].selected = true;
theForm.secondMonth.options[nowDate.getMonth()].selected = true;
theForm.firstYear.options[nowDate.getFullYear()- 1970].selected = true;
theForm.secondYear.options[nowDate.getFullYear() - 1970].selected = true;
}
First Date
writeOptions(1,31);
writeMonthOptions();
writeOptions(1970,2010);
Second Date
writeOptions(1,31);
writeMonthOptions();
writeOptions(1970,2010);
Total difference in days
Chương V Active Server Pages
5.1.Giới thiệu công nghệ ASP
ASP là công nghệ cho phép tạo ra những trang web động có khả năng giao tiếp với người dùng bằng cách lập trình script ở trên máy chủ. Mã nguồn của những chương trình này thường được viết bằng ngôn ngữ VBScript và được nhúng vào các thẻ đặc biệt trong HTML. Những trang web này sẽ được dịch ở máy chủ và gửi kết quả là những trang HTML thông thường về phía người dùng.
Công nghệ ASP được gói trọn trong thư viện liên kết động nhỏ (khoảng 300KB) có tên là ASP.DLL, thư viện này được nằm trong bộ nhớ của server và khi bất kì người sử dụng nào có yêu cầu đến một file .ASP thì lưới lọc ISAPI này sẽ quản lý phần biên dịch. ASP sẽ nạp tất cả các DLLs cần thiết vào bộ nhớ, thực thi các mã phía máy chủ có liên quan đến Active Server Pages và kết quả tạo ra là một trang web dưới hạng HTML. Kết quả này được mãy chủ gửi về phía trình duyệt của máy khách.
5.2 Cú pháp và thao tác cơ bản
5.2.1. Cách chèn các đoạn mã VBScript vào trong trang web
a. Chèn các đoạn mã
Để các đoạn mã trong file ASP có thể thực hiện được thì các trang web này phải có phần mở rộng là ASP. Trong trang web có viết các mã ASP thì các đoạn mã phải được đặt giữa cặp kí hiệu . Cặp kí hiệu này là ranh giới của các ActiveX Scripting Engine biết rằng đoạn mã này cần phải biên dịch và trong phần khai báo đó ta có thể viết các mã ASP.
* Chương trình ví dụ đầu tiên (Hello world). Soạn thảo chương trình sau và ghi vào thư mục gốc của web server với tên Hello.ASP
Trong ví dụ trên thì dòng số 6 và dòng số 8 dùng để khai báo bắt đầu và kết thúc đoạn script. Dòng 7 là nội dung của script.
Lệnh Response.Write("Hello World") để gửi dữ liệu về phía máy trạm. Dòng 7 sẽ gửi tới browser chữ Hello World.
Kết quả khi duyệt trang web này ở địa chỉ
b. Chèn các biểu thức.
Ngoài cách sử dụng các đoạn mã như trên ASP còn cho phép ta chèn giá trị các biểu thức một cách nhanh chóng bằng cách sử dụng . Ta có thể xem qua ví dụ sau:
Kết quả:
5.2.2. Chú thích
Chú thích là một phần không thể thiếu trong ngôn ngữ, nó làm cho mã lệnh trở nên dễ đọc đối với người lập trình. Chú thích trong ASP được đặt sau dấu nháy đơn (') hoặc sau chuỗi Rem.
Ví dụ: ta sẽ thấy hai vị trí chú thích ở dòng 7 và 8
5.2.5. Các toán tử
Các toán tử trong VBScript gần giống các toán tử trong ngôn ngữ lập trình Turbo Pascal. Chỉ có một số toán tử khác biệt được thể hiện trong bảng sau
TOÁN TỬ
BIỂU DIỄN
VÍ DỤ
KẾT QUẢ VÍ DỤ
Mũ
^
2^3
2*2*2 = 8
Chia lấy phần nguyên
\
8\3
2
Cộng chuỗi
& hoặc +
"Hello" & "World"
"HelloWorld"
Gán giá trị cho biến
=
a = 5
biến a có giá trị 5
Gán giá trị cho biến kiểu đối tượng
Set =
set Conn = Server.CreateObject("ADODB.Connection")
5.2.4. Hằng và biến
a. Khai báo hằng
Hằng trong VBScript được định nghĩa sau từ khóa Const. Tương tự như các ngôn ngữ khác ta chỉ có thể sử dụng giá trị của hằng mà không thể thay đổi giá trị của hằng.
Cú pháp:
Const =
Ví dụ dưới đây khai báo hằng ở ba kiểu khác nhau:
b. Khai báo biến
Trong VBScript các biến và hằng đều không cần phải quy định kiểu, kiểu của các biến này là Variant và nó có thể gán cho bất kì một kiểu nào. Việc khai báo biến bắt đầu bằng từ khóa Dim. Cú pháp:
Dim , ,...
Ví dụ:
Chú ý: Việc khai báo biến trong VBScript là không bắt buộc. Nếu ta sử dụng một biến chưa được khai báo thì coi như biến mới sẽ được tự động tạo mới. Để bắt buộc khai báo biến trước khi sử dụng ta sử dụng lựa chọn Option Explicit.
c. Khai báo mảng
Để khai báo một biến mảng có ta sử dụng lệnh Dim với cú pháp:
Dim (n)
Khi đó mảng được khai báo với các phần tử được đánh số từ 0 đến n. Ta có thể truy cập vào các phần tử của mảng bằng cách: (chỉ số)
Ví dụ:
Ta cũng có thể khai báo một mảng chưa xác định số phần tử bằng cách bỏ chỉ số n trong khai báo thông thường. Khi muốn dùng mảng thật sự ta phải khai báo lại bằng lệnh ReDim.
Ví dụ:
5.3. Các câu lệnh
5.3.1. Lệnh rẽ nhánh
a. Lệnh rẽ nhánh dạng khuyết
b. Lệnh rẽ nhánh đầy đủ
c. Lệnh rẽ nhánh mở rộng
d. Lệnh Select Case
Dạng 1
Dạng 2
5.3.2. Lệnh lặp xác định
a. Lặp với số lần định trước
Dạng 1:
Dạng 2
Ví dụ
Mã lệnh LAP.ASP
Kết quả
b. Vòng lặp For Each ... Next (Lặp trong các phần tử của một nhóm)
Mã lệnh LAP1.ASP
Kết quả
5.3.3. Vòng lặp không xác định
a. Lệnh While...wend hoặc Do...Loop (Lặp khi điều kiện đúng)
Mã lệnh LAP2.ASP
Kết quả
b. Lệnh Do Until (Thực hiện cho đến khi điều kiện đúng)
Mã lệnh LAP3.ASP
Kết quả
c. Lệnh lặp Do...Loop While/Until (Thực hiện lệnh trước khi kiểm tra điều kiện)
5.4 Hàm và thủ tục
5.4.1. Hàm
a. Định nghĩa một hàm:
- Public hoặc Private: Kiểu của hàm có thể loại bỏ nếu không cần thiết.
- Exit Funtion: Thoát khỏi hàm mà không thực hiện tiếp phần sau của lệnh này.
- Các tham số nếu có phải được đặt cách nhau bởi dấu phảy (,) và không khai báo kiểu. Khi gọi hàm các tham số này phải được truyền vào đủ số lượng và theo đúng thứ tự đã khai báo.
- Trả về giá trị cho hàm bằng cách: =
b. Gọi một hàm đã được định nghĩa:
Cú pháp
[(Các tham số nếu có)]
Hoặc Call [(Các tham số nếu có)]
Ta có thể gán giá trị một hàm cho một biến bằng cách
= [(Các tham số nếu có)]
5.4.2. Thủ tục
a. Định nghĩa thủ tục:
- Public hoặc Private: Kiểu của thủ tục có thể loại bỏ nếu không cần thiết.
- Exit Sub: Thoát khỏi thủ tục mà không thực hiện tiếp phần sau của lệnh này.
- Các tham số nếu có phải được đặt cách nhau bởi dấu phảy (,) và không khai báo kiểu. Khi gọi thủ tục các tham số này phải được truyền vào đủ số lượng và theo đúng thứ tự đã khai báo.
b. Gọi một thủ tục đã được định nghĩa:
Cú pháp
[(Các tham số nếu có)]
hoặc
Call [(Các tham số nếu có)]
5.4.3. Ví dụ sử dụng hàm và thủ tục (Giaỉ phương trình bậc 2 một ẩn số)
Chương trình ví dụ: PTBac2.ASP
Kết quả khi duyệt trang web này với a=1, b=2, c=1
5.4.2. MỘT SỐ HÀM THƯỜNG DÙNG TRONG VBSCRIPT
HÀM
CHỨC NĂNG
VÍ DỤ
KẾT QUẢ
HÀM TOÁN HỌC
Abs(x)
|x|
Abs(-1)
1
Sqr(x)
Sqr(4)
2
HÀM CHUYỂN ĐỔI KIỂU
CBool(Biến)
Chuyển kiểu biến thành kiểu bool
CByte(Biến)
Chuyển kiểu biến thành kiểu byte
CCur(Biến)
Chuyển kiểu biến thành kiểu Currency
CDate(Biến)
Chuyển kiểu biến thành kiểu ngày tháng
CInt(Biến)
Chuyển kiểu biến thành kiểu nguyên
CStr(Biến)
Chuyển kiểu biến thành kiểu chuỗi
HÀM THỜI GIAN
Date()
Ngày tháng năm hiện tại
Now()
Thời điểm hiện tại
Second(BTthời gian)
Lấy giây của BTThờiGian
Minute(BTthời gian)
Lấy phút của BTThờiGian
Hour(BT thời gian)
Lấy giờ của BTThờiGian
Day(BT thời gian)
Lấy ngày của BTThờiGian
WeekDay((BTThờiGian)
Ngày trong tuần của BTThờiGian
Month(BTThờiGian)
Lấy tháng của BTThờiGian
Year(BT thời gian)
Lấy năm của BTThờiGian
WeekDayName(n)
Tên của ngày thứ n trong tuần
WeekDayName(2)
Monday
MonthName(n)
Tên của tháng thứ n trong năm
MonthName(6)
June
HÀM KIỂM TRA
IsDate(Biểu thức)
Có phải là biểu thức ngày không
IsEmpty(Biểu thức)
Biểu thức có rỗng không? BT rỗng là BT chưa chứa giá trị
IsNull(Biểu thức)
Biểu thức có giá trị là NULL không?
IsNumeric(Biểuthức)
Biểu thức có là số không
IsObject(Biểu thức)
Biểu thức có là đối tượng không?
HÀM XỬ LÝ CHUỖI
LCase(Chuỗi)
Chuyển chuỗi thành chữ thường
LCase("heLLo")
"hello"
UCase(Chuỗi)
Chuyển chuỗi thành chữ hoa
UCase("heLLo")
"HELLO"
Left(Chuỗi, n)
Lấy n kí tự bên trái chuỗi
Left("heLLo",2)
"he"
Right(Chuỗi, n)
Lấy n kí tự bên phải chuỗi
Right("heLLo",2)
"Lo"
Len(Chuỗi)
Độ dài của chuỗi
Len ("heLLo",2)
5
LTrim(Chuỗi)
Cắt hết kí tự trắng bên trái chuỗi
LTrim(" heLLo ")
"heLLo "
RTrim(Chuỗi)
Cắt hết kí tự trắng bên phải chuỗi
RTrim(" heLLo ")
" heLLo"
Trim(Chuỗi)
Cắt hết kí tự trắng hai đầu chuỗi
Trim(" heLLo ")
"heLLo"
MỘT SỐ HÀM KHÁC
Asc(kí tự)
Mã kí tự ASCII của biến
ASC("A")
65
Chr(n)
Kí tự có mã ASCII là n
Chr(65)
"A"
5.4.3. ĐOẠN MÃ DÙNG CHUNG
Khi tiến hành xây dụng chương trình ở nhiều trang khác nhau, để tránh phải gõ lại, cập nhật khi có thay đổi các đoạn mã trong mỗi trang người ta có thể sử dụng lại các đoạn mã ở các trang khác để chèn vào trang hiện thời.
Cú pháp:
hoặc
Nếu sử dụng INCLUDE VIRTUAL thì thư mục chứa file cần chèn vào phải là một thư mục ảo trên server và phần mở rộng của file phải là .INC, còn nếu dùng INCLUDE FILE thì phải chỉ ra đường dẫn vật lý của file cần chèn.
5.5. Tệp cấu hình GLOBAL.ASA
Global.asa là một file được đặt trong thư mục gốc của một ứng dụng web, nó là file được thực thi chỉ một lần đầu tiên vào lúc trình duyệt đầu tiên phát yêu cầu đến ứng dụng web. Lúc này Global.asa được web server tìm trên thư mục gốc của ứng dụng và thực thi nó. File này thường được dùng để nạp các cấu hình cần thiết, khai báo đối tượng và đặt các thủ tục đáp ứng sự kiện.
5.5.1. Các sự kiện
a. Sự kiện Application_OnStart
Sự kiện Application_OnStart phát sinh khi người dùng đầu tiên gửi yêu cầu đến ứng dụng web. Application_OnStart chỉ xảy ra một lần đối với người đầu tiên. Muốn sự kiện này xảy ra lại chỉ có cách khởi động lại IIS.
Viết lệnh đáp ứng sự kiện này thường dùng để khởi tạo giá trị các biến ở mức toàn cục và hiệu lực với mọi người dùng chẳng hạn như: số người ghé thăm trang web, đường dẫn đến CSDL,...
b. Sự kiện Session_OnStart
Phát sinh khi người dùng yêu cầu trang đầu tiên trong ứng dụng từ trình duyệt. Ta sử dụng sự kiện này để khởi tạo các gía trị biến, các đối tượng cần thiết.
Sự kiện này có thể xảy ra nhiều lần với mỗi người dùng
c. Sự kiện Session_OnEnd
Sự kiện này phát sinh khi phiên làm việc của người dùng chấm dứt nghĩa là nó hết hạn hoặc người dùng đóng cửa sổ trình duyệt lại.
Trong sự kiện này ta thường viết các thủ tục để xóa các biến nhớ hoặc có thể lưu lại các trạng thái thông tin nếu cần.
Tương tự như sự kiện Session_OnStart, sự kiện Session_OnEnd cũng có thể xảy ra nhiều lần với mỗi người dùng.
d. Sự kiện Applicaton_OnEnd
Sự kiện này phát sinh khi ứng dụng ASP được tải xuống bằng MMC (Microsoft Management Console), hoặc khi ứng dụng bị ngừng một cách vô thức bởi một lý do nào đó (dịch vụ web bị ngừng trên web server)
Tương tự như Application_OnStart, Application_OnEnd chỉ phát sinh một lần duy nhất, các mã lệnh được viết để xử lý sự kiện này sẽ được gọi sau cùng. Ta thường dùng sự kiện này để lưu lại các giá trị cần thiết ngay trước khi dịch vụ web ngừng làm việc.
5.5.2. Khai báo đối tượng
File cấu hình Global.asa là nơi duy nhất ta có thể khai báo các đối tượng COM bằng cặp thẻ ...
Cú pháp
Nếu ta sử dụng trình soạn thảo VisualInterDev trong bộ VisualStudio thì việc thêm các đối tượng vào Global.asa rất đơn giản, thao tác còn lại chỉ là kéo-thả. Ta cần lưu ý rằng các đoạn mã trên không đặt trong
- Scope là phạm vi của biến: là Application hoặc Session
- ID: Tên ta đặt cho đối tượng
- ProgID hoặc ClassID là định danh của đối tượng COM ta muốn chèn.
Ví dụ về chèn một đối tượng
5.5.3. Một file cấu hình Global.asa đơn giản
5.5.2. TẬP HỢP (COLLECTION) TRONG ASP
5.5.2.1. Khái niệm
Tập hợp là một khái niệm thường xuyên phải sử dụng trong ASP. Hiểu một cách đơn giản, tập hợp là một số các biến, đối tượng thuộc cùng một đối tượng nào đó. Trong ASP đa số các đối tượng đều có các tập hợp bên trong nó.
5.5.2.2. Cách truy cập các phần tử trong tập hợp
Một tập hợp trong ASP có tính chất như một mảng các giá trị. Chúng ta có thể truy cập thông qua một khóa hoặc một số nguyên coi như chỉ số của mảng đó. Một tập hợp thông thường có 3 thuộc tính cơ bản đó là Item, Key và Count trong đó thuộc tính Item là "thuộc tính mặc định" nghĩa là trong một số trường hợp ta có thể không cần thiết viết tên thuộc tính này khi truy cập.
a. Thuộc tính Item
Được dùng để truy cập đến một phần tử nào đó trong tập hợp. Ta có thể xác định vị trí của phần tử đó bằng một chuỗi hay có thể là một số.
Ví dụ: Ta có thể truy cập vào tập hợp QueryString của đối tượng Request như sau:
hoặc ta có thể
Vì thuộc tính Item là thuộc tính mặc định của tập hợp nên ta có thể bỏ qua thuộc tính này cho đơn giản trong khi viết như sau:
b. Thuộc tính Key
Thuộc tính này trả ra tên cụ thể của một phần tử trong tập hợp.
Ta có công thức:
- Nếu i là chỉ số của phần tử trong một tập hợp A thì name = A.Key(i) là tên của phần tử này. Khi đó cách viết A.Item(i) và A.Item(Name) là hoàn toàn tương đương.
c. Thuộc tính Count
Thuộc tính này trả về tổng số phần tử trong một tập hợp.
5.6. Xử lý các FORM dữ liệu
5.6.1. Mở đầu
Các form dữ liệu là nơi người dùng có thể nhập dữ liệu vào và gửi về phía Server. Một form chứa một hoặc nhiều điều khiển và người sử dụng có thể nhập các giá trị vào. Sau khi nhập xong dữ liệu người sử dụng sẽ ra lệnh gửi form đi, form chứa các dữ liệu này sẽ được gửi tới địa chỉ được chỉ định trong form để xử lý. Kết quả trả về cho người dùng phụ thuộc vào trình xử lý trên server.
Để định nghĩa một form ta sử dụng đoạn mã
Phương thức: Cách thức gửi form đi, có thể sử dụng GET hoặc POST
5.6.2. Sử dụng phương thức GET
5.6.2.1. Định nghĩa form dùng phương thức GET
Để định nghĩa form dùng phương thức GET ta dùng đoạn mã sau
Ví dụ
5.6.2.2. Đặc điểm form dạng GET
Khi định nghĩa form dạng GET thì các dữ liệu mà form gửi đến trình xử lý sẽ được gửi đi theo phương thức GET. Nghĩa là các dữ liệu này sẽ được đưa thêm vào phần sau của chuối URL trên trình duyệt.
Với cách làm này có đôi phần tiện dụng vì ta có thể nhập giá trị các biến trực tiếp lên URL của trình xử lý. Tuy nhiên có một nhược điểm là dung lượng kí tự có thể nhập lên URL là khá nhỏ (dưới 2000 kí tự). Do đó người ta chỉ dùng cách này khi lượng thông tin cần truyền là đơn giản, dung lượng ít.
5.6.2.3. Cách lấy dữ liệu từ form dạng GET
Để lấy dữ liệu từ form dạng GET người ta dùng tập hợp QueryString của đối tượng Request.
Cú pháp: Request.QueryString("")
Chi tiết về đối tượng này sẽ được đề cập trong các bài sau. Ta có thể tam hiểu thông qua ví dụ sau đây:
5.6.2.4. Ví dụ
Trong ví dụ này ta làm một form cho phép người sử dụng nhập thông tin về Họ và tên rồi gửi về trình xử lý theo phương thức GET, trình xử lý sẽ hiện một câu thông báo chào người đó.
FORMGET.HTM
Sau khi nhập dữ liệu trên trình duyệt và nhấn Gửi đi chú ý chuỗi trên URL
5.6.3. Sử dụng phương thức POST
5.6.3.1. Định nghĩa form dùng phương thức POST
Để định nghĩa form dạng POST ta dùng đoạn mã sau
Ví dụ:
5.6.3.2. Đặc điểm form dạng POST
Khi định nghĩa form dạng POST các dữ liệu sẽ được gửi thẳng đến trình xủ lý theo phương thức POST, không qua URL do đó lượng dữ liệu được gửi đi là không hạn chế.
Người ta thường dùng phương thức POST để truyền các dữ liệu lớn.
5.6.3.3. Cách lấy dữ liệu từ form dạng POST
Để lấy dữ liệu từ form được gửi đến theo phương thức POST người ta dùng tập hợp FORM của đối tượng Request.
Cú pháp: Request.Form("")
Chi tiết về đối tượng này sẽ được đề cập trong các bài sau. Ta có thể tam hiểu thông qua ví dụ sau đây:
5.6.3.4. Ví dụ
Trong ví dụ này ta làm lại ví dụ trong phần 2.4 của bài này nhưng có khác là dữ liệu trong form được gửi đi theo phương thức POST.
FORMPOST.HTM
Sau khi nhập dữ liệu trên trình duyệt và nhấn Gửi đi chuỗi trên URL không có dữ liệu của form
5.7. Các đối tượng cài sẵn trong ASP
5.7.1. Các đối tượng ASP
Thực chất ASP được xây dựng trên cơ sở hướng đối tượng và nó có một tập các đối tượng được cài đặt sẵn làm cơ sở cho người lập trình, có các đối tượng tiện ích (có thể cài đặt hoặc không) và bản thân chúng cũng có những đối tượng cho riêng mình đó là các đối tượng ActiveX/COM
Một số đối tượng cài sẵn thông dụng:
Request
Response
Application
Session
Server
Các đối tượng có các tập hợp, các thuộc tính và các phương thức, để truy cập vào một thuộc tính hoặc một phương thức nào đó của đối tượng ta sử dụng:
.
Ví dụ:
Response.Write("Hello World")
5.7.2. Đối tượng REQUEST
Một trong những mục đích của ASP là cho phép nhận thông tin từ phía client và người sử dụng. Đối tượng Request được dùng để nhận các thông tin đó được dễ dàng. Đối tượng Request quản lý các thông tin được gửi từ phía web browser lên server như dữ liệu của các form, cookies...
Đối tượng Request giúp chúng ta truy cập vào đoạn đầu và thân các yêu cầu HTTP của người sử dụng. Đây là đối tượng rất quan trọng vì ta phải thông qua nó để nhận được và đáp ứng các yêu cầu người sử dụng đưa ra. Sử dụng đối tượng Request chúng ta mới có thể xây dựng được trang web động và thực hiện được các hoạt động khác có ý nghĩa hơn ở máy chủ như cập nhật các dữ liệu ở máy khách vào cơ sở dữ liệu...
5.7.2.1. Một số tập hợp thông dụng trong đối tượng Request
TÊN TẬP HỢP
MIÊU TẢ
QueryString()
Chứa các giá trị được gửi lên từ các yêu cầu HTTP Get (hiểu đơn giản là từ các URL)
Form()
Chứa các giá trị trong form được gửi đến (với điều kiện form phải sử dụng phương pháp POST
Cookies()
Chứa các thông tin của các cookies được gửi trong yêu cầu HTTP
ServerVariables()
Chứa danh sách các giá trị của các biến môi trường đã được xác định trước
a. Tập hợp QueryString
Tập hợp QueryString cho phép ta lấy thông tin từ máy khách gửi đến, có thể là một form được gửi theo phương pháp GET hoặc dữ liệu được gắn với URL khi trang web được yêu cầu.
Để đưa được các biến vào chương trình, sau phần cuối của địa chỉ thông thường ta thêm dấu (?) rồi sau đó đến từng cặp = được phân cách nhau bởi dấu (&).
Ví dụ: để truyền ba biến a, b, c có giá trị lần lượt là 1, 2, 1 về trang PTBAC2.ASP trên server thì chuỗi URL khi đó như sau.
Tập hợp này có tính năng tương đối hạn chế về số lượng các kí tự có thể gửi được trong tiêu đề và trong yêu cầu HTTP. Giới hạn dữ liệu này ở khoảng dưới 2000 kí tự. Nêu số lượng kí tự vượt quá số lượng giới hạn thì chúng sẽ không được sử dụng mặc dù script vẫn chạy.
Ví dụ: ta quay lại ví dụ Giải phương trình bậc 2 ở bài trước. Các biến a, b, c được lấy vào trong chương trình bằng cách lấy từ QueryString.
Và các biến này được truyền vào từ URL của trình duyệt:
b. Tập hợp Form
Tập hợp này cho phép nhận thông tin đầu vào từ các form được gửi đến thông qua phương thức POST. Phương thức này có ưu điểm hơn phương thức GET ở chỗ là có thể truyền được lượng dữ liệu lớn.
* Ví dụ: Ta có thể sửa lại chương trình giải phương trình bậc 2 trong phần trên để cho phép người sử dụng nhập dữ liệu từ trang PTBAC2.HTM và gửi dữ liệu sang trang GIAIPTB2.ASP để xử lý như sau:
- Mã lệnh PTBAC2.HTM
- Kết quả PTBAC2.HTM
- Mã lệnh phần đọc dữ liệu trong GIAIPTB2.ASP
- Kết quả
Giải thích chi tiết cho phương pháp này sẽ được đề cập ở phần sau.
c. Tập hợp Cookies
Cookies là những mẩu thông tin nhỏ được lưu trên máy trạm thông thường các Cookies được sử dụng để xác định các người sử dụng truy cập trang web.
Chi tiết về Cookies sẽ được đề cập trong một phần riêng về Cookies.
d. Tập hợp ServerVariables
ServerVariables là một tập các giá trị của HTTP header được gửi từ client cùng với giá trị một số biến môi trường của webserver. Các thành phần trong tập này đều là giá trị chỉ đọc.
5.7.2.2. Thuộc tính
Đối tượng Request chỉ có một thuộc tính duy nhất đó là TotalBytes cung cấp thông tin về số bytes dữ liệu mà người dùng chuyển lên web server. Thuộc tính này ít được sử dụng trừ trường hợp xử lý đặc biệt trên server như upload file từ phía client.
5.7.3.3. Phương thức
Đối tượng Request chỉ có một phương thức là BinaryRead phương thức này rất ít được sử dụng và thường không được dùng đến nên ta không đề cập cụ thể ở đây.
5.7.3. Đối tượng RESPONSE
Cùng với đối tượng Request, đối tượng Response cho phép chúng ta quyền kiểm soát thông tin từ server được gửi trả về trình duyệt. Hai đối tượng Request và Response tạo thành một cặp cho phép tạo nên sự giao tiếp client-server.
5.7.3.1. Các tập hợp
Đối tượng Response chi có duy nhất một tập hợp đó là tập hợp Cookies. Tập hợp này cho phép chúng ta tạo nên các Cookies trên máy trạm.
Chi tiết về Cookies sẽ được đề cập trong một phần riêng về Cookies.
5.7.3.2. Một số thuộc tính
TÊN THUỘC TÍNH
MIÊU TẢ
Buffer = [True | False]
- Điều khiển thông tin được xử lý trước khi gửi về cho client
+ Nếu được đặt là True thì tất cả các script trên trang phải được chạy trước khi gửi kết quả về client
+ Nếu được đặt là False (giá trị mặc định) thì những kết quả sẽ được gửi về client ngay sau khi mỗi dòng được thực hiện xong.
Charset(charset_name)
Đặt tên tập hợp các kí tự
ContentType="Kiểu"
Thiết đặt nội dung HTTP. Có một số kiểu phổ biến
+ Text/HTML (Mặc định)
+ Image/gif
+ Image/jpeg
+ Text/plain
Expires = Số phút
Đặt thời gian một trang web được cất trên browser trước khi nó hết hạn.
Nếu đặt =0 trang này sẽ không bao giờ được lưu lại trên browser.
5.7.3.3. Một số phương thức
TÊN PHƯƠNG THỨC
MIÊU TẢ
Write(Chuỗi kí tự)
Gửi chuỗi kí tự về trình duyệt
Redirect(Địa chỉ mới)
Chuyển địa chỉ trình duyệt sang một địa chỉ mới
Chú ý: Trong một số phiên bản cũ của web server ta không được thực hiện bất cứ một lệnh viết nào lên trình duyệt trước khi thực hiện lệnh này. Nếu làm trái điều này sẽ gây ra lỗi.
End
Kết thúc việc thực hiện scripts, trả về client giá trị hiện tại
Flush
Gửi ngay lập tức giá trị được lưu trong buffer về trình duyệt. Lệnh này đòi hỏi Response.Buffer phải được đặt là true, nếu không sẽ gây ra lỗi run-time error.
Clear
Xóa ngay lập tức toàn bộ giá trị output được lưu trong buffer. Lệnh này đòi hỏi Response.Buffer phải được đặt là true, nếu không sẽ gây ra lỗi run-time error.
Ví dụ:
Trong ví dụ dưới đây có 2 trang web, một trang là trang LOGIN.HTM, trên trang này có một form cho phép người dùng nhập tên và mật khẩu. Khi nhấn submit, các thông tin được gửi sang trang LOGIN.ASP. Nếu tên truy nhập đúng là "user" và mật khẩu đúng là "password" thì trình duyệt tự động chuyển sang trang DEFAULT.ASP, ngược lại trình duyệt quay về trang LOGIN.HTM
- Trang LOGIN.HTM:
- Kết quả:
- Trang LOGIN.ASP
5.7.4. Đối tượng APPLICATION
5.7.4.1. Khái niệm
Một ứng dụng trên web là một tập hợp các trang có thể truy cập thông tin qua một thư mục ảo xác định nào đó. Các trang này làm việc cùng nhau để thực hiện một mục đích hoặc một công việc nào đó. Và đối tượng Application dùng để tạo ra mối liên kết giữa các trang này.
Do đối tượng Application dùng để chia sẻ thông tin giữa các trang nên Application là toàn cục với mọi trang trong web. Và là toàn cục với tất cả client sử dụng trang web này, việc thay đổi một thuộc tính của Application tại một vị trí sẽ tạo ra sự thay đổi ở tất cả các vị trí khác.
Các biến Application chỉ được tạp ra trong Global.asa nhưng có thể được truy nhập và sửa đổi bởi bất cứ một trang nào trong web.
Đối tượng Application được khởi tạo vào lúc máy khách đầu tiên yêu cầu bất kì một file nào trong thư mục ảo của web.
* Ví dụ sử dụng Application
5.7.4.2. Các tập hợp của đối tượng Application
a. Contents(Key):
Tập hợp này chứa tất cả các biến được giới hạn ở mức độ ứng dụng và các đối tượng được bổ xung vào ứng dụng hiện tại thông qua các script.
Tập hợp này là tập hợp mặc định của Application nên hai cách viết sau đây là hoàn toàn tương đương:
Application("dbTimeOut") = 15
và
Application.Contents("dbTimeOut") = 15
Tập hợp này có các thuộc tính Item, Key, Count, Chi tiết xem lại bài tập hợp
b. StaticObject(Key):
Thuộc tính này dùng để truy xuất các đối tượng được định nghĩa trong tập hợp.
Tập hợp này có các thuộc tính Item, Key, Count, Chi tiết xem lại bài tập hợp
5.7.4.3. Các phương thức
a. Phương thức Lock
Phương thức này dùng để ngăn cản không cho người dùng khác thay đổi giá trị các biến trong tập hợp Application. Sử dụng phương thức này để giải quyết vấn đề tương tranh giữa các người sử dụng.
Phương thức này sẽ khóa toàn bộ đối tượng Application (ta không thể thay đổi được bất cứ một thuộc tính nào) do đó ta phải sử dụng phương thức này trong thời gian ít nhất có thể.
* Cú pháp: Application.Lock
b. Phương thức UnLock
* Chức năng: Tháo khóa ta đã đặt bằng phương thức Lock ở trên
* Cú pháp: Application.UnLock
c. Cách sử dụng Lock và UnLock
Thông thường, ta nên sử dụng phối hợp Lock và UnLock như sau
Ví dụ:
5.7.4.4. Các sự kiện
Đối tượng Application chỉ có hai sự kiện là
+ Application_OnStart
+ Application_OnEnd
Đây là hai sự kiện được xử lý trong file cấu hình Global.asa đã được đề cập ở Bài 3
5.7.4.5. Vấn đề lưu trữ dữ liệu bằng đối tượng Application
Về bản chất, đối tượng Application cũng là một biến nằm trong bộ nhớ của máy chủ, ta không nên lưu trữ dữ liệu lâu dài trong đối tượng Application. Dữ liệu trên biến Application sẽ bị mất sau khi sự kiện Application_OnEnd xảy ra.
Nếu ta muốn lưu trữ lại những dữ liệu nào đó của Application thì ta cần viết các mã lệnh xử lý lưu trữ (đưa các giá trị biến này vào trong những dữ liệu chắc chắn nằm trên bộ nhớ ngoài như file, cơ sở dữ liệu...) trong thủ tục đáp ứng sự kiện Application_OnEnd. Đến khi ứng dụng được khởi động lại, ta cần đọc lại các giá trị đã lưu vào bộ nhớ trong thủ tục đáp ứng sự kiện Application.OnStart
5.7.5. ĐỐI TƯỢNG SESSION
Đối tượng Session được sử dụng để lưu trữ thông tin về một phiên làm việc của người sử dụng hay những thay đổi về phiên làm việc đó. Những biến nằm trong đối tượng Session giữ toàn bộ thông tin về người sử dụng và nó có thể sử dụng ở trên một máy trạm và có hiệu lực trên tất cả các trang trong một web.
Máy phục vụ web tìm ra người sử dụng bằng một giá trị SessionID duy nhất, biến Session này được gán cho người sử dụng kể từ khi người đó bắt đầu phiên làm việc của mình trên web browser. SessionID được lưu trên máy khách bằng cách viết một Cookie chứa SessionID trên máy người sử dụng. Cookie này sẽ được gửi về phía server mỗi khi người sử dụng đưa ra yêu cầu, để nhận ra sự tồn tại của người sử dụng này máy chủ phải đi tìm SessionID trong bộ nhớ và so sánh nó với SessionID trong Cookie vừa nhận được.
5.7.5.1. Các tập hợp của đối tượng Session.
Tương tự đối tượng Application, đối tượng Session có hai tập hợp đó là Contents và StaticObjects. Phương pháp sử dụng và truy cập tương tự như đối với Application tuy nhiên với đối tượng Session ta có thể thêm, bớt, thay đổi các giá trị của Session từ bất kì vị trí nào và các Session với từng người sử dụng là khác nhau.
5.7.5.2. Các thuộc tính
a. SessionID
SessionID trả lại số định danh của Session. Số này là duy nhất cho mỗi Session. Ta có thể xem qua ví dụ sau:
Kết quả
Nếu ta mở một cửa sổ trình duyệt mới rồi mở trang này ta sẽ nhận được một SessionID mới.
b. CodePage
Thiết đặt trang mã để hiển thị các nội dung động trong script hiện thời.
c. TimeOut
Thiết đặt thời gian hết hạn của một Session (đơn vị thời gian được tính là phút) mặc định là 20 phút.
Cú pháp: Session.TimeOut = .
5.7.5.4. Các phương thức
Phương thức trực tiếp trong đối tượng Session là phương thức Abandon.
Chức năng: hủy bỏ toàn bộ các đối tượng trong đối tượng Session giải phóng bộ nhớ cho web server. Chỉ có phiên làm việc nào thực hiện Abandon thì dữ liệu về phiên làm việc ấy mới bị giải phóng, các phiên làm việc khác giữ nguyên.
5.7.5.5. Các sự kiện
Đối tượng Session có hai sự kiện đó là
+ Session_OnStart
+ Session_OnEnd
Đây là hai sự kiện được xử lý trong file cấu hình Global.asa đã được đề cập ở Bài 3
5.7.5.6. Ví dụ
Trong ví dụ ở mục 2 bài 4 về Login.Asp sẽ xảy ra trường hợp người dùng biết được địa chỉ của trang default.asp và gõ thẳng địa chỉ trang này vào cửa sổ trình duyệt khi đó form login sẽ bị bỏ qua. Ta sẽ kiểm soát vấn đề này bằng biến Session như sau
File LOGIN.ASP
Phần đầu File DEFAULT.ASP
5.7.6. ĐỐI TƯỢNG SERVER
Đối tượng Server cung cấp một vài chức năng hỗn hợp mà chúng ta có thể sử dụng trong các ứng dụng ASP. Mặc dù hầu hết các chức năng của đối tượng này đều khó hiểu và ít khi được sử dụng nhưng có một phương thức CreateObject và thuộc tính ScriptTimeOut của đối tượng Server là vô giá. Chúng ta sẽ sử dụng các phương thức và thuộc tính này trong script của mình.
Đối tượng Server như tên của nó ngụ ý như đại diện cho chính máy phục vụ web và nhiều chức năng mà nó cung cấp hoàn toàn là chức năng của bản thân máy phục vụ web sử dụng khi xử lý các yêu cầu từ máy khách và trả lời từ máy phục vụ.
5.7.6.1. Thuộc tính ScriptTimeOut
Chức năng: Khoảng thời gian tối đa cho phép một script chạy trên Server.
Cú pháp: Server.ScriptTimeOut =
Khoảng thời gian được tính bằng giây, giá trị mặc định là 90 và đây cũng chính là khoảng thời gian tối thiểu.
Ví dụ:
Server.ScriptTimeOut = 120
5.7.6.2. Các phương thức
a. Phương thức CreateObject
Chức năng: Tạo ra một đối tượng hoạt động trên Server.
Cú pháp: Server.CreateObject(ProgID)
Trong đó ProgID là định danh của mỗi đối tượng
Chú ý: Khi gán một biến cho một đối tượng ta cần phải dùng từ khóa Set
Ví dụ:
b. Phương thức HTMLEncode
Chức năng: Mã hóa kí tự. Do trong ASP có một vài kí tự có ý nghĩa đặc biệy như , ', ", &,... do đó trong HTML cũng như ASP muốn sử dụng các kí tự này phải mã hóa chúng. Ngoài ra, một số ngôn ngữ ngoài sử dụng các kí tự cơ bản còn sử dụng thêm một số bộ kí tự mở rộng như tiếng Việt, Pháp,... Các kí tự này phải được mã hóa trong các trang HTML, ASP thì các chương trình mới có thể hiển thị đúng đắn. Việc mã hóa này được thực hiện bởi HTMLEncode do Server cung cấp.
Ví dụ:
HTMLENCO.ASP
Kết quả:
Đoạn mã HTML được tạo ra khi xem nguồn trên trình duyệt:
c. Phương thức MapPath
Chức năng: Chuyển đường dẫn logic thành đường dẫn vật lý trên ổ đĩa server. Chức năng này thường được dùng trong các thao tác truy nhập trực tiếp file.
Cú pháp: Server.MapPath()
Ví dụ: nếu ta có file MAPPATH.ASP nằm trên thư mục gốc của web server và đường dẫn đến thư mục gốc của web server là E:\Inetpub\wwwroot\ thì khi đó Server.MapPath("MapPath.asp") sẽ là E:\Inetpub\wwwroot\MapPath.asp. Điều đó thể hiện cụ thể qua chương trình dưới đây:
Mã lệnh MAPPATH.ASP
Kết quả
d. Phương thức URLEncode:
Chức năng: Mã hóa các chuỗi URL (Tương tự như HTMLEncode nhưng ở đây là mã hóa các chuỗi URL).
Cú pháp. Server.URLEncode(url)
Ví dụ: URLENCO.ASP
Kết quả
5.8. COOKIES
5.8.1. Khái niệm COOKIES
Cookies là những mẩu thông tin nhỏ được ghi trên các máy trạm. Khả năng tạo Cookies phụ thuộc vào tính năng của trình duyệt. Cookies được dùng để xác định user.
Nếu sử dụng IE chúng ta có thể xem thấy các files Cookies được ghi trong thư mục tạm thời của IE, mặc định là C:\WINDOWS\Temporary Internet Files
5.8.2. Thiết lập COOKIES
5.8.2.1. Đặt giá trị cho Cookies
Để đặt giá trị cho Cookies ta sử dụng tạp hợp Cookies của đối tượng Response. Cú pháp như sau:
Response.Cookies("") =
Nếu tên Cookie chưa tồn tại thì một tên mới sẽ được tạo ra và lấy giá trị ngược lại sẽ đổi giá trị của Cookie thành giá trị mới.
Trong các phiên bản web Server cũ, việc viết các Cookies phải được đặt trước bất cứ một lệnh xuất kết quả ra client nào, trái điều này script sẽ bị lỗi.
Ví dụ:
5.8.2.1. Đặt thời hạn cho cookies
Theo mặc định, các Cookies sẽ hết hạn và tự động xóa khỏi máy trạm khi người dùng đóng trình duyệt. Nhưng chúng ta có thể chỉ ra ngày tháng hết hạn cho mỗi cookies
Để đặt giờ hết hạn cho Cookies ta sử dụng:
Response.Cookies("").Expires =
Ví dụ:
5.8.3. Lấy giá trị của COOKIES
Để lấy giá trị của Cookies ta sử dụng tập hợp Cookies của đối tượng Request. Cú pháp như sau:
Request.Cookies("")
Ví dụ:
5.8.4. Thư mục COOKIES
Là một nhóm các Cookies có cùng tên nhưng được phân biệt nhau bởi khóa. Sử dụng khóa cùng Cookies tương tự như sử dụng mảng hai chiều Array[n, m] nhưng n=1 và m³1
* Cú pháp:
- Thiết lập: Response.Cookies("")() =
- Đọc: Request.Cookies("")()
* Ví dụ thiết lập Cookies
5.8.5. Kiểm tra xem COOKIES có dùng khóa không
Ta có thể kiểm tra xem một Cookie có sử dụng khóa không bằng hàm HasKeys của đối tượng Cookies với cú pháp như sau
Request.Cookies("").HasKeys
Phương thức này trả ra giá trị true nếu Cookies có dùng khóa và false trong trường hợp ngược lại.
5.9 Giới thiệu ADO và các kết nối cơ sở dữ liệu
5.9.1 Giới thiệu
ADO là kỹ thuật mới do Microsoft phát triển để làm việc với cơ sở dữ liệu (CSDL), được dùng để cung cấp các khả năng kết nối và xử lý trên CSDL.
Việc xử dụng ADO để truy xuất và xử lý CSDL trong trang ASP có thể chia làm các bước chính sau:
Kết nối với CSDL thông qua OLEDB hoặc ODBC
Xây dựng truy vấn dữ liệu và yêu cầu thực hiện câu truy vấn để thực hiện thao tác xử lý trên CSDL
Xử lý các kết quả trả về từ câu truy vấn
Ngắt kết nối với CSDL, giải phóng các tài nguyên của hệ thống đã dùng
5.9.2 Kế nối với cơ sở dữ liệu
5.9.2.1 Tạo kết nối thông qua OLEDB và ODBC
Connection String là một chuỗi kí tự được dùng để lưu trữ thông tin về dữ liệu như sau:
Thông tin về hệ quản trị CSDL
Thông tin về vị trí đặt CSDL
Mô hình kết nối CSDL: ADO cho phép thông qua OLEDB hoặc ODBC
Bảng liệt kê kết nối OLEDB và ODBC
Data source
OLEDB
Microsoft Access
Provider=Microsoft.Jet.OLEDB4.0;Data source = path đến .mdb
Microsoft SQL
Provider=SQLOLEDB.1;Data source = path đến CSDL trên máy chủ
Data source
ODBC
Microsoft Access
Driver={Microsoft Access Driver (*.mdb)};DBQ = đường dẫn đến tệp .mdb
Microsoft SQL
Driver={SQL Server.1 };Server= đường dẫn đến CSDL trên server
5.9.2.2 Tạo kết nối thông qua DNS
Có thể xây dựng connection string bằng cách tạo Data source Name (DNS) trong ODBC. Một DNS chứa các thông tin sau:
Tên của DNS
Tệp tin CSDL mà nó trỏ tới
Con trỏ chỉ đến các driver kết nốivới tệp tin CSDL
UserID và password để truy xuất data store
Các thông tin cần thiết khác cho kết nối
5.9.3 Các đối tượng của ADO
ADO có các đối tượng Connection, Conmmand, Recordset, Record, Stream và tập hợp Errors Fields, Properties, Parameters.
Đối tượng Connection: cho phép kết nối với CSDL. Nó chứa 3 thông tin
Cơ sở dữ liệu
Giao thức (driver/provider) để trao đổi thông tin
Username và password
Đối tượng Command: thực hiện các cậu lệnh SQL
Đối tượng Recordset: Chứa tập hợp các dữ liệu được rút gọn từ CSDL. Cho phép thay đổi dữ liệu như thêm, xóa, sửa dữ liệu hay di chuyển bản ghi.
Đối tượng Record: lưu trữ một hàng (bản ghi) trong Recordset, một thư mục hay tập tin trong File system
Đối tượng Stream: quản lý dữ liệu dạng nhĩ phân, nó được dùng quản lý dữ liệu BLOB (Binary Large Object) như hình ảnh hay mảng dữ liệu lớn
5.9.3.1 Đối tượng Connection
5.9.3.1.1 Kết nối CSDL qua đối tượng Connection
Để thiết lập kết nối CSDL, càn thực hiện bược sau:
Tạo một thực thể và đối tượng Connection từ phía server bằng câu lệnh : Server.CreateObject(“ADODB.Connection”)
Sử dụng phương thức Open để mở kết nối CSDL. Tham số của phương thức này lấy từ chuỗi Connection String, chuỗi này tương ứng với CSDL.
Khi cần kết nối cố định cho tất cả các trang ta có thể thiết lập tầm vực cho đối tượng Connection bằng cách viết các thủ tục sau trong tệp tin global.asa
Ở mức Application:
Ở mức Session:
5.9.3.1.2 Thao tác dữ liệu thông qua đối tượng Connection
Đối tượng Connection cung cấp phương thức Execute để thực hiện câu lệnh truy vấn
Cú pháp: objConn.Excute CommandText, RecordAffected, Options
CommandText: câu lệnh SQL, tên bảng hay Stored Procedure
Options: quy định loại CommandText
Hằng
Giá trị
Loại của CommnadText
adCmdUnknown
0
Mặc định, không xác định loại CommnadText
adCmdText
1
CommandText là câu lệnh SQL
adCmdTable
2
CommandText là tên bảng
adCmdStore
4
CommandText là stored procedure hay câu truy vấn
5.9.3.2 Đối tượng Command
Để thao tác và thay đổi cơ sở dữ liệu bằng Command, thực hiệnc các bước sau:
Khai báo và khởi tạo thực thể (instance) của đối tượng Command
Khởi tạo các thuộc tính đối tượng
ActiveConnection
Chứa đối tượng Connection đã được khai báo
CommandText
Chứa câu lệnh SQL hay tên bảng
CommandType
Chứa các thuộc tính qui định cho CommandText
CommandTimeout
THời gian thực hiện câu lệnh, nếu việc thực hiện vượt thời gian đã định, nó sẽ thông báo lỗi
Prepard
True/False: True cho phép biên dịch trước khi thực hiện câu lệnh, falsse ngược lại
Execute
Thực thi câu lệnh
Giá trị của thuộc tính CommandType
Thuộc tính
Mô tả
adCmdType
Câu lệnh SQL
adCMDTable
Tên bảng
adCmdStoreProc
Stored Procuedure hay câu truy vấn
adCmdUnknown
Giá trị mặc định
5.9.3.3 Xử lý dữ liệu thông qua đối tượng Recordset
Các phương thức của đối tượng Recordset
Phương thức
Diễn giải
Addnew
Tạo mới Record
Cancel
Hủy thao tác đang thực thi
Close
Đóng Recordset và đối tượng liên quan
Delete
Xóa record hay tập record hiện thời
Find
Tìm một record thỏa mãn điều kiện
MoveFirset
Đưa vị trị của record hiện hành về record đầu tiên
MoveLast
Đưa vị trị của record hiện hành về record cuối cùng
MoveNext
Đưa vị trị của record hiện hành về record tiếp theo
MovePrivious
Đưa vị trị của record hiện hành về record trước đó
Open
Mở một recordset
Requery
Cập nhật lại dữ liệu bằng cách thực hiện lại cậu lệnh truy vấn ban đầu
Resync
Làm tuơi lại dữ liệut rong đối tượng Recorset hiện thời
Save
Lưu Recordset vào tệp
Seek
Tìm chỉ mục Recordset
Update
Lưu thay đổi
GetRows
Lấy nhiều record đưa vào một mảng
GetString
Trả về recordset dưới dạng chuỗi
a. Phương thức Open
Cú pháp: objRs.Open Source, Connection, CursorType, Locktype, Options
b. Phương thức Addnew: Cho phép tạo một bản ghi mới, gán dữ liệu mới cho các field của các bản ghi và nó chỉ được cập nhật vào CSDL khi ta gọi phương thức Update hay Updatebatch
c. Phương thức Update: Phương thức này dùng để cập nhật bản ghi hiện thời trong CSDL
d. Phương thức Delete: phương thức này cho phép xóa bản ghi trong Recordset
Cú pháp: objRs.Delete
e. Phương thức Close: Ngắt kết nối với CSDL
5.9.3.3.1 Lưu trữ dữ liệu trả về
ADO sử dụng đối tượng Recordset để lưu trữ kết quả trả về từ câu truy vấn dữ liệu SELEcT. Vì kết quả trả về của một câu truy vấn SELECT có nhiều bản ghi, cho nên có thể xem Recordset như mảng các bản ghi
Có 2 cách lấy dữ liệu từ câu truy vấn đặt vào biến Recordset
Thực hiện phương thức Exexute của đối tượng Connection như câu lệnh truy vấn và trả về kết quả cho Recordset. Ví dụ: Set rs = Conn.Execute(strSQL)
Tạo một thực thể cho đối tượng Recordset và sử dụng phương thức Open, kết hợp với đối tượng Connection đã tạo.
5.9.3.3.2 Hiển thị dữ liệu trả về
Khi muốn lấy dữ liệu của một trường trong bản ghi hiện hành, lấy chuỗi tên của trường đó như là đối số cho đối tượng Recordset hay đối số của thuộc tính Fields của đối tượng Recordset. Ví dụ objRS(“HOTEN”) hay objRS.Fields(“HOTEN”).
Khi muốn dịch chuyển qua lại đến các bản ghi được lưu trong đối tượng Recordset, sử dụng phương thức MoveNext, MovePrevious, MoveFirst, MoveLast và phải đi kèm với việc kiểm tra bản ghi hiện thời đang ở vị trí đầu hay cuối bản ghi. Để làm điều đó, dùng thuộc tính BOF hoặc EOF để kiểm tra.
5.9.3.4 Đối tượng Record
Đối tượng này lưu trữ bản ghi trong Recordset, một thực mục hay tệp tin trong File System.
Để sử dụng đối tượng này cần phải khai báo thực thể cho đối tượng Recordset
Dim objRec
Set objRec = Server.CreateObject (“ADODB.Record”)
Đối tượng Recordset có các phương thức sau:
Phương thức
Diễn giải
Cancel
Hủy thực hiện trên Record
Close
Đóng đối tượng Record
CopyRecord
Copy tệp hay thư mục
DeleteRecord
Xóa một tệp hoặc thư mục
GetChildren
Trả về một đối tượng Recordset, mỗi dòng của Recordset lưu trong tệp hoặc thư mục
MoveRecord
Di chuyển một tệp hay một thư mục
Open
Mở một đối tượng Record tồn tại, tạo mới một tệp hoặc thư mục
a. Phương thức Open
Sau khi tạo thực thể của Record, có thể dùng phương thức này để open, tạo mới một tệp hay tạo mới một thư mục:
Cú pháp:
objRec.Open Source,ActiveConnection,[Model],[CreateOption],[Option],[user],[Passwd])
b. Phương thức CopyRecord; dùng để chép một tệp hay một thư mục đến nơi khác.
Cú pháp: objRec.CopyRecord (Source, Destionation, Username, Password,opt,async)
c.Phương thức DeleteRecord xóa một tệp hoặc thư mục chỉ định
Cú pháp: objRec.DeleteRecord(Source,Async)
5.9.3.5 Đối tượng Stream
Dùng để lưu trữ luồng dữ liệu dạng text hoặc nhị phân. Trước khi sử dụng cần phải khai báo
Set objStream = Server.CreateObject(“ADODB.Stream”)
Các phưong thức Stream:
Close
Đóng đối tượng Stream
Copyto
Chép một số kí tự hoặc byte từ đối tượng Stream này sáng đối tượng Stream khác
Flush
Gửi nội dung của đối tượng Stream
LoadFromFile
Lấy nội dung của một đối tượng vào đối tượng Stream
Open
Mở một đối tượng stream từ URL hay đối tượng Record
Read
Đọc số lượng byte trong đối tượng Stream chứa dữ liệu nhị phân
ReadText
Đọc số kí tự trong đối tượng Stream chứa nội dung là text
SaveToFile
Lưu nội dụng đối tượng Stream vào tệp
SetEOS
Thiết lập thuộc tính của EOS đối với vị strí hiện thời
SkipLine
Bỏ qua một dòng khi đọc một Text Stream
Write
Ghi một số lượng byte của dữ liệu nhị phần và đối tượng Stream
WriteText
Ghi dữ liệu dạng Text vào đối tượng Stream
Các file đính kèm theo tài liệu này:
- Bai giang Internet-intranet.doc