Thiết kế và lập trình web với ASP - Chương 3: Giới thiệu ngôn ngữ script vbscript và javascript

pdf 168 trang vanle 3130
Bạn đang xem 20 trang mẫu của tài liệu "Thiết kế và lập trình web với ASP - Chương 3: Giới thiệu ngôn ngữ script vbscript và javascript", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfthiet_ke_va_lap_trinh_web_voi_asp_chuong_3_gioi_thieu_ngon_n.pdf

Nội dung text: Thiết kế và lập trình web với ASP - Chương 3: Giới thiệu ngôn ngữ script vbscript và javascript

  1. Chương 3: GIỚI THIỆU NGÔN NGỮ SCRIPT VBScript VÀ JavaScript 1. GIỚI THIỆU NGÔN NGỮ VBScript VÀ JavaScript VBScript và JavaScript là ngôn ngữ lập ra để chạy được trên trình duyệt, các đoạn chương trình viết bằng ngôn ngữ này được nhúng vào các trang HTML. Các đoạn chương trình này có khả năng: Được thực thi khi một sự kiện nào đó trên trang Web xảy ra như: mouseclicked, mouseover, Xử lý các thành phần trên trang Web như: thay đổi màu chữ, font chữ, thay đổi ảnh, Cú pháp của VBScript gần giống với cú pháp ngôn ngữ lập trình VisualBasic và được Microsoft pháp triển, trong khi cú pháp của JAVAScript gần giống với cú pháp của ngôn ngữ lập trình C và được Netscape phát triển. VBScript không phân biệt chữ hoa và chữ thường trong khi JAVAScript thì lại phân biệt chữ hoa và chữ thường. JAVAScript được hỗ trợ trên hầu hết các trình duyệt, còn VBScript chỉ được hỗ trợ tốt nhất ở trình duyệt Internet Explorer. Cũng giống như các ngôn ngữ lập trình khác các kiểu dữ liệu thông dụng được dùng VBScript và JAVAScript là: kiểu số, kiểu chuỗi, kiểu luận lý, Tuy nhiên cách định nghĩa các kiểu dữ liệu giữa VBScript và JAVAScript có sự khác nhau. Cách khai báo các hàm cũng như cách sử dụng các hàm thư viện có sẵn cũng khác nhau. 52
  2. 2. NGÔN NGỮ VBScript 2.1. Chú thích một dòng lệnh Chú thích trong VBScript tương tự như Visual Basic bắt đầu bằng ký tự nháy đơn (’). Dấu chú thích chỉ có tác dụng trên một dòng. Dấu chú thích làm cho các dòng lệnh rõ ràng và dễ hiểu đối với người thiết kế chương trình. Khi thực thi, trình biên dịch bỏ qua dòng ghi chú này. 2.2. Cách khai báo biến, hằng, mảng 2.2.1. Khai báo biến Dùng từ khóa Dim để khai báo biến, biến trong ngôn ngữ VBScript không cần chỉ định kiểu như trong ngôn ngữ lập trình cấu trúc. Các biến không cấu trúc được xem là biến vô hướng (variant) có thể chứa và tự chuyển đổi hầu hết các kiểu dữ liệu. Cú pháp: Dim tên_biến1, tên_biến2, tên_biến3, Các biến được cách nhau bởi dấu phẩy “,”. Tuy nhiên trong VBScript không nhất thiết phải khai báo biến trước khi sử dụng. Để yêu cầu các biến phải được khai báo trước khi sử dụng ta dùng lệnh “Option Explicit” đặt trước lệnh đầu tiên của đoạn chương trình. Ví dụ : Dim a a = 3 Ghi chú: . Biến không phân biệt chữ HOA/thường . Chiều dài tên biến không vượt quá 255 ký tự . Tên biến phải bắt đầu bằng một ký tự chữ cái và biến không được phép chứa dấu chấm “.”. 53
  3. 2.2.2. Khai báo hằng Hằng được định nghĩa bằng từ khóa Const. Chỉ có thể sử dụng giá trị của hằng chứ không thể thay đổi nội dung hằng. Ví dụ: Const ten = “Nguyen Van Tuan” 2.2.3. Khai báo mảng  Mảng một chiều Dim Tên_mảng(kích thước cuả mảng). Số phần tử tối đa của mảng trên = Kích thước của mảng + 1. Chỉ số của phần tử đầu tiên của mảng bằng 0, để truy xuất đến phần tử có chỉ số “i” ta dùng Tên_mảng(i);. Ví dụ: Dim A(20); thì mảng A có thể chứa tối đa 21 phần tử  Mảng hai chiều Dim Tên_mảng(dòng, cột) Chỉ số của phần tử ở dòng đầu tiên và cột đầu tiên là (0,0). Để truy xuất phần đến phần tử có chỉ số dòng i, chỉ số cột j ta dùng B(i,j). Ví dụ: Dim B(5,10); mảng B có thể chứa 6 dòng và 11 cột. Trong VBSCript ta muốn khai báo một mảng động thì khi khai báo mảng ta không định rõ kích thước cho mảng, tức kích thước của mảng có thể thay đổi trong quá trình thao tác, dùng hàm ReDim để thay đổi kích thước của mảng động. Trong VBScript có thể khai báo một mảng có 60 chiều. 2.3. Các kiểu dữ liệu Trong VBScript chỉ có một kiểu dữ liệu duy nhất là Variant. Đây là kiểu dữ liệu có thể chứa các loại dữ liệu từ kiểu chuỗi, kiểu số cho đến các loại dữ liệu có cấu trúc như kiểu bản ghi (record). Kiểu dữ liệu này cũng là kiểu dữ liệu trả về của các hàm và các thủ tục được viết bằng ngôn ngữ VBScript. 54
  4. Tùy theo ngữ cảnh sử dụng mà một biến Variant mang giá trị là kiểu số, kiểu chuỗi (hay bất kỳ kiểu dữ liệu nào khác). Ví dụ: Trong biểu thức a = b+1997, thì biến a và biến b mang kiểu dữ liệu là kiểu số. Trong biểu thức a = b + “1997” thì biến a và biến b có kiểu dữ liệu là kiểu chuỗi. Các kiểu dữ liệu mà một biến Variant có thể lưu trữ. Các kiểu dữ liệu Ý nghĩa Boolean Kiểu luận lý True hoặc False Byte Số nguyên có giá trị từ 0 đến 255 Interger Số nguyên có giá trị từ -32768 đến 32767 Currency Từ -922,337,203,685,477.5808 đến 922,337,203,685,477.5807 Long Số nguyên từ -2,147,483,648 đến 2,147,483,647 Single Số thực, có giá trị từ 3.402823E38 đến 1.401298E-45 cho các số âm, từ 1.401298E-45 đến 3.402823E38 cho số dương Double Số thực, có giá trị từ 1.79769313486232E308 đến 4.94065645841247E-324 cho các số âm, 4.94065645841247E-324 đến 1.79769313486232E308 Date(time) Chứa giá trị ngày từ 01.01.100 đến 31.12.9999 String Chuỗi ký tự có thể chứa 2 tỉ ký tự Empty Dữ liệu chưa được khởi tạo Null Null Object Chứa đối tượng trên Form như hộp văn bản, nhãn, nút nhấn, Error Chứa mã lỗi 55
  5. Để chuyển đổi dữ liệu này sang kiểu dữ liệu khác ta dùng các hàm thư viện Cbyte (kiểu byte), Cdate (kiểu ngày), CInt (integer), CStr (string), CBool (bool), CDbl (double), CLng (long), CSng (Single) Muốn biết kiểu dữ liệu mà một biến có kiểu Variant đang lưu trữ, ta dùng hàm thư viện VarType. 2.4. Các toán tử cơ sở Toán tử gán (=) Tên_biến = Biểu thức. Với các biến có kiểu dữ liệu tổng quát, để gán giá trị cho biến chúng ta dùng ta phải dùng lệnh Set như sau: Set Tên_biến = Biểu thức. Toán tử tính toán +(cộng), - (trừ), * (nhân), \ (chia lấy phần nguyên), /(chia làm tròn), ^ (lũy thừa), mod (chia lấy phần dư) Toán tử nối chuỗi Dùng & : Ví dụ :S =“Dai”& “ ”& “hoc” Dùng + : Ví dụ: S = “Dai” + “ ” + “hoc” Toán tử so sánh = (bằng), > (lớn hơn), >= (lớn hơn hay bằng), (khác). Kết quả của một biểu thức so sánh sẽ thuộc về kiểu luận lý (True/False), khi cần nối các biểu thức so sánh với nhau ta dùng toán tử luận lý And, Or. 2.5. Các lệnh xử lý điều kiện rẽ nhánh Bạn có thể sử dụng các lệnh rẽ nhánh if then, if then else hoặc Select case để ra điều kiện rẽ nhánh dựa trên các biểu thức so sánh. 56
  6. 2.5.1. Cấu trúc If Then Dùng để xử lý lệnh khi biểu thức so sánh của If trả về giá trị True. Ví dụ: Dim myDate myDate = #2/12/2000# if myDate Case Khối lệnh 1 57
  7. Case Khối lệnh 2 Case Else Khối lệnh i End Select Ví dụ: Select case Dim Thang Thang =13 document.write("Thang ") document.write(Thang) SELECT CASE Thang CASE 2: document.write(" co 28 ngay") CASE 1,3,5,7,8,10,12 : document.write(" co 31 ngay") CASE 2: document.write(" co 28 ngay") CASE 4,6,9,11: document.write(" co 30 ngay") CASE ELSE document.write(" khong hop le") END SELECT Mệnh đề Case Else trong cú pháp Select case dùng trong trường hợp tất cả các phép so khớp của mệnh đề Case không xảy ra. 2.6. Cấu trúc lặp Tương tự các ngôn ngữ lập trình khác, VBScript cung cấp các lệnh lặp dựa trên điều kiện. Dùng cấu trúc Exit for, Exit do, Exit while để thoát khỏi cấp trúc lặp tương ứng. 58
  8. 2.6.1. Cấu trúc Do Loop Cấu trúc Do Loop lặp trong khi điều kiện kiểm tra của Loop còn đúng. Có bốn cấu trúc lặp theo cú pháp sau: Do While Khối lệnh Loop Do Khối lệnh Loop While Do Until Khối lệnh Loop Do Khối lệnh Loop Until Ví dụ: Tính giá trị N! Dim N,i,S N=3 S = 1 i=1 DO WHILE (i Khối lệnh 59
  9. Wend Ví dụ: Tính tổng S = 1 + 2 + 3 + 5 + + N Dim i,S,N N=5 i=1 S=0 WHILE (i To Khối lệnh Next For To Step Khối lệnh Next Ví dụ: Tính tổng S = 1 + 2 + 3 + 4 + + N Dim i,S,N N=5 S=0 FOR i=1 to N S=S+i Next 2.6.4. Cấu trúc For Each Next Cấu trúc For Each Next lặp với mỗi phần tử trong tập hợp 60
  10. Ví dụ: Dim d ’Tao doi tuong DictionarySet d = CreateObject(”Scripting.Dictionary”) ’Luu cac phan tu vao tap hop d.Add ”0”, ”Athens” d.Add ”1”, ”Belgrade” d.Add ”2”, ”Cairo” ’Duyet va in cac phan tu trong tap hop For Each I in d document.Write(D.Item(I)) Next 2.7. Khai báo hàm và thủ tục 2.7.1. Khai báo hàm Function Tên_hàm (các tham số) Khối lệnh End Function Ví dụ: Xây dựng hàm tính diện tích hình tròn khi biết bán kính Function DienTich(R) Dim S S = 3.14*R*R DienTich=S document.write(S) End Function 2.7.2. Khai báo thủ tục Sub Tên_thủ_tục(các tham số) Khối lệnh End Sub 61
  11. Ví dụ: Xây dựng thủ tục gọi sử dụng hàm DienTich đã viết trên Sub SuDung() DienTich(5) End Sub 3. NGÔN NGỮ JAVASCRIPT 3.1. Chú thích một hay nhiều dòng lệnh Dòng lệnh được kết thúc bằng dấu chấm phẩy “;” ở cuối dòng. Tập hợp các dòng lệnh nằm trong hai dấu ngoặc đơn {} gọi là tập lệnh. Muốn chú thích một dòng lệnh ta dùng dấu “//” đặt trước dòng lệnh muốn chú thích. Muốn chú thích nhiều dòng lệnh thì ta đặt các dòng lệnh cần chú thích giữa hai dấu “/*” và “*/”. 3.2. Cách khái báo biến, mảng 3.2.1. Cách khai báo biến Dùng từ khoá var để khai báo biến. Biến trong JavaScript không cần định rõ kiểu dữ liệu của biến lúc khai báo. Tuy nhiên, khi gán giá trị cho biến, JavaScript phân biệt kiểu của các trị mà bạn gán. Trong JavaScript bắt buộc phải khai báo biến trước khi sử dụng. var tên_biến1 = trị1, tên_biến2 = trị2, ; Chú ý: + Biến có phân biệt chữ hoa/thường. + Biến phải bắt đầu bằng ký tự chữ cái. + Biến không cho phép có khoảng trắng, không cho phép có dấu gạch ngang. 62
  12. 3.2.2. Khai báo mảng  Mảng một chiều var A = new Array(10) Mảng A nói trên có 10 phần tử, và chỉ số phần tử đầu tiên của mảng bắt đầu 0, muốn truy xuất đến phần tử có chỉ số i, ta dùng A[i].  Mảng hai chiều Khai báo A là mảng hai chiều có 10 dòng, 20 cột. var A = new Array(10),i = 0; for (i = 0; i (lớn), >= , = = (bằng), != (khác). 63
  13. 3.3.2. Kiểu ký tự Các ký tự được nằm giữa hai nháy đơn. Ngoài ra còn có các ký tự đặc biệt sau đây: Ký tự Ý nghĩa \n Xuống dòng mới \t Ký tự Tab \r Về đầu dòng \b Ký tự khoảng trắng Ví dụ : var ch= ‘A’, c = ‘B’; Các phép toán trên ký tự +, += (cộng 2 ký tự) Phép toán so sánh : >, >=, , >=, ==, != 3.3.4. Kiểu luận lý Một biến có kiểu luận lý tồn tại một trong hai trạng thái: true, false. Ví dụ: var t = true, f = false; Các phép toán trên kiểu luận lý Phép so sánh : , >=, ==, != Phép logic : && (và), || (hoặc), ! (phủ định). 64
  14. 3.3.5. Kiểu ngày Mô tả thông tin về: Ngày, Tháng, Năm, giờ, phút, giây của hệ thống. Ví dụ: var now = new Date(); Các hàm lấy ngày giờ trong đối tượng Date như sau: Tên hàm Mô tả GetDate() Ngày: 1 31 GetDay() Ngày trong tuần: 0 (chủ nhật), 1(thứ 2) GetHours Giờ: 0 23 GetMinutes Phút: 0 59 GetMonth Tháng: 0 (tháng 1) 11(tháng 12) GetSeconds Giây: 0 59 GetTime Giờ theo mili giây GetYear Năm Ví dụ: Ví dụ sau lấy ngày hệ thống và hiển thị lên trình duyệt. Mã HTML Outputting Text 65
  15. Ngoài các kiểu dữ liệu thông dụng trên còn có các kiểu dữ liệu object, null. 3.4. Các lệnh xử lý điều kiện rẽ nhánh 3.4.1. Cấu trúc if Dùng để xử lý lệnh khi biểu thức của if trả về giá trị true if (biểu thức điều kiện) Khối lệnh; 3.4.2. Cấu trúc if else if (biểu thức điều kiện) Khối lệnh 1; else khối lệnh 2 Ví dụ: if(a%2==0) document.write(a, “là số chẵn”); else document.write(a, “là số lẻ”); 3.4.3. Cấu trúc switch case Cho phép thực hiện nhiều lựa chọn để ra quyết định thực thi. switch(biến) { case giá trị 1: Khối lệnh 1; break; case giá trị 2: Khối lệnh 2; break; 66
  16. default: Khối lệnh n; break; } 3.5. Cấu trúc lặp Dùng câu lệnh break để thoát khỏi cấp trúc lặp khi cần. 3.5.1. Cấu trúc for for(biểu thức khởi tạo; biếu thứcđiều kiện; biểu thứcthai đổi) Khối lệnh; Khối lệnh được thực hiện khi biểu thức điều kiện còn đúng. Ví dụ: for (i = 0; i<10; i++) s+=2*i; 3.5.2. Cấu trúc while while (biểu thức điều kiện) Khối lệnh; Khối lệnh được thực hiện khi biểu thức trong while còn đúng. Ví dụ: i=0; while(i<20) { s+=i; i++; } 3.5.3. Cấu trúc do while do Khối lệnh; while(biểu thức điều kiện); 67
  17. Khối lệnh được thực hiện trước sau đó kiểm tra biểu thức điều kiện nếu còn đúng thì quay lên thực hiện khối lệnh. Ví dụ: i=0; do { s+=i; i++; }while(i và , trong đó ghi rõ ngôn ngữ sử dụng để viết mã chương trình. Các 68
  18. đoạn Script được đặt giữa cặp tag hay đặt giữa cặp tag . Tuy nhiên, nếu đặt giữa tag thì các đoạn mã này đã được đọc và thông dịch trước các thành phần nằm trong tag . Dùng tag để báo cho trình duyệt không hiển thị các đoạn mã bên trong nếu nó không hiểu tag . Ví dụ: Trong ví dụ sau ta viết một hàm tính diện tích hình vuông (viết bằng VBScript), một thủ tục tính diện tích hình chữ nhật (viết bằng JavaScript). Mã HTML Tinh Dien Tich <! function DienTichTron(R) { var dt; dt=3.14*R*R; 69
  19. return dt; } var D; D=DienTichTron(5); document.write("Dien tich hinh tron =",D); > Kết quả hiển thị trên trình duyệt 4.2. Xuất/nhập dữ liệu trong VBScript và JavaScript 4.2.1. Xuất dữ liệu Đối tượng document là đối tượng đại diện cho trang web hiện hành. Còn đối tượng window thì đại diện cho cửa sổ mà trong đó trang web hiển thị. Để xuất dữ liệu ra trang web ta dùng hàm write và hàm writeln của đối tượng document theo cú pháp. document.write(“chuỗi cần hiển thị”). document.writeln(“chuỗi cần hiển thị”); Chúng ta có thể dùng các tag HTML để xuất dữ liệu trong các đoạn Script. Ví dụ: document.write(" Hello Script ") Để writeln (xuất dữ liệu và về đầu dòng mới) có tác dụng ta phải dùng kèm theo tag và đứng trước và sau đoạn Script. Ví dụ: 70
  20. Hello JavaScript ") document.write(" Hello VBScript ") > Để hiển thị các hộp thông báo ta dùng hàm confirm và hàm alert của đối tượng window. Theo cú pháp sau: window.alert(“chuỗi cần hiển thị”) window.confirm(“chuỗi cần hiển thị”) Đối với VBScript để hiển thị hộp thông báo ta dùng hàm MsgBox(“chuỗi cần thông báo”); 4.2.2. Nhập dữ liệu Dùng hàm prompt của đối tượng window để nhập giá trị cho biến theo cấu trúc sau: Biến = window.prompt(“chuỗi thông báo”, “trị mặc nhiên”) Biến = InputBox(“chuỗi thông báo”) 5. XỬ LÝ CÁC SỰ KIỆN KHI TƯƠNG TÁC VỚI CÁC THÀNH PHẦN TRÊN TRANG WEB Sự kiện được phát sinh khi ta kích hoạt (onClick, onMouseOver, onMouseOut ) các thành phần trên trang web như các nút điều khiểu button, hyperlink, ListBox Để xử lý các sự kiện này ta tạo hàm xử lý sự kiện và gán hàm xử lý sự kiện đó cho tên sự kiện. = 71
  21. Ví dụ 1:Tạo hai nút bấm (OK, Cancel), thủ tục xử lý sự kiện khi click nút OK được viết bằng VBSCript, hàm xử lý sự kiện khi nhấn nút Cancel được viết bằng ngôn ngữ JavaScript. Mã HTML Click Button Kết quả hiển thị trên trình duyệt 72
  22. Ví dụ 2: Kiểm tra tính hợp lệ của dữ liệu nhập từ Form. Nếu thiếu thì thông báo cho người dùng biết, ngược lại thông báo câu ”dữ liệu nhập đã đầy đủ”. Mã HTML KIEM TRA DU LIEU NHAP function KiemTraForm() { FormObj = document.dienthongtin; if(FormObj.Ten.value=="") { alert("Chua nhap Ten"); FormObj.Ten.forcus(); return false; } else if(FormObj.Tuoi.value=="") { alert("Chua nhap Tuoi"); FormObj.Tuoi.forcus(); return false; } else if(FormObj.NgaySinh.value=="") { alert("Chua nhap Ngay sinh"); FormObj.NgaySinh.forcus(); return false; } alert("Thong tin day du"); 73
  23. } Nhap ten Nhap tuoi Nhap ngay sinh nhat    Kết quả hiển thị trên trình duyệt 74
  24. Bài tập chương 3 Bài 1: Thiết kế form nhập liệu như hình sau, khi nhấn chọn nút chấp nhận thì phải kiểm tra tính đầy đủ và hợp lệ của dữ liệu. Nếu thông tin nào không có hoặc bị sai thì yêu cầu người dùng bổ xung. Nếu người dùng nhấn chọn nút không chấp nhận thì làm rỗng tất cả các thông tin trên form để chuẩn bị cho lần đăng ký kế tiếp. 75
  25. Bài 2: Tương tự như bài 1, chúng ta thiết kế form đặt hàng mua áo Thun qua mạng như sau: Khi khách hàng nhấn chọn nút chấp nhận thì phải kiểm tra tính đầy đủ và hợp lệ của dữ liệu. Nếu dữ liệu đúng thì thông báo câu “Bạn đã đặt hàng thành công”, nếu không hợp lệ thì yêu cầu người mua hàng điền thông tin lại cho hợp lệ. Trong trường hợp người đặt hàng nhấn chọn nút bỏ qua thì phải làm rỗng các thông tin trên Form để chuẩn bị cho lần đặt mua hàng kế tiếp. Bài 3: Chúng ta thiết kế trang Web đăng ký mail của Yahoo ( khi nhấn vào nút Submit this Form thì phải kiểm tra tính đầy đủ và hợp lệ của dữ liệu. Nếu không đúng hay thiếu thì yêu cầu người dùng nhập lại. 76
  26. Chương 4 : LẬP TRÌNH WEB ĐỘNG VỚI NGÔN NGỮ LẬP TRÌNH ASP 1. GIỚI THIỆUVỀ ASP ASP (Active Server Page) là ngôn ngữ lập trình ứng dụng được chạy bên phía Server.Một trang ASP có các đặc điểm sau: Một trang ASP được lưu với phần mở rộng “.asp”. Các ứng dụng ASP dễ viết, dễ sửa đổi. Cung cấp chế độ bảo mật tốt vì các mã code trong trang ASP người duyệt web không thể thấy được. Khả năng kết nối CSDL đơn giản. Ngôn ngữ Script được dùng thông dụng nhất trong trang ASP là VBScript. Được hỗ trợ bởi trình chủ Web Server IIS (Internet information server) và Personal Web Server (PWS là trình chủ web được dùng trên Win98). Tuy nhiên, IIS là thông dụng nhất. Ngoài ASP còn có một số ngôn ngữ lập trình web động như JSP, PHP Như vậy để thực thi một trang ASP ta cần cài trình chủ web Server IIS. Để cài IIS, sau khi đưa đĩa Win2K/WinXP vào ta chọn menu Star→ Settings→Control Panel→ Add/Remove Programs → Add/Remove Windows components → chọn Internet Information Services → Next. 77
  27. Hình 4.1: Giao diện màn hình cài IIS 2. NẠPMỘT ỨNG DỤNG WEB LÊN TRÌNH CHỦ IIS Sau khi cài trình web chủ IIS, để xem một trang ASP, trước tiên ta phải nạp ứng dụng chứa trang ASP lên trình chủ web IIS, các bước thực hiện như sau:  Bước 1:Mở trình chủ web IIS bằng cách vào menu Star -> Sittings -> Control panel -> Administrative Tools -> Internet Services Manager.  Bước 2: Tạo thư mục ảo (Virtual Directory) cho ứng dụng. Thông thường mỗi ứng dụng web được đặt trong một thư mục và được tham chiếu đến thông qua địa chỉ URL. Cách tạo thư mục ảo: Trên màn hình Internet Information Services ta vào Default Web Site -> New -> Virtual Directory. 78
  28. Hình 4.2 : Tạo thư mục ảo cho ứng dụng Trong ô nhập liệu Alias của hộp thoại Virtual Directory Creation Wizard ta nhập tên bí danh cho thư mục ảo, bấm next. Chọn đường dẫn thư mục vật lý chứa ứng dụng ta quan tâm. Thông thường thư mục chứa ứng dụng được đặt trong C:\Inetpub\wwwroot, chọn thư mục vật lý chứa ứng dụng xong ta bấm Next để đến màn hình cấu hình bảo vệ và đặt quyền cho thư mục ảo. 79
  29. Hình 4.3: Chọn đường dẫn vật lý cho thư mục ảo Đặt quyền cho thư mục ảo như trong hình 4.4. Có tất cả năm quyền gồm Read (cho phép đọc nội dung trang), Runscript (cho phép thực thi trang kịch bản), Execute (thực thi các ứng dụng CGI), Write (cho phép ghi vào thư mục ảo), Browse (cho phép xem toàn bộ nội dung thư mục thay cho trang web mặc định). Hai quyền Read và Run script là cần thiết để trang ASP có thể truy xuất được. Hình 4.4: Màn hình cấp quyền truy cập thư mục ảo 80
  30. Chúng ta đặt lại các quyền bảo vệ thư mục ảo và chế độ bảo mật bằng cách nhấn chuột phải lên thư mục ảo mới tạo, rồi vào Properties. Hình 4.5: Màn hình Properties của thư mục ảo  Bước 3: Thiết lập trang mặc định cho thư mục ảo. Khi máy client gõ một địa chỉ web URL tham chiếu đến một ứng dụng mà không đưa ra tên trang cụ thể, lúc này trình chủ sẽ sử dụng trang mặc định. Ta có thể thiết lập một danh sách các trang mặc định, khi ấy IIS sẽ tìm theo thứ tự ưu tiên từ trên xuống dưới. Để lập trang web mặc định cho thư mục ảo. Từ màn hình 4.5, ta vào mục Document.Bạn có thể xóa hoặc thêm 81
  31. một trang mặc định vào danh sách bằng cách chọn Add hay Remove. Hình 4.6: Màn hình thiết lập trang Web mặc định cho ứng dụng  Bước 4: Để xem trang web ta mở trình duyệt web Internet Explorer → Gõ địa chỉ URL của trang web vào mục Address. 82
  32. Nếu chúng ta đã tạo trang mặc định cho thư mục ảo là “index.asp” thì ta chỉ cần gõ địa chỉ 3. CÁC KHÁI NIỆMCƠ BẢNVỀ ASP 3.1. Thành phần cơ bản của một trang ASP Một trang ASP thông thường có bốn phần: Dữ liệu văn bản Các tag HTML Các đoạn mã chạy phía client nằm trong đoạn tag Các đoạn mã ASP được chạy phía server nằm trong tag . Như vậy một trang ASP là một trang HTML được nhúng thêm phần xử lí viết bằng mã HTML. Ta có thể sử dụng nhiều ngôn ngữ script khác nhau để viết trang ASP, vì thế ta phải chỉ định script nào được sử dùng trong trang, bằng khai báo ở đầu trang. Ví dụ: Khai báo ở đầu trang để sử dụng ngôn ngữ VBScript. Ví dụ: Trang Asp sau là sự kết hợp giữa các đoạn Asp, HTML và JavaScript. Đoạn chương trình sau xuất ra màn hình câu thông báo “Good Morning” khi thời gian hệ thống ở thời điểm buổi sang, còn thời gian buổi chiều thi in ra câu “Hello” <% Dim dtmHour dtmHour=Hour(Now()) 83
  33. If dtmHour Good Morning ! Hello! 3.2. Nhập/Xuất dữ liệu Để xuất dữ liệu của đoạn chương trình chạy phía client (được đặt trong cặp tag ) dùng phương thức document.write.Tương tự, để xuất dữ liệu trong đoạn chương trình ASP (đoạn lệnh được đặt trong tag ) dùng phương thức Response.write. Ví dụ : Xuất chuỗi: Response.write “Learn ASP” Xuất hằng kiểu số : Response.write 5 Xuất giá trị của biến a: Response.write a Để nhập dữ liệu ta dùng phương thức Request. Cụ thể hai phương thức yêu cầu (Request), trả lời (Response) sẽ được đề cập cụ thể ở mục 4.1 và 4.2. 3.3. Hoạt động của ASP Khi một trang ASP được trình duyệt web yêu cầu, trước tiên web server sẽ duyệt tuần tự trang ASP này và chỉ thực hiện những câu lệnh kịch bản ASP, kết quả là một trang thuần 84
  34. HTML sẽ được đưa ra browser. Việc dưa ra kết quả cho browser lần lượt hay sau khi dịch xong tất cả các kịch bản là do người tạo lập trang web qui định. Người dùng sẽ không thấy được các lệnh kịch bản của ASP bởi vì nó đã được server thực thi xong rồi gởi kết quả về cho browser dưới dạng trang HTML. 4. CÁC ĐỐITƯỢNG CƠ BẢN TRONG ASP Đối tượng là khái niệm trừu tượng nói về một ”vật thể” (hay một structure) có khả năng lưu trữ dữ liệu và thao tác trên các dữ liệu để phục vụ cho một công việc nào đó. Trong đối tượng người ta gọi các dữ liệu là các thuộc tính còn các thao tác là các phương thức. Các đối tượng trong ASP cho phép người lập trình giao tiếp, tương tác với cả server lẫn client. Trong ASP có hai loại đối tượng đó là: Các đối tượng cơ bản: Application, Session, Server, Request, Response, ObjectContext. Các thành phần (component) xây dựng sẵn: Dictionary, FileSystemObject, AdRotator, Browser Capabilities, 4.1. Đối tượng Request Khi người dùng yêu cầu một trang hay đệ trình (submit) một biểu mẫu (form), đối tượng Request sẽ lưu trữ và cung cấp tất cả các thông tin từ browser (trình duyệt web) gửi đến server, đối tượng này được xem như là đối tượng nhận dữ liệu. Các tập hợp (collection), thuộc tính (properties) và phương thức (method) của đối tượng này được mô tả như sau. 4.1.1. Các tập hợp (Collection) của đối tượng Request Đối tượng Request cung cấp năm collection cho phép chúng ta truy xuất tất cả các loại thông tin về yêu cầu của 85
  35. browser đối với server. Các collection của đối tượng Request bao gồm:  Client Cirtificate Một tập các giá trị của tất cả các trường (field) hay các mục (entry) trong Client certificate mà browser chuyển đi để trình cho server khi truy xuất một trang hay tài nguyên. Các thành phần của tập đều là giá trị chỉ đọc (read-only).  Cookies Cookies là một file văn bản có kích thước nhỏ được lưu trữ trên máy client. Mỗi khi người dùng thăm một website, ta có thể bí mật gắn một tập tin chứa các thông tin mà mình muốn lên đĩa cứng của họ, chẳng hạn như thông tin về user, thông tin về số lần truy cập website, Tuy nhiên các Cookies không phải được truy cập ngẫu nhiên bởi các website mà chúng được truy cập bởi các domain tạo ra chúng. Các cookies trong đối tượng Request đều là thuộc tính chỉ đọc (read-only) do đó ta chỉ có thể xem các giá trị cookies mà không thể sửa đổi giá trị của chúng. Để lấy giá trị của cookies ta sử dụng cú pháp sau: Request.Cookies(name)[(key)|.attribute trong đó:  name: tên của cookie (kiểu chuỗi)  key: khóa của cookie cần lấy giá trị (kiểu chuỗi)  attribute: thông tin của cookie, là một trong các thông số sau: + Domain: (chỉ đọc – read only) cookie chỉ được gởi cho đối tượng Request của domain này. 86
  36. + Expires: (chỉ ghi - write only) chỉ định ngày mà Cookies hết hiệu lực (expires), nếu không chỉ định ngày thì cookie sẽ expires khi kết thúc phiên làm việc. + HasKeys: (chỉ đọc – read only) xác định khóa của cookie có tồn tại không. + Path: (chỉ ghi- write only) nếu thuộc tính này được xác lập thì chỉ cookie chỉ được gởi cho những Request của đường dẫn này, nếu không thì cookie chỉ được gởi cho những Request thuộc đường dẫn của ứng dụng. + Secure (chỉ ghi-write only) xác định cookie có bảo mật hay không. Một cookie có thể chứa đựng một tập hợp các giá trị. Ta nói cookie đó có nhiều khóa. Ví dụ: ") If Request.Cookies(x).HasKeys Then For each y in Request.Cookies(x) Response.write(x & ":" & y & "=" & Request.Cookies(x)(y)) Response.write(" ") Next Else Response.Write(x & "=" & Request.Cookies(x) & " ") End If Response.write " " Next 87
  37. %>  Form Các Form cho phép người dùng nhập vào dữ liệu thông qua các control HTML như edit, radio button, check box, Khi người dùng submit một biểu mẫu thì tất cả các giá trị của các control trong phân đoạn sẽ được gởi lên Web Server khi đặt giá trị của thuộc tính METHOD trong tag là POST. Các thành phần của đối tượng này đều là giá trị chỉ đọc (read only). Để truy xuất các giá trị của các control HTML mà người dùng submit bằng phương thức POST ta sử dụng cú pháp sau: Request.Form(controlname) trong đó controlname là tên của control mà ta cần lấy giá trị. Ví dụ: Chao ban:  QueryString Khi người dùng yêu cầu một trang hay đệ trình (submit) một biểu mẫu với phương thức GET thì tất cả các control HTML trong phân đoạn của biểu mẫu sẽ được Browser gắn vào URL theo từng cặp tên/giá trị. 88
  38. QueryString được dùng để lấy về các giá trị trong một biểu mẫu với phương thức là GET.Tất cả các thông tin được gởi từ biểu mẫu với phương thức GET sẽ được gắn vào URL trên thanh address của browser và do đó mọi người có thể thấy được các thông tin này, tuy nhiên lượng thông tin được gởi này có giới hạn. Các thành phần của tập đều là giá trị chỉ đọc (read- only). Để truy xuất các giá trị của các control HTML mà người dùng submit bằng phương thức GET ta sử dụng cú pháp sau: Request.QueryString (controlname) Ví dụ: Chào bạn: Response.Write (Request.QueryString(”Ho_Lot”)) Response.Write (” ” & Request.QueryString(”Ten”))  ServerVariables Khi cần lấy giá trị các biến môi trường của server ta dùng tập ServerVariables. Cú pháp: Request.ServerVariables (variable) với variable chỉ định giá trị gì ta cần lấy. Sau đây là một số giá trị tiêu biểu của variable Biến Mô tả ALL_HTTP Trả về tất cả các header mà client đã gởi, luôn luôn theo sau HTTP_ và viết hoa 89
  39. AL_RAW Trả về tất cả các header ở dạng thô APPL_MD_PATH Trả về đường dẫn cho ứng dụng dùng cho DLL ISAPI APPL_PHYSICAL_PATH Trả về đường dẫn vật lý tương ứng của đường dẫn AUTH_PASSWORD Trả về giá trị đã nhập vào trên hộp thoại xác nhận của client AUTH_TYPE Cách thức mà server dùng để kiểm tra xác nhận người dùng AUTH_USER Trả về tên của người dùng (username) CERT_COOKIE Trả về ID duy nhất của client CONTENT_LENGTH Trả về kích thước của dữ liệu mà client gởi CONTENT_TYPE Trả về kiểu dữ liệu GATEWAY_INTERFACE HTTP_ Trả về giá trị chứa trong header headername HTTP_USER_AGENT Trả về một chuỗi mô tả browser gởi yêu cầu LOCAL_ADDR Trả về địa chỉ của server mà browser gởi yêu cầu tới Ví dụ:Bạn có thể dùng vòng lặp để xem tất cả các biến của server như sau: ”) Next %> 90
  40. 4.1.2. Thuộc tính (Property) của đối tượng Request Đối tượng Request chỉ có một thuộc tính duy nhất đó là TotalBytes. Thuộc tính TotalBytes là thuộc tính chỉ đọc (read- only), nó trả về số byte dữ liệu mà người dùng chuyển lên server 4.1.3. Phương thức (Method) của đối tượng Request Đối tượng Request cũng chỉ có một phương thức đó là BinaryRead. Phương thức BinaryRead được dùng để lấy dữ liệu đã được client POST lên Server. Phương thức này trả về một mảng các giá trị. Cú pháp: Request.BinaryRead (count) trong đó count là một con số nguyên chỉ rõ số byte cần đọc. Phương thức này sẽ không nhận được dữ liệu nếu trước đó ta đã truy xuất đến tập Request.Form. Ngược lại nếu ta đã gọi phương thức này thì ta sẽ không nhận được dữ liệu của các control HTML khi truy xuất tập Request.Form. Ví dụ: Dùng phương thức BinaryRead để đọc dữ liệu mà client POST lên và đưa vào một mảng. 4.2. Đối tượng Response Khi client có yêu cầu một trang từ server thì server có nhiệm vụ thực thi các đoạn VBScript trong trang ASP để tạo ra 91
  41. tập tin HTML rồi sau đó gởi cho client. Đối tượng Response sẽ đảm nhiệm việc chuyển kết quả từ server về cho client. 4.2.1. Các tập hợp (Collection) của đối tượng Response Tập hợp của đối tượng Response chỉ có cookies. Đối tượng Response có thể xác lập giá trị của bất kỳ cookies nào mà ta muốn đặt trên hệ thống của client. Nếu cookies không tồn tại trên client thì nó sẽ được tạo ra. 4.2.2. Thuộc tính (Property) của đối tượng Response  Buffer: Dùng để xác định xem kết quả được tạo ra bởi trang ASP có được giữ lại trong vùng đệm hay không. Thuộc tính Buffer nhận một trong hai giá trị là true hoặc false. Nếu nhận giá True thì kết quả được tạo ra bởi trang ASP sẽ được server giữ trong vùng đệm cho đến khi tất cả các script của trang được xử lý xong, hay đến khi phương thức Flush hoặc phương thức End được gọi. Giá trị này cần được xác lập trước tag trong tập tin .asp. Còn nếu thuộc tính Buffer nhận giá trị False thì kết quả sẽ được gởi đi ngay khi nó được xử lý. Cú pháp: Response.Buffer [= true | false] Trong IIS phiên bản từ 4.0 trở về trước false là giá trị mặc định, còn từ phiên bản 5.0 trở về sau thì true là giá trị mặc định. Ví dụ 1:Kết quả sẽ không được gởi tới browser cho đến khi kết thúc vòng lặp. <% For i = 1 to 100 do 92
  42. Response.Write (i & ” ”) Next %> Ví dụ 2:Kết quả sẽ được gởi tới browser mỗi lần lặp. ”) Next %>  CacheControl Thuộc tính này dùng để xác định xem proxy server có thể cất giữ kết quả được tạo ra bởi ASP hay không. Mặc định thì proxy sẽ không cất giữ. CacheControl chỉ có thể nhận một trong hai giá trị đó là ”public hoặc ”private”. Nếu đặt thuộc tính này là “private” thì chỉ những vùng cache riêng mới có thể giữ còn proxy server sẽ không lưu trữ những trang này. Còn nếu đặt thuộc tính này là “public” thì proxy sẽ cất giữ những trang này. Ví dụ: hoặc 93
  43.  Charset Đây là thuộc tính kiểu chuỗi, thuộc tính này ghép tên của tập ký tự vào vùng context-type của đối tượng Response. Thuộc tính này chấp nhận bất cứ chuỗi ký tự nào bất chấp chuỗi đó đúng hay sai. Giá trị mặc định là ISO-LATIN-1 Cú pháp: Response.Charset (charsetname) Ví dụ:  ContentType Đây là thuộc tính kiểu chuỗi, thuộc tính này đặt kiểu hiển thị của nội dung HTTP cho đối tượng Response.Nếu một trang ASP không chỉ định thuộc tính ContentType thì content-type mặc định sẽ là: content-type: text/html Cú pháp: Response.ContentType [= contenttype] Sau đây là một vài giá trị contenttype thông dụng: Ví dụ: Đoạn chương trình sau đây sẽ mở một spreadsheet trên browser (nếu bạn đã cài đặt Excel vào máy) 94
  44. 1 2 3 4 5 6 7 8  Expires Thuộc tính Expires đặt thời gian bao lâu (tính theo phút) một trang sẽ được cất giữ ở browser trước khi nó hết hạn (expire). Nếu người dùng quay lại trang đó trước khi nó hết hạn thì trang đã cất giữ trước đó sẽ được hiển thị lên. Nếu ta muốn một trang không bao giờ hết hạn thì ta đặt thuộc tính Expire là -1. Cú pháp: Response.Expires [= number] Ví dụ:Nếu ta muốn cho một trang sẽ hết hạn sau 24 giờ (= 1400 phút) ta đặt như sau: 95
  45.  ExpiresAbsolute: Tương tự như thuộc tính Expires, thuộc tính ExpiresAbsolute đặt một ngày và giờ xác định mà một trang được cất giữ trên browser sẽ hết hạn. Nếu ta chỉ định thời gian mà không chỉ định ngày cụ thể thì trang sẽ hết hạn tại giờ chỉ định vào ngày mà script được thực thi. Còn nếu ta chỉ định ngày mà không chỉ định thời gian thì trang được browser cất giữ sẽ bị hết hạn vào lúc nửa đêm của ngày chỉ định. Cú pháp: Response.ExpiresAbsolute [= [date][time] ] Ví dụ: Đoạn mã sau đây chỉ định rằng trang sẽ hết hạn vào lúc 4h00 chiều ngày 11 tháng 10 năm 2003:  IsClientConnected: Thuộc tính này xác định xem client có còn nối kết (connect) với server hay không. Thuộc tính này mang một trong hai giá trị đó là true hoặc false. Mang giá trị true nếu client còn kết nối tới server và mang giá trị false trong trường hợp ngược lại. Cú pháp: Response.IsClientConnected Ví dụ: Đoạn code sau đây kiểm tra người dùng còn kết nối hay không? <% If Response.IsClientConnected = true then Response.Write (”Nguoi dung con connect!”) 96
  46. Else Response.Write (”Nguoi dung khong con connect!”) End If %>  Pics Thuộc tính này thêm một giá trị vào nhãn PICS ở phần header của đối tượng Response. Ví dụ: by " & chr(34) & "xyz@yahoo.com" & chr(34) & " for " & chr(34) & " " & chr(34) & " on " & chr(34) & "2002.10.05T02:15-0800" & chr(34) & " r (n 2 s 0 v 1 l 2))") %>  Status Thuộc tính này chỉ định giá trị của dòng trạng thái mà server trả về cho client và ta có thể dùng thuộc tính này để chỉnh sửa dòng trạng thái đó. Giá trị của dòng trạng thái bao gồm: ba con số đầu tiên là mã trạng thái và mô tả chi tiết của mã trạng thái đó (chẳng hạn như: 404 Not Found). Cú pháp: Response.Status = statusdescription với statusdescription là dòng mô tả trạng thái. Ví dụ: Đoạn code sau đây sẽ kiểm tra quyền của user dựa vào địa chỉ của họ 97
  47. 172.16.20.99”” Then Response.Status = ”401 Unauthorized” Response.Write (Response.Status) Response.End End If %> 4.2.3. Phương thức (Method) của đối tượng Response  AddHeader Phương thức AddHeader thêm một header HTTP mới và một giá trị cho HTTP response.Một khi một header được thêm vào thì ta không thể gỡ bỏ nó ra. Trong IIS 4.0, bạn phải gọi phương thức này trước bất kỳ kết quả nào gởi tới browser. Trong IIS 5.0 bạn có thể gọi phương thức AddHeader tại bất cứ nơi nào trong script nhưng phải đứng trước bất cứ lời gọi hàm Response.Flush nào trong trang. Cú pháp: Response.AddHeader name, value trong đó name là tên của header còn value là giá trị của header. Ví dụ: Chú ý: Tên của header không được chứa dấu gạch dưới. 98
  48.  AppendToLog Phương thức này thêm một một chuỗi vào cuối mục log của trình chủ.Bạn có thể gọi phương thức này nhiều lần trong một script, mỗi lần gọi sẽ gắn thêm một chuỗi vào mục log của trình chủ. Cú pháp: Response.AppendToLog (string) Ví dụ: Chú ý: Chuỗi cần ghi vào mục log không được chứa bất kỳ dấu phẩy (,) nào.  BinaryWrite Phương thức này ghi dữ liệu trực tiếp xuống browser mà không phải chuyển đổi bất kỳ ký tự nào. Phương thức này thường được dùng để ghi dữ liệu ảnh (BLOB) từ cơ sở dữ liệu xuống browser. Cú pháp: Response.BinaryWrite (data)  Clear Phương thức này xóa tất cả các kết xuất HTML được trình chủ đưa vào vùng đệm. Nhưng phương thức này không xóa phần header của đối tượng Response mà chỉ xóa phần nội dung của đối tượng Response.Nếu thuộc tính Buffer của đối tượng Response được đặt là false thì phương thức này sẽ gây ra lỗi lúc thi hành (vì không có vùng buffer thì lấy gì mà xóa!!!). Cú pháp: Response.Clear 99
  49. Ví dụ: Kiểm tra phương thức Clear Đây là phần nội dung của trang Web. Nội dung này sẽ được gởi tới người dùng Bắt đầu xóa Buffer Kết quả khi duyệt trang web này là người dùng không thấy gì cả (vì trang HTML mà server đưa vào trong vùng đệm chưa kịp gởi đã bị xóa bởi việc gọi phương thức clear.)  End Phương thức này dùng để dừng việc xử lý một script và trả về kết quả hiện tại. Nếu thuộc tính Buffer được đặt là true thì khi gọi phương thức này Server sẽ gởi các kết xuất HTML được lưu trong vùng đệm xuống browser. Nếu ta không muốn đưa kết quả xuống cho browser thì ta gọi phương thức clear trước khi gọi phương thức này. Cú pháp: Response.End Ví dụ: 100
  50. Đoạn văn bản này sẽ được gởi tới browser và người dùng có thể đọc được Đoạn văn bản này sẽ không được gởi và đã gọi phương thức End rồi  Flush Gọi phương thức này để chuyển các kết xuất HTML mà Server lưu giữ lại trong vùng đệm xuống browser ngay lập tức. Nếu thuộc tính Buffer được đặt là false thì thuộc tính này sẽ gây ra lỗi lúc thi hành. Cú pháp: Response.End Ví dụ: Đoạn văn bản này sẽ được gởi tới người dùng ngay khi gọi phương thức Flush. Một số đoạn văn bản khác sẽ được gởi sau một lúc nữa!!! <% 101
  51. Response.Flush Dim i For i = 1 to 1000 Response.Write ” ” Response.Write ”Đây là đoạn văn bản tiếp theo!” Response.Flush %>  Redirect Phương thức này dùng để chuyển người dùng đến một trang khác được chỉ định trong đường dẫn URL. Cú pháp: Response.Redirect (URL) Ví dụ sau đây minh họa việc đăng nhập của người dùng. Tạo tập tin login.asp với nội dung sau: Login to Login Username: Password: 102
  52. Tạo tập tin validate.asp với nội dung sau: Tạo tập tin success.asp với nội dung sau: Bạn đã đăng nhập thành công!  Write Phương thức này dùng để ghi dữ liệu ra tập tin kết xuất dạng HTML để gởi cho browser. Dữ liệu này có thể là số, chuỗi, ngày, Cú pháp: Response.Write (text) 103
  53. Ví dụ: ”) Dim x x = 100 Response.Write x %> 4.3. Đối tượng Session Khi bạn mở, đóng ứng dụng hoặc đang làm việc với một ứng dụng nào đó, máy tính sẽ biết bạn là ai. Nhưng khi làm việc trên Internet thì đó là một vấn khác: Web Server không biết bạn là ai và bạn đang làm gì bởi vì dòng địa chỉ http:// cung cấp trạng thái của bạn. ASP giải quyết vấn đề này bằng cách tạo ra một cookies duy nhất cho mỗi người dùng, cookies này được gởi cho client và nó chứa đựng thông tin để nhận diện ra bạn. Giao tiếp này được gọi là đối tượng Session. Đối tượng Session được dùng để lưu trữ thông tin về những thay đổi đối với một người dùng. Các biến được chứa trong đối tượng Session chứa thông tin về một người dùng và được dùng chung cho tất cả các trang trong một ứng dụng. Khi có một người dùng mới, server tạo ra một đối tượng Session mới và sẽ hủy session đó khi người dùng không nối kết nữa hoặc khi session hết hạn. 104
  54. 4.3.1. Tập hợp của đối tượng Session  Contents Tập hợp Contents chứa tất cả các phần tử đã được gắn thêm vào đối tượng Session trong quá trình thực thi script. Cú pháp: Session.Contents (key) trong đó key là tên của phần tử cần lấy. Ví dụ sau đây liệt kê tất cả các session đã được dùng trong ứng dụng. Các session trong tập Contents ”) Next %>  StaticObjects Tập StaticObjects chứa tất cả các đối tượng gắn vào session với tag HTML Cú pháp: Session.StaticObjects(key) 105
  55. Ví dụ: Đoạn chương trình sau đây hiển thị tất cả các đối tượng trong tập StaticObjects Các đối tượng trong tập StaticObjects ”) Next %> 4.3.2. Các thuộc tính của đối tượng Session  CodePage Thuộc tính CodePage cho biết tập ký tự sẽ được dùng để hiển thị nội dung của trang. Sau đây là một vài giá trị CodePage và mô tả của chúng 1251 – American English and most European languages 932 – Japanese Kanji Cú pháp: Session.CodePage( = codepage) Ví dụ: Đoạn chương trình sau đây hiển thị codepage của một trang. CodePage của trang này là: <% 106
  56. Response.Write (Session.CodePage) %>  LCID Ta dùng thuộc tính LCID để thiết lập hay nhận về một con số nguyên mà nó xác định một vùng nào đó. Dữ liệu ngày, giờ và tiền tệ sẽ được hiển thị dựa theo vùng đó. Cú pháp: Session.LCID( = LCID) Ví dụ: ”) Response.Write (“Dạng ngày: ” & date() & “ ”) Response.Write (“Dạng tiền tệ:”& FormatCurrency(540)& “ ”) Session.LCID = 1036 Response.Write (“ ”) Response.Write (“LCID hiện tại: ” & Session.LCID & “ ”) Response.Write (“Dạng ngày: ” & date() & “ ”) Response.Write (“Dạng tiền tệ:”& FormatCurrency(540)& “ ”) Response.Write (“ ”) 107
  57. Session.LCID = 3079 Response.Write (“ ”) Response.Write (“LCID hiện tại: ” & Session.LCID & “ ”) Response.Write (“Dạng ngày: ” & date() & “ ”) Response.Write (“Dạng tiền tệ:”& FormatCurrency(540)& “ ”) Response.Write (“ ”) %> Khi đó kết quả của trình duyệt sẽ là:  SessionID Thuộc tính SessionID trả về một con số id duy nhất dùng để nhận diện cho mỗi người dùng. Con số này được server tạo ra và bạn không thể thay đổi giá trị này được. 108
  58. Cú pháp: Session.SessionID Ví dụ: Đoạn chương trình sau đây hiển thị ra màn hình con số ID. Số ID của bạn là:  TimeOut Thuộc tính này dùng để thiết lập hay nhận về khoảng thời gian hiệu lực dành cho đối tượng Session trong ứng dụng (tính theo phút). Nếu người dùng không refresh hoặc yêu cầu một trang trong khoảng thời gian hiệu lực đó thì session sẽ kết thúc. Mặc định thời gian còn hiệu lực cho một trang là 20 phút. Cú pháp: Session.TimeOut [=number] Ví dụ: Thời gian hiệu lực mặc định là: 109
  59. Thời gian hiệu lực bây giờ là: 4.3.3. Các phương thức của đối tượng Session  Abandon Phương thức Abandon dùng để kết thúc session của người dùng. Khi phương thức này được gọi, đối tượng Session hiện hành chưa bị xóa ngay mà sẽ tồn tại cho tới khi tất cả các Script của trang hiện hành được xử lý xong. Điều này có nghĩa là bạn có thể truy cập các biến session trong cùng trang mặc dù bạn đã gọi phương thức Abandon trước đó, nhưng truy cập các biến session từ những trang khác thì không được. Cú pháp: Session.Abandon Ví dụ:Tạo hai tập tin file1.asp và tập tin file2.asp trong cùng một ứng dụng với nội dung sau: file1.asp 110
  60. file2.asp Khi người dùng yêu cầu trang file1.asp thì kết quả in ra màn hình là “Bill Gate” nhưng khi người dùng yêu cầu tiếp trang file2.asp thì kết quả không hiển thị Bill Gate như mong muốn bởi vì Session(“Ten”) đã bị kết thúc ở file1.asp do gọi phương thức Abandon.  Contents.Remove Phương thức này dùng để xóa một phần tử ra khỏi tập Contents của đối tượng Session. Cú pháp: Session.Contents.Remove (name | index) Khi gọi phương thức này ta có thể truyền vào tên của phần tử cần xóa hoặc vị trí của phần tử trong tập Contents. Ví dụ: ”) 111
  61. Dim x For each x in Session.Contents Response.Write (x & “=” & Session.Contents(x) & “ ”) Session.Contents.Remove(“ptu3”) Response.Write (“ Sau khi xóa ptu3: ”) For each x in Session.Contents Response.Write (x & “=” & Session.Contents(x) & “ ”) Session.Contents.Remove(2) Response.Write (“ Sau khi xóa phần tử thứ 2: ”) For each x in Session.Contents Response.Write (x & “=” & Session.Contents(x) & “ ”) %> Kết quả khi thực hiện trang này như sau: 112
  62.  Contents.RemoveAll() Thay vì chỉ xóa một phần tử ta dùng phương thức Remove thì phương thức này xóa tất cả các phần tử ra khỏi tập Contents Cú pháp: Session.Contents.RemoveAll() 4.3.4. Các sự kiện của đối tượng Session  Session_OnStart Sự kiện này xuất hiện khi trình chủ tạo một session mới. Cài đặt của sự kiện này được đặt trong tập tin global.asa.  Session_OnEnd Sự kiện này xuất hiện khi session kết thúc. Cài đặt của sự kiện này cũng được đặt trong tập tin global.asa. 113
  63. Chú ý: Trong cài đặt của sự kiện Session_OnEnd ta không sử dụng được phương thức MapPath bởi vì ở đây phương thức này không còn hiệu lực. 4.4. Đối tượng Application Một ứng dụng bao gồm một tập hợp các file kết hợp với nhau để xử lý hoặc phục vụ cho một mục đích nào đó. ASP cung cấp một đối tượng dùng để kết hợp các file đó lại với nhau, đó là đối tượng Application. Đối tượng Application được dùng để lưu trữ các biến, qua đó các trang có thể truy cập đến các biến này. Không giống như đối tượng Session chỉ dùng cho một nối kết cho mỗi người dùng, đối tượng Application được dùng chung cho tất cả các người dùng. Do đó đối tượng Application nên chứa các thông tin mà có thể được truy cập bởi nhiều trang trong ứng dụng (như thông tin nối kết cơ sở dữ liệu, thông tin về số người dùng truy cập, ) nghĩa là bạn có thể truy cập các thông tin này từ bất cứ trang nào trong ứng dụng, nhưng chú ý là khi thay đổi các thông tin này sẽ ảnh hưởng đến tất cả các trang khác trong ứng dụng. 4.4.1. Tập hợp của đối tượng Application  Contents Tập hợp Contents chứa tất cả các phần tử đã được gắn thêm vào đối tượng Application trong quá trình thực thi script. Cú pháp: Application.Contents (Key) trong đó key là tên của phần tử cần lấy. Ví dụ sau đây liệt kê tất cả các Application đã được dùng trong ứng dụng. 114
  64. Các biến Application trong tập Contents ”) Next %>  StaticObjects Tập hợp StaticObjects chứa tất cả các đối tượng được gắn vào ứng dụng với tag HTML Cú pháp: Application.StaticObjects(Key) Ví dụ: Đoạn code sau đây liệt kê tất cả các object. ”) %> 4.4.2. Các phương thức của đối tượng Application  Contents.Remove Phương thức này dùng để xóa một phần tử ra khỏi tập Contents của đối tượng Application. Cú pháp: Application.Contents.Remove (name | index) 115
  65. Khi gọi phương thức này ta có thể truyền vào tên của phần tử cần xóa hoặc vị trí của phần tử trong tập Contents. Ví dụ:  Contents.RemoveAll Thay vì chỉ xóa một phần tử ta dùng phương thức Remove thì phương thức này xóa tất cả các phần tử ra khỏi tập Contents Cú pháp: Application.Contents.RemoveAll()  Lock và Unlock Bởi vì tất cả các người dùng đều có thể truy cập đến các biến Application nên có thể cùng lúc hai hay nhiều người dùng cùng thay đổi giá trị của biến và điều này dẫn đến sai lệch giá trị của biến. Để khắc phục điều này đối tượng Application cung cấp hai phương thức Lock và Unlock. Phương thức Lock ngăn cản người dùng khác thay đổi biến trong đối tượng Application (dùng để đảm bảo rằng tại một thời điểm chỉ có một người dùng thay đổi các biến trong đối tượng Application). Phương thức Unlock cho phép người dùng thay đổi giá trị các biến trong đối tượng Application. Cú pháp: Application.Lock Application.Unlock 116
  66. Lưu ý: Khi gọi phương thức Lock thì ta phải nhớ gọi phương thức Unlock ngay khi thực hiện xong. Ví dụ: Trang này được truy cập: lần! 4.4.3. Các sự kiện (Events) của đối tượng Application  Application_OnStart Sự kiện này xuất hiện trước khi một phiên nối kết mới đầu tiên được hình thành. Sự kiện này được đặt trong file global.asa  Application_OnEnd Sự kiện này xuất hiện khi ứng dụng kết thúc (khi web server dừng). Sự kiện này được đặt trong file global.asa 4.5. Đối tượng Server Đối tượng Server cung cấp nhiều thuộc tính và phương thức dùng để truy cập server. Đây là đối tượng dùng để quản lý những đặc trưng của trình chủ IIS và các hành động liên quan tới dịch vụ HTTP. Ngoài ra đối tượng Server còn cung cấp khả năng tạo kế thừa các thành phần COM trên Server. 4.5.1. Các thuộc tính của đối tượng Server Đối tượng Server chỉ có duy nhất một thuộc tính đó là ScriptTimeOut. Thuộc tính này quy định thời gian lớn nhất mà 117
  67. các lệnh kịch bản còn được thực hiện. Giá trị mặc định là 90 giây. Lưu ý là giá trị timeout sẽ không hiệu lực khi server thực hiện các lệnh kịch bản. Cú pháp: Server.ScriptTimeOut = [number] 4.5.2. Các phương thức của đối tượng Server  CreateObject Phương thức CreateObject dùng để tạo một thực thể của một đối tượng. Các đối tượng do phương thức này tạo ra chỉ có hiệu lực trong phạm vi một trang, do đó chúng sẽ bị hủy khi server xử lý xong trang ASP hiện hành. Để tạo một đối tượng mà phạm vi của nó như Session hay Application, bạn có thể dùng tag trong file Global.asa hoặc lưu trữ đối tượng trong biến Session hay Application. Cú pháp: Server.CreateObject (progID) trong đó progID là kiểu của đối tượng cần tạo. Ví dụ 118
  68.  Execute Thuộc tính Execute thực thi một trang ASP bên trong một trang khác. Sau khi thực thi xong file ASP được gọi thì quyền điều khiển được trả về cho file ASP ban đầu (file gọi). Cú pháp: Server.Execute (path) với path là đường dẫn tới tập tin ASP cần thực thi. Ví dụ:Tạo hai tập tin file1.asp và file2.asp và đặt trong cùng thư mục với nội dung sau: File1.asp File2.asp 119
  69.  GetLastError Phương thức này trả về một đối tượng ASPError mô tả lỗi xuất hiện. Mặc định trang web dùng tập tin \iishelp\common\500-100.asp để xử lý các lỗi trong ASP. Nếu cần thì bạn có thể tạo hoặc thay đổi tập tin để đưa ra những câu thông báo thân thiện hơn. Chú ý: Phương thức này được dùng trước khi tập tin ASP gởi bất cứ nội dung gì xuống browser. Cú pháp: Server.GetLastError() Ví dụ: Trong ví dụ sau đây sẽ xuất hiện một lỗi chia cho 0  HTMLEncode Phương thức này dùng để mã hóa dạng HTML một chuỗi. Cú pháp: Server.HTMLEncode(string) 120
  70. Ví dụ: Đoạn chương trình sau đây cho phép người dùng nhập vào username và password, sau đó nhấn nút login. Nếu người dùng login sai thì sẽ bắt người dùng nhập lại password. "") or (upass ") end if %> Dang nhap Username: "> Password: 121
  71.  MapPath Phương thức này ánh xạ một đường dẫn nào đó sang một đường dẫn vật lý. Phương thức này không được dùng trong sự kiện Session_OnEnd và Application_OnEnd. Cú pháp: Server.MapPath (path) Chú ý:Nếu path bắt đầu bằng ký tự / hoặc \ thì các ký tự này đại diện cho đường dẫn vật lý của thư mục ảo của tập tin ASP hiện tại. Ví dụ: Giả sử bạn có tập tin test.asp đặt trong thư mục C:\Inetpub\wwwroot\Script với nội dung sau: Kiểm tra MapPath ”) Response.Write(Server.MapPath(“Script/ test.asp”) & “ ”) Response.Write(Server.MapPath(“/Script/ test.asp”) & “ ”) Response.Write(Server.MapPath(“/”) & “ ”) Response.Write(Server.MapPath(“\”) & “ ”) %> 122
  72. Khi duyệt trang test.asp này ta được kết quả như sau:  Transfer Phương thức này gởi (chuyển) tất cả các thông tin về trạng thái (các biến Session, các biến Application, các dữ liệu trong tập Request ) của tập tin ASP hiện tại cho một tập tin ASP thứ hai. Khi trang thứ hai thực hiện xong thì quyền điều khiển không trả về cho trang trước đó (xem thêm phương thức Execute). Phương thức Transfer là một dạng khác của phương thức Response.Redirect nhưng lại hiệu quả hơn bởi vì phương thức Response.Redirect buộc Server phải giữ lại một Request giả trong khi phương thức Server.Transfer thì chuyển quyền điều khiển cho một trang ASP khác trên server. (xem thêm phương thức Response.Redirect) Cú pháp: Server.Transfer (path) 123
  73. Ví dụ:Tạo hai tập tin file1.asp và file2.asp và đặt trong cùng thư mục với nội dung hai file như sau: File1.asp File2.asp Mở trình duyệt lên và thực thi file1.asp. So sánh kết quả này với kết quả ở ví dụ của phương thức Server.Execute.  URLEncode Phương thức này dùng để mã hóa một chuỗi URL. Cú pháp: Server.URLEncode (stringURL) 124
  74. 4.6. Đối tượng ASP Error Đối tượng ASPError được dùng để hiển thị thông tin chi tiết của bất cứ lỗi nào xuất hiện trong các kịch bản của trang ASP. Đối tượng ASPError được tạo ra khi phương thức Server.GetLastError được gọi, vì thế thông tin về các lỗi chỉ có thể được truy cập bằng việc gọi phương thức Server.GetLastError. Đối tượng ASPError được bổ sung vào ASP từ phiên bản 3.0 trở đi và chỉ có sẵn trong IIS 5. Đối tượng ASPError không có phương thức nào mà chỉ có các thuộc tính để cung cấp các thông tin về lỗi xuất hiện. Dưới đây là các thuộc tính của đối tượng ASPError:  ASPCode Thuộc tính này cho biết mã lỗi được tạo ra bởi IIS Cú pháp: ASPError.ASPCode  ASPDescription Thuộc tính này trả về một chuỗi mô tả chi tiết lỗi xuất hiện. Cú pháp: ASPError.ASPDescription  Category Thuộc tính này cho biết nơi nào đưa ra lỗi (do IIS hay do ngôn ngữ kịch bản hay do một thành phần phụ thêm nào đó). Cú pháp: ASPError.Category  Column Thuộc tính này cho biết vị trí cột thứ mấy trong tập tin ASP đã gây ra lỗi. 125
  75. Cú pháp: ASPError.Column  Description Thuộc tính này mô tả ngắn gọn lỗi. Cú pháp: ASPError.Description  File Thuộc tính này trả về tên tập tin ASP đã gây ra lỗi. ASPError.File  Line Thuộc tính này cho biết dòng thứ mấy trong tập tin ASP đã gây ra lỗi. Cú pháp: ASPError.Line  Number Thuộc tính này trả về mã lỗi COM chuẩn của lỗi tạo ra. Cú pháp: ASPError.Number  Source Thuộc tính này trả về đoạn mã của dòng gây ra lỗi. Cú pháp: ASPError.Source Ví dụ: <% Dim objErr 126
  76. Set objErr = Server.GetLastError() Response.Write (“ASPCode = “ & objErr.ASPCode) Response.Write (“ ”) Response.Write(“ASPDescription= “&objErr. ASPDescription) Response.Write (“ ”) Response.Write (“Category = “ & objErr.Category) Response.Write (“ ”) Response.Write (“Column = “ & objErr.Column) Response.Write (“ ”) Response.Write (“Description = “ & objErr. Description) Response.Write (“ ”) Response.Write (“File = “ & objErr.File) Response.Write (“ ”) Response.Write (“Line = “ & objErr.Line) Response.Write (“ ”) Response.Write (“Number = “ & objErr.Number) Response.Write (“ ”) Response.Write (“Source = “ & objErr.Source) Response.Write (“ ”) %> 5. CHỈ THỊ #include Khi muốn chèn nội dung của một tập tin ASP vào tập tin ASP khác trước khi server thực thi chúng ta dùng chỉ thị #include. Thông thường các nội dung đó chứa các hàm toàn cục, các biến toàn cục, các header, các footer hoặc những gì dùng chung cho nhiều trang. Cú pháp: hoặc 127
  77. trong đó filename là tên của tập tin mà nội dung của tập tin đó cần include vào. Từ khoá file để chỉ rằng đường dẫn đến tên tập tin cần include là đường dẫn tương đối, đường dẫn này bắt đầu bằng thư mục chứa tập tin. Còn từ khoá virtual để chỉ ra rằng đường dẫn tới tập tin bắt đầu bằng thư mục ảo. Ví dụ: Giả sử ta có tập tin time.inc có chứa hàm dùng để ghi ra màn hình của browser giờ hiện hành. Còn tập tin distime.asp là tập tin include tập tin time.inc. Hai tập tin này được đặt trong cùng thư mục và với nội dung sau: time.inc distime.asp Lưu ý: Dòng chỉ thị #include không được đặt trong đoạn chứa các lệnh kịch bản. 128
  78. 6. TẬP TIN GLOBAL.ASA ASP cung cấp cho bạn file cấu hình global.asa, trong file này bạn có thể đặt các script xử lý các sự kiện hay các hàm, thủ tục, biến mang tính toàn cục. File global.asa phải được đặt trong thư mục gốc của ứng dụng và mỗi ứng dụng chỉ được phép có duy nhất một file global.asa. Khi trang asp của ứng dụng được triệu gọi lần đầu tiên, trình chủ IIS sẽ tìm xem trong thư mục hiện tại của ứng dụng có file global.asa không. Nếu có thì trình chủ sẽ nạp và xử lý các sự kiện được cài đặt trong file này, sau đó chuyển giao quyền xử lý lại cho trang ASP. Trong file global.asa, bạn chỉ được phép cài đặt và xử lý các sự kiện sau:  Application_OnStart:Sự kiện này được phát sinh khi người dùng đầu tiên triệu gọi bất kỳ trang nào trong ứng dụng. Khi trình chủ IIS khởi động lại hoặc khi nội dung file global.asa bị hiệu chỉnh thì sự kiện này được phát sinh trở lại. Sau khi xử lý xong sự kiện này, trình chủ bắt đầu xử lý sự kiện Session_OnStart để chuẩn bị cho phiên nối kết. Các biến Application thường được khởi tạo bên trong sự kiện này.  Session_OnStart: Sự kiện này được gọi mỗi khi có một người dùng mới yêu cầu trang asp của ứng dụng Web trong lần đầu tiên. Các biến session của người dùng cũng thường được khởi tạo bên trong sự kiện này.  Session_OnEnd: Sự kiện này được gọi khi phiên làm việc của người dùng chấm dứt. Phiên làm việc được xem là chấm dứt khi nó hết hạn (timeout hay expired), mặc định cho thời gian làm việc của session là 20 phút, bạn có thể tăng hay giảm thời gian này bằng cách thay đổi giá trị của thuộc tính Timeout của đối tượng session.  Application_OnEnd:Sự kiện này được gọi khi không còn người dùng nào tương tác với ứng dụng web của bạn nữa. Thông thường thì sự kiện này được gọi khi trình chủ IIS ngừng 129
  79. hoạt động. Thông qua sự kiện này bạn có thể giải phóng vùng nhớ đã cấp phát trước đó hoặc lưu lại các thông tin, trạng thái cần thiết xuống đĩa cứng để phục vụ cho quá trình khởi động trở lại sau đó. Bạn cài đặt thủ tục xử lý sự kiện trong file global.asa theo mẫu sau: Sub Application_OnStart . End Sub Sub Session_OnStart End Sub Sub Session_OnEnd End Sub Sub Application_OnEnd End Sub Ví dụ:Dưới đây là ví dụ minh họa cách cài đặt và xử lý sự kiện trong file global.asa. Sub Application_OnStart Application(“Status”) = “Application_OnStart” End Sub 130
  80. Sub Session_OnStart Response.Write (Application(“Staus”) + “ ”) Response.Write (“Session_OnStart” + “ ”) End Sub Sub Session_OnEnd End Sub Sub Application_OnEnd End Sub Bạn lưu file global.asa vào thư mục của ứng dụng (giả sử là LearnASP). Kế tiếp là bạn tạo một tập tin để kiểm tra file global.asa với tên test.asp và đặt cùng thư mục với tập tin global.asa với nội dung sau: Kiem tra file global.asa Mở trình duyệt lên và bạn triệu gọi file test.asp.Kết quả sẽ được thể hiện như sau: 131
  81. Ngoài ra bạn có thể đặt các hàm hay thủ tục xử lý trong file globsl.asa để các trang trong ứng dụng có thể triệu gọi các hàm này. 7. ĐỐITƯỢNG DICTIONARY Đối tượng Dictionary được dùng để lưu trữ thông tin theo cặp tên/giá trị. Đối tượng dictionary có thể xem tương tự như mảng, tuy nhiên đối tượng Dictionary được tạo ra để thao tác với dữ liệu một cách hiệu quả hơn.  So sánh đối tượng Dictionary với các mảng ta thấy: + Đối tượng Dictionary dùng từ khoá (key) để nhận diện các phần tử (item) còn mảng thì sử dụng chỉ số. + Bạn không thể dùng ReDim để thay đổi kích thước của đối tượng Dictionary còn mảng thì được. + Khi xoá một phần tử khỏi đối tượng Dictionary thì các phần tử còn lại sẽ tự động thay thế, còn các mảng thì không. + Mảng có thể có nhiều chiều còn đối tượng Dictionary thì không. 132
  82. + Đối tượng Dictionary được xây dựng với nhiều chức năng hơn. + Đối tượng Dictionary truy cập thường xuyên các phần tử một cách ngẫu nhiên hiệu quả hơn mảng. + Đối tượng Dictionary định vị các phần tử dựa trên nội dung hiệu quả hơn. 7.1. Tạo đối tượng Dictionary Đối tượng Dictionary được tạo ra bởi đối tượng Server bằng việc gọi phương thức CreateObject như sau: Bởi vì hàm CreateObject của đối tượng Server trả về một đối tượng nên để gán đối tượng cho biến Dic ta dùng lệnh Set. Khi sử dụng xong thực thể của đối tượng Dictionary ta phải hủy bỏ thực thể đó bằng cách: Set Dic = nothing 7.2. Các thuộc tính của đối tượng Dictionary  CompareMode Ta dùng thuộc tính CompareMode để thiết lập hoặc nhận về chế độ so sánh để so sánh các khoá trong đối tượng Dictionary. Cú pháp: Dictionary.CompareMode [=mode] Trong đó mode có thể nhận một trong các giá trị sau: 133
  83. 0 = vbBinaryCompare – So sánh nhị phân 1 = vbTextCompare – So sánh dạng văn bản 2 = vbDatabaseCompare – So sánh cơ sở dữ liệu Ví dụ:  Count Thuộc tính này trả về số cặp tên/giá trị (số phần tử) trong đối tượng Dictionary. Cú pháp: Dictionary.Count Ví dụ: <% 134
  84. Dim Dic Set Dic = Server.CreateObject(“Scripting.Dictionary”) Dic.CompareMode = 1 Dic.Add “HN”, “Hà Nội” Dic.Add “HCM”, “Hồ Chí Minh” Dic.Add “HP”, “Hải Phòng” Response.Write (“Số cặp tên/giá trị là: “ & Dic.Count) Set Dic = nothing %>  Item Dùng thuộc tính này để gán hoặc lấy về giá trị của một phần tử trong đối tượng Dictionary. Cú pháp: Dictionary.Item (key)[ = newitem] Ví dụ: 135
  85.  Key Để thay đổi tên của một khoá đã có trong đối tượng Dictionary ta dùng thuộc tính key theo cú pháp sau Dictionary.Key (key)[ = newkey] Ví dụ: 7.3. Các phương thức của đối tượng Dictionary  Add Phương thức Add dùng để thêm một cặp khoá/giá trị mới vào đối tượng Dictionary.Nếu khoá này đã có trong Dictionary thì phương thức này sẽ bị sai. Cú pháp: Dictionary.Add (key, value) 136
  86. Ví dụ:  Exists Để kiểm tra một khoá đã có trong đối tượng Dictionary hay chưa ta dùng phương thức Exists. Phương thức này trả về true nếu khoá đã có trong Dictionary và trả về false nếu khoá này tồn tại. Cú pháp: Dictionary.Exists (key, value) Ví dụ: 137
  87.  Items Không phải lúc nào ta cũng thao tác trên các khoá của đối tượng Dictionary mà đôi lúc ta cũng phải thao tác trên dữ liệu của các khoá như: tìm kiếm một giá trị nào đó, sửa đổi giá trị, Nếu ta duyệt lần lượt trên các khoá và lấy giá trị của chúng để so sánh thì ắt hẳn sẽ mất nhiều thời gian. Đối tượng Dictionary cung cấp cho ta phương thức Items để lấy một mảng các giá trị của các khoá, và nhờ vào mảng này ta sẽ thao tác trên dữ liệu dễ dàng hơn. Cú pháp của phương thức Items như sau: Dictionary.Items 138
  88. Ví dụ: ” & “Các giá trị: ” & “ ”) Dim Arr, i Arr = Dic.Items For i = 0 to Dic.Count-1 Response.Write (Arr(i) & “ ”) Next Set Dic = nothing %>  Keys Thay vì trả về một mảng các giá trị như phương thức Items thì phương thức Keys lại trả về một mảng các khoá trong đối tượng Dictionary. Cú pháp: Dictionary.Keys 139
  89. Ví dụ: ” & “Các khoá: ” & “ ”) Dim Arr, i Arr = Dic.Keys For i = 0 to Dic.Count-1 Response.Write (Arr(i) & “ ”) Next Set Dic = nothing %>  Remove Phương thức này xoá một phần tử (một cặp khoá/giá trị) ra khỏi đối tượng Dictionary. Cú pháp của phương thức này như sau: Dictionary.Remove (key) 140
  90. Ví dụ:  RemoveAll Phương thức này dùng để xoá tất cả các phần tử của đối tượng Dictionary. Cú pháp: Dictionary.RemoveAll 8. ĐỐITƯỢNG FILESYSTEMOBJECT Đối tượng FileSystemObject cung cấp thông tin về hệ thống tập tin, thư mục trên trình chủ và ta có thể sử dụng đối tượng này để thao tác với các tập tin, thư mục, 141
  91. 8.1. Tạo đối tượng filesystemobject Bởi vì đối tượng FileSystemObject thao tác trên hệ thống tập tin của trình chủ (server) nên đối tượng này đối tượng này được tạo ra bởi server theo cú pháp sau: Lưu ý: Khi dùng xong thực thể của đối tượng FileSystemObject ta phải hủy thực thể đó đi bằng cách: Set fso = nothing 8.2. Các thuộc tính của đối tượng filesystemobject Đối tượng FileSystemObject chỉ có một thuộc tính duy nhất đó là: Drives:Thuộc tính này cho biết một tập tất cả các ổ dĩa trên máy tính. Cú pháp: [drivecoll = ] FileSystemObject.Drives 8.3. Các phương thức của đối tượng FileSystemObject  BuildPath Phương thức này gắn một chuỗi vào một đường dẫn đã có để tạo ra một đường dẫn mới. Cú pháp: [newpath = ]FileSystemObject.BuildPath(path, name) trong đó: 142
  92. + path: là đường dẫn đã tồn tại + name: là tên cần gắn thêm vào Path + newpath: là đường dẫn mới sau khi đã gắn tên vào Ví dụ: Trong ví dụ trên, sau khi gọi phương thức BuildPath thì biến NewPath sẽ có giá trị là “C:\My Documents\BT”  CopyFile Phương thức này sao chép một hoặc một số tập tin từ thư mục này tới thư mục khác. Cú pháp: FileSystemObject.Copy src, des [,ovr] trong đó: src: là đường dẫn tới tập tin cần sao chép, tên tập tin cần chép có thể chứa các ký tự thay thế như (*, ?). des: là đường dẫn của thư mục cần chép tới, đường dẫn này không được chứa ký tự thay thế (*, ?). 143
  93. ovr: nhận giá trị true hoặc false. Nếu ovr là true có nghĩa là cho phép chép đè lên các tập tin đã có trong des.Nếu false thì không cho chép đè. Giá trị mặc định của ovr là true. Ví dụ: Đoạn chương trình sau đây sao chép tất cả các tập tin có đuôi .asp trong thư mục C:\Web sang thư mục D:\ASP  CopyFolder Phương thức này sao chép một hoặc nhiều thư mục. Cú pháp: FileSystemObject.CopyFolder src, des [,ovr] Ví dụ: Sao chép tất cả các thư mục con của thư mục C:\Web vào thư mục D:\ASP 144
  94.  CreateFolder Phương thức này tạo một thư mục mới. Cú pháp: FileSystemObject.CreateFolder (Foldername) Ví dụ:Tạo thư mục C:\ASP  CreateTextFile Phương thức này tạo một tập tin văn bản trong thư mục hiện hành và trả về một đối tượng TextStream dùng để đọc hoặc ghi dữ liệu lên file. Cú pháp: FileSystemObject.CreateTextFile(filename[,Ovr[,Uni]])  DeleteFile Phương thức này xoá một hoặc nhiều tập tin. Nếu tập tin không tồn tại thì sẽ xuất hiện lỗi. Cú pháp: FileSystemObject.DeleteFile(filename[,bReadOnly]) trong đó bReadOnly nhận một trong hai giá trị.Nếu nhận giá trị true thì các tập tin mang thuộc tính chỉ đọc (read-only) cũng sẽ 145
  95. bị xoá. Nếu nhận giá trị false thì các tập tin mang thuộc tính read-only sẽ không bị xoá.  DeleteFolder Phương thức này xoá một hoặc nhiều thư mục. Nếu thư mục không tồn tại thì phương thức này sẽ gây ra lỗi. Cú pháp: FileSystemObject.DeleteFolder(foldername[,bReadOnly])  DriveExists Phương thức DriveExists kiểm tra trên hệ thống tập tin của server có tồn tại một ổ đĩa nào đó hay không? Nếu có thì phương thức này trả về true, còn nếu không thì sẽ trả về false. Cú pháp: FileSystemObject.DriveExists(drive) trong đó drive là tên của ổ đĩa cần kiểm tra. Ví dụ: 146
  96.  GetAbsolutePathName Phương thức này trả về đường dẫn dạng đầy đủ của một đường dẫn tương đối. Cú pháp: FileSystemObject.GetAbsolutePathName(path) Ví dụ: Giả sử đường dẫn hiện hành là C:\ASP. Đoạn chương trình sau đây sẽ in ra màn hình browser dòng C:\ASP\Data\list.txt  GetBaseName Phương thức này trả về phần tên của một tập tin hoặc tên của thư mục ở cuối một đường dẫn. Cú pháp: FileSystemObject.GetBaseName(path) Ví dụ:Nếu path = “C:\ASP\Data\list.txt” thì hàm này sẽ trả về ”list” 147
  97.  GetDrive Phương thức này trả về một đối tượng Drive mô tả một ổ đĩa. Có được đối tượng Drive ta có thể thao tác trên ổ đĩa mà Drive mô tả bằng cách sử dụng các phương thức của đối tượng Drive. Cú pháp: FileSystemObject.GetDrive(Drive) Ví dụ: Đoạn chương trình sau đây trả về đối tượng Drive mô tả ổ đĩa C.  GetDriveName Phương thức này trả về một chuỗi là tên của ổ đĩa trong một đường dẫn. Cú pháp: FileSystemObject.GetDriveName(path) Ví dụ:Nếu path = “C:\ASP\Data\list.txt” khi gọi hàm GetDriveName(path) ta sẽ nhận được chuỗi ”C:”  GetExtensionName Phương thức này trả về phần mở rộng của một tập tin (không bao gồm dấu chấm phân cách giữa phần tên và phần mở rộng). Cú pháp: FileSystemObject.GetExtensionName(path) 148
  98. Ví dụ:Nếu path = “C:\ASP\Data\list.txt” thì khi gọi hàm GetExtensionName(path) ta sẽ nhận được chuỗi “txt”  GetFile Phương thức GetFile trả về đối tượng File mô tả một tập tin đã được chỉ định trong đường dẫn truyền vào. Cú pháp: FileSystemObject.GetFile(path)  GetFileName Phương thức này chỉ trả về phần tên của một tập tin hay một thư mục. Cú pháp: FileSystemObject.GetFileName(path) Ví dụ:Nếu path = “C:\ASP\Data” thì khi gọi hàm GetFileName(path) ta sẽ nhận được chuỗi ”Data”. Nếu path = “C:\ASP\Data\list.txt” thì khi gọi hàm GetFileName(path) ta sẽ nhận được chuỗi ”list”.  GetFolder Phương thức GetFolder trả về đối tượng Folder của một thư mục. Cú pháp: FileSystemObject.GetFolder(path)  GetParentFolderName Phương thức này trả về thư mục cha của một thư mục. Cú pháp: FileSystemObject.GetParentFolderName(path) Ví dụ:Nếu path = “C:\ASP\Data” thì khi gọi hàm GetParentFolderName(path) ta sẽ nhận được chuỗi ASP”. Đây là thư mục cha của thư mục Data. 149
  99.  GetSpecialFolder Phương thức này trả về đường dẫn tới một số thư mục đặc biệt của hệ điều hành. Cú pháp: FileSystemObject.GetSpecialFolder(foldername) trong đó foldername nhận một trong các giá trị sau: + WindowsFolder hay 0: Nếu muốn nhận về thư mục của hệ điều hành (mặc định đối với Windows 98 đó là thư mục Windows, đối với Windows 2000 thì đó là thư mục Winnt). + SystemFolder hay 1: Nếu muốn nhận về đường dẫn tới thư mục System của hệ điều hành. + TemporaryFolder hay 2: Nếu muốn nhận về đường dẫn tới thư mục tạm thời (TEMP) của hệ điều hành. Ví dụ: Đoạn chương trình sau đây lấy thư mục hệ thống của hệ điều hành. Nếu dùng Windows 2000 thì trên màn hình browser sẽ xuất hiện dòng “C:\WINNT\System32”  GetTempName Phương thức này trả về một tên tập tin hoặc thư mục tạm thời được phát sinh ngẫu nhiên. 150
  100. Cú pháp: FileSystemObject.GetTempName Ví dụ:  MoveFile Phương thức này di chuyển một hoặc nhiều tập tin từ nơi này sang nơi khác. Cú pháp: FileSystemObject.MoveFile (src, des) trong đó src là nơi chứa các tập tin cần di chuyển đi, des là nơi mà các tập tin cần chép đến.  MoveFolder Phương thức này di chuyển một hoặc nhiều thư mục từ nơi này sang nơi khác. Cú pháp: FileSystemObject.MoveFile (src, des) 151
  101. trong đó src là nơi chứa các tập tin cần di chuyển đi, des là nơi mà các tập tin cần chép đến.  OpenTextFile Phương thức này mở một tập tin và trả về một đối tượng TextStream được dùng để truy cập đối tượng này. Cú pháp: FileSystemObject.OpenTextFile(fname, mode, creat, format) Trong đó: + fname: là tên của tập tin cần mở + mode: dùng để chỉ cách thức mở + create: dùng để chỉ định rằng nếu tập tin không tồn tại thì có tạo tập tin mới hay không. + format: dùng để chỉ ra rằng mở tập tin dùng chuẩn ASCII hay Unicode. 8.4. Ví dụ minh họa Sau đây là một ví dụ hiển thị một cửa sổ đăng nhập (login) cho phép người dùng gõ vào tên truy cập (username) và mật khẩu (password). Chương trình sẽ kiểm tra cặp username và password này có tồn tại trong tập tin password.txt trong thư mục hiện tại của ứng dụng không? Nếu có thì chương trình sẽ đưa người dùng đến trang main.asp. Nếu không thì chương trình sẽ thông báo và bắt người dùng đăng nhập lại. Tập tin common.asp chứa các hàm mà người dùng định nghĩa trong đó có hàm CheckAccount dùng để kiểm tra xem username và password truyền vào có tồn tại trong tập tin password.txt không? Nếu có thì hàm này trả về true.Nếu không thì hàm này sẽ trả về false.Nội dung của common.asp như sau: 152
  102. true) and •(CheckAccount=false) stLine = ftxt.Readline if (uname_pass = stLine) then CheckAccount= true end if Wend ftxt.Close Set ftxt=nothing Set fso=nothing 153
  103. End Function %> Tập tin login.asp là tập tin mô tả giao diện với người dùng. Nội dung của login.asp như sau: Login to Login "") and (upass Please check username and password! ") end if elseif uname Please enter password! ") elseif upass Please enter username! ") 154
  104. end if %> Username '> Password Tạo tập tin main.asp. Khi bạn viết một ứng dụng web thực sự thì trang main.asp chính là trang chính của ứng dụng. Giả sử tập tin main.asp với nội dung sau: 155
  105. Trang web chính Tạo tập tin Password.txt và đặt cùng thư mục với ba tập tin trên với nội dung sau: abc:abc cobe:becon nvlong:long1280 hung1254:meocon Đây chính là danh sách các username và password mà ứng dụng cho phép đăng nhập vào. Nếu muốn thêm người dùng, bạn thêm vào tập tin này các dòng tương ứng. Đặt 4 tập tin vừa tạo vào trong cùng một thư mục và tạo một thư mục ảo với tên MyWeb chỉ đển thư mục chứa bốn tập tin này. Mở trình duyệt và gõ vào Kết quả sẽ hiển thị lên màn hình như sau: 156
  106. Khi người dùng gõ vào đúng username và password trong tập tin password.txt thì khi nhấn nút login người dùng sẽ được chuyển sang trang main.asp như sau: 157
  107. Nhưng khi gõ sai username hay password thì một câu thông báo sẽ được hiện lên và bắt người dùng đăng nhập lại như sau: 9. ĐỐITƯỢNG ADROTATOR Đối tượng AdRotator được dùng để hiển thị các ảnh khác nhau mỗi khi người dùng yêu cầu hoặc refresh một trang. Các thông tin về các ảnh hiển thị được đặt trong tập tin văn bản. 9.1. Cách tạo đối tượng AdRotator Để tạo đối tượng AdRotator ta dùng cú pháp sau: Set ad = Server.CreateObject(“MSWC.AdRotator”) ad.GetAdvertisement(“textfile.txt”) 9.2. Định dạng tập tin văn bản REDIRECT URL WIDTH 480 HEIGHT 100 158
  108. BORDER 0 * CITD.gif Đến với CITD 80 Microsoft.gif Đến với Microsoft 20 Các dòng ở phía dưới dấu * là các dòng chỉ hình ảnh, địa chỉ trang web, dòng văn bản để hiển thị nếu không hiển thị được ảnh, và tỉ lệ phần trăm số người dùng truy cập để hiển thị các ảnh. 9.3 . Các thuộc tính của đối tượng AdRotator Border: chỉ định kích thước của đường viền bao quanh phần quảng cáo. Clickable: Chỉ định phần quảng cáo có hyperlink không. TargetFrame: tên của frame để hiển thị ảnh quảng cáo. Ví dụ: 159
  109. 9.4. Các phương thức của đối tượng AdRotator GetAdvertisement: Phương thức này trả về đoạn HTML mà hiển thị mục quảng cáo trên trang web. Cú pháp: AdRotator.GetAdvertisement(path) trong đó path là đường dẫn tới tập tin văn bản mô tả các mục quảng cáo. Bài tập chương 4 Bài 1. Thiết kế và cài đặt trang web hiển thị máy tính tay với các phép toán: cộng (+), trừ (-), nhân (*), chia (/), luỹ thừa (^), căn ( ), bình phương (x2), nghịch đảo (1/x). Bài 2. Viết đoạn code dùng để đếm số lần truy cập vào một trang web. Sau đó nhúng đoạn code đó vào trang web của bạn để kiểm tra. Bài 3.Tương tự như câu 2 nhưng đếm số lượt người dùng đã login vào trang Web. Bài 4. Thiết kế và cài đặt trang web hiển thị lịch (calendar). Trang web phải cho phép người dùng xem lịch tháng của một năm nào đó, xem lịch của tháng trước, tháng kế tiếp. Bài 5. Thiết kế và cài đặt trang web hiển thị hệ thống cây thư mục của máy chủ. 160
  110. Chương 5: GIỚI THIỆU ADO VÀ CÁCKẾT NỐICƠ SỞ DỮ LIỆU 1. GIỚI THIỆU ADO (ActiveX Data Object) là một kỹ thuật mới do Microsoft phát triển để làm việc với các cơ sở dữ liệu, được dùng để cung cấp các khả năng kết nối và xử lý trên cơ sở dữ liệu. Việc sử dụng ADO để truy cập và xử lý cơ sở dữ liệu trong trang ASP có thể chia làm các bước chính sau: . Kết nối với cơ sở dữ liệu thông qua OLEDB hoặc ODBC . Xây dựng câu 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 cơ sở dữ liệu . Xử lý các kết quả trả về từ câu truy vấn . Ngắt kết nối với cơ sở dữ liệu, giải phóng các tài nguyên của hệ thống đã dùng. 2. KẾTNỐIVỚICƠ SỞ DỮ LIỆU 2.1. Tạo connection string thông qua OLEDB, ODBC Để có thể xử lý dữ liệu, bước đầu tiên chúng ta phải cung cấp các thông tin cần thiết để hệ thống biết bạn muốn truy cập đến cơ sở dữ liệu nào. 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ị cơ sở dữ liệu được dùng trong cơ sở dữ liệu của bạn. Cơ sở dữ liệu của bạn dùng có thể là MS Access, MS SQL Server hay Oracle, 161
  111. - Thông tin về ví trí đặt cơ sở dữ liệu của bạn. Ví dụ nếu bạn dùng MS Access, bạn phải chỉ ra cơ sở dữ liệu của bạn được lưu trong tập tin .mdb nào. - Mô hình kết nối cơ sở dữ liệu: ADO nối kết với cơ sở dữ liệu có thể xem như thông qua tầng OLEDB hay tầng ODBC; từ tầng OLEDB có thể nối kết trực tiếp dựa trên Provider được cung cấp cho từng hệ cơ sở dữ liệu riêng biệt hoặc thông qua ODBC cung cấp Driver cho từng hệ cơ sở dữ liệu như mô hình và ta có các bảng liệt kê bên dưới: Bảng sau liệt kê các OLE DB connection string cho một số hệ quản trị cơ sở dữ liệu thông dụng: Data Source OLE DB Connection String Microsoft Access Provider=Microsoft.Jet.OLEDB.4.0; Data Source=đường dẫn đến tập tin .mdb Microsoft SQL Provider=SQLOLEDB.1; Data Source= Server đường dẫn đến database trên server Oracle Provider=MSDAORA.1; Data Source= 162
  112. đường dẫn đến database trên server Microsoft Provider=MSIDXS.1; Data Source= Indexing Service đường dẫn Bảng sau liệt kê các ODBC connection string cho một số hệ quản trị cơ sở dữ liệu thông dụng: Data Source ODBC Connection String Driver Microsoft Access Driver={Microsoft Access Diver (*.mdb)}; DBQ= đường dẫn đến tập tin .mdb Microsoft SQL Driver={SQL Server}; SERVER= Server đường dẫn đến database trên server Oracle Driver=MSDAORA.1; Data Source= đường dẫn đến database trên server Microsoft Excel Driver={Microsoft Excel Driver (*.xls)}; DBQ=đường dẫn đến tập tin .xls; DriverID=278 Microsof Excel 97 Driver={Microsoft Excel Driver (*.xls)}; DBQ= đường dẫn đến tập tin .xls; DriverID=790 Paradox Driver={Microsoft Paradox Driver (*.db)}; DBQ= đường dẫn đến tập tin .db; DriverID=26 Text Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir= đường dẫn đến *.txt Microsoft Visual Driver= {Microsoft Visual FoxPro FoxPro (with a Driver}; SourceType=DBC; database container) Sourcedb=đường dẫn đến tập tin .dbc 163
  113. Microsoft Visual Driver={Microsoft Visual FoxPro FoxPro (without a Driver}; SourceType=DBF; database container) SourceDb=đường dẫn đến tập tin .dbf 2.2. Tạo connection string thông qua DSN Ta có thể xây dựng connection strings bằng cách tạo Data Source Name (DSN) trong ODBC. Một DSN chứa các thông tin sau:  Tên của DSN  Tập tin cơ sở dữ liệu mà nó trỏ tới  Con trỏ chỉ đến các driver kết nối với tập tin cơ sở dữ liệu  UserID và password để truy xuất data store  Các thông tin cần thiết khác cho việc kết nối DSN có ba loại: User, System và File. User DSN bị giới hạn trong phạm vi người tạo. Một user đăng nhập vào mạng sẽ không thấy DSN của các user khác. System DSN được lưu trên registry và được nhìn thấy bởi tất cả người dùng trên máy cục bộ bao gồm các dịch vụ NT. File DSN chứa nội dung tương đương nhưng dưới dạng tập tin văn bản chứ không phải trong registry - Các bước tạo DSN cho cơ sở dữ liệu Access 1. Mở cửa sổ điều khiển ODBC và chọn System DSN Vào Control Panel→ 32 bit ODBC (windows 98) Vào Control Panel → Administrator Tools → Data Source (ODBC) (Windows 2000 hoặc Windows XP) 164
  114. 2. Nhấp vào Add để tạo DSN mới. Chọn từ danh sách driver, driver bạn cần sử dụng cho cơ sở dữ liệu của mình. Ở đây là Access. 3. Đặt tên DSN. 4. Chỉ ra cơ sở dữ liệu mà DSN trỏ tới bằng cách nhấp Select và duyệt rồi chọn cơ sở dữ liệu. Đối với Windows 9X, mọi người đều có thể cấu hình DSN. Đối với Windows NT/2000 (Professional hoặc Server) thì chỉ có quyền Administrator hay ủy quyền Admin mới có thể cấu hình DSN. Sau khi click nút Add để Add DSN, Chọn Driver Microsoft Acesss 165
  115. Đặt tên Data Source Name và nhấn nút Select chỉ ra tập tin *.mdb chứa cơ sở dữ liệu MS Access 166
  116. - Các bước tạo DSN cho cơ sở dữ liệu SQL Server Chúng ta cần phải biết một số thông tin sau trước khi tạo DSN cho cơ sở dữ liệu SQL Server  Địa chỉ mạng của database server  Kiểu mạng (network type) của server (Name pipes, TCP/IP )  Phương thức bảo mật của server (NT hay SQL Server)  Một tài khoản hợp lệ khi đăng nhập vào server  Tên của cơ sở dữ liệu trên server 167
  117. Chọn driver cho SQL Server Đặt tên cho data source name và chỉ ra tên server chứa database trên SQL Server 168
  118. Chỉ ra login ID và password của database cần nối kết. Có thể chỉnh lại các cấu hình các kiểu kết nối mạng đến máy server nối chứa dữ liệu bằng cách nhấn Client Configuration Chọn ra database cần nối kết từ list box 169
  119. Sau khi đã hoàn tất các bước trước ta nhấn nút Finish. Nhấn nút Test Data Source để kiểm tra xem việc tạo DSN đã thành công hay chưa và các kết nối với cơ sở dữ liệu có thực thi được hay không. Nếu kết nối thành công ta có thông báo như sau: 170
  120. 3. CÁC ĐỐITƯỢNG CỦA ADO Mô hình các đối tượng ADO và mối liên hệ đối tượng Properities Errors Properities Parameter Connection Command Record Recordset Stream Fields Fields Properities ADO có các đối tượng Connection, Command, Recordset, Record, Stream và các tập hợp Errors Fields, Properitites, Parameter như hình trên. Các đối tượng trong ADO và các mối liên hệ giữa chúng được thể hiện như hình bên dưới. Dựa trên mô hình đối tượng của ADO sẽ triển khai và mô tả một cách chi tiết các đối tượng, các thuộc tính và các phương thức chức năng của mỗi đối tượng được tạo và sử dụng cho việc kết nối, truy vấn cơ sở dữ liệu trong một trang ASP như thế nào. Qua đó, ta có thể lấy dữ liệu và hiển thị dữ liệu thông qua các đối tượng ADO để hiển thị các trường của mẩu tin, hay kết quả câu truy vấn lên trang web ASP. 171
  121. Đối tượng Connection Đối tượng cho phép bạn nối kết với cơ sở dữ liệu. Qua đó, nó cung cấp sự kết nối giữa ADO và một cơ sở dữ liệu nào đó.Nó chứa ba 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 Đối tượng được thiết kế để thực hiện các câu lệnh ở dạng các câu lệnh SQL như SELECT, INSERT, UPDATE, DELETE, hay các câu lệnh SQL thay đổi cấu trúc dữ liệu như ALTER TABLE hay DROP INDEX, hoặc có thể chứa các store procedure. Đối tượng này thường được dùng để chạy câu lệnh SQL không trả về bất kỳ mẩu tin nào. 172
  122. Đối tượng Recordset Đối tượng chứa tập hợp các dữ liệu được rút ra từ cơ sở dữ liệu. Nó cho phép thay đổi dữ liệu như thêm, xóa, sửa dữ liệu, hay di chuyển mẩu tin. Đối tượng Record Đối tượng Record lưu trữ một hàng (mẩu tin) trong Recordset, một thư mục hay tập tin trong File System. Đối tượng Stream Đối tượng được thiết kế để quản lý dữ liệu dạng binary, 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. 3.1. Đối tượng Connection 3.1.1. Kết nối cơ sở dữ liệu qua đối tượng Connection ADO cung cấp đối tượng Connection để hỗ trợ cho việc tạo và quản lý kết nối cơ sở dữ liệu cần xử lý. Các thuộc tính và phương thức của đối tượng này cho phép bạn mở, đóng kết nối, đồng thời cho phép thực hiện các câu truy vấn dữ liệu Để có thiết lập kết nối cơ sở dữ liệu, ta cần phải thực hiện các bước sau: o Tạo một thể hiện (instance) của đối tượng Connection từ phía server bằng lệnh: Server.CreateObject(“ADODB.Connection”) o Sử dụng phương thức Open để mở kết nối cơ sở dữ liệu. Tham số của phương thức này là chuỗi connection string, chuỗi này sẽ tương ứng với cơ sở dữ liệu. Ví dụ: minh họa cho việc tạo kết nối đến cơ sở dữ liệu được lưu bằng MS Access 173
  123. Khi cần có một 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: 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 một câu lệnh truy vấn. Thao tác trên cơ sở dữ liệu 174
  124. trước hết tạo instance cho đối tượng Connection, xây dựng câu truy vấn SQL và yêu cầu hệ thống thực hiện thông qua phương thức Execute của đối tượng Connection. Cú pháp: objConn.Execute 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 CommandText adCmdUnknown 0 Mặc định, không khác định loại CommandText 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 . Ví dụ minh họa thực hiện truy vấn mẩu tin vào cơ sở dữ liệu . Ví dụ minh họa việc thêm mẩu tin vào cơ sở dữ liệu 175
  125. . Các câu lệnh DELETE, UPDATE cũng được thực hiện tương tự <% Dim objConn Set objConn=Server.CreateObject(“ADODB.Connection”) objConn.Open ”DSN=CITDDB” Dim sqlText 176
  126. sqlText=”DELETE STUDENTS WHERE HOTEN= ‘Nguyen Nam’ AND NAMSINH=’07/06/1977’” Set objRS = objConn.Excute(sqlText) %> 3.2. Thao tác cơ sở dữ liệu bằng đối tượng Command Để có thể thao tác và thay đổi cơ sở dữ liệu bằng đối tượng Command, ta phải thực hiện các bước sau trước khi sử dụng đối tượng Command: . Khai báo và khởi tạo thể hiện (instance) của đối tượng Command . Khởi tạo các thuộc tính đối tượng trong đó thuộc tính của đối tượng Command như sau: ActiveConnection Chứa instance đố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 quy đị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 quá thời gian đã định này sẽ có thông báo lỗi. Prepared True/false.True cho phép biên dịch trước thực thi câu lệnh, và false ngược lại Execute Thực thi câu lệnh 177