VBScript là ngôn ngữ lập trình kiểu thông dịch dành cho Web. Khi đoạn mã VBScript đƣợc chèn vào trang HTML thì trình duyệt Web sẽ thông dich và thực hiện. VBScript do Microsoft phát triển. Cú pháp của nó gần giống nhƣ Visual Basic. VBScript là ngôn ngữ script đƣợc viết phía client và nó chỉ đƣợc hổ trợ tốt nhất trên trình duyệt Internet Explore của Microsoft.
Vị trí đặt đoạn mã VBScript:
Đoạn script sẽ thực thi ngay khi trang web đƣợc mở
Khi đoạn script đặt giữa tag <head>... </head> thì bảo đảm nó sẽ đƣợc thực thi trƣớc khi gọi hàm Ví dụ: CODE <html> <head> <script type="text/vbscript"> các câu lệnh </script> </head>
Đặt giữa tag <body> và </body>
Đoạn script trong phần body đƣợc thực thi khi trang web đang mở Ví dụ: CODE <html> <head> </head> <body> <script type="text/vbscript"> các câu lệnh </script> </body>
Đặt giữa tag <body> và </body> hay <head>và </head>
Đoạn script có thể đặt trong phần đầu hay phần thân của tag HTML. Số lƣợng đoạn script không hạn chế Ví dụ: CODE <html> <head> <script type="text/vbscript"> các câu lệnh </script> </head> <body> <script type="text/vbscript"> some statements </script> </body>
4.4. Các đối tƣợng của trình duyệt
Đối tƣợng (Object) là tập hợp các thuộc tính, phƣơng thức. Trong VBScript có những đối tƣợng đƣợc xây dựng sẵn để mở rộng khả năng của ngôn ngữ, hỗ trợ việc xây dựng các kịch bản mạnh hơn.
4.4.1. Đối tượng ERR
Đối tƣợng ERR chứa các thuộc tính mang thông tin về lỗi của VBScript và các phƣơng thức xử l lỗi. Khi chƣơng trình phát sinh lỗi, cần nắm bắt và xử l các lỗi phát sinh bằng cách khai báo dòng lệnh <% On Error Resume Next %> vào đầu trang ASP hay đầu của hàm, thủ tục của ngƣời viết script tạo ra.
- Thuộc tính
Number, Description : cung cấp mã lỗi và mô tả lỗi
HelpFile : tên đƣờng dẫn tệp tin trợ giúp
Source : nơi xuất hiện lỗi
- Phương thức:
Clear : xoá các thông tin trong đối tƣợng ERR
Raise : tự tạo mã lỗi, khi sử dụng phƣơng thức này ngƣời viết script phải cung cấp đầy đủ các thông tin cho các thuộc tính của đối tƣợng ER
4.4.2. Đối tượng kịch bản DICTIONARY
Đối tƣợng Dictionary cung cấp phƣơng thức lƣu trữ và truy xuất thông tin thuận lợi, tƣơng tự nhƣ mãng. Muốn sử dụng đối tƣợng Dictionary cần phải tạo một thể hiện (instance) của đối tƣợng này qua lệnh :
CreateObject(“Scripting.Dictionary”)
Để thiết lập chỉ mục và giá trị cho một mục thông tin ta sử dụng phƣơng thức Add với hai tham số : chỉ mục, nội dung hoặc gán nội dung trực tiếp cho từng phần tử của thể hiện.
- Thuộc tính :
Count : lƣu trữ số phần tử trong thể hiện - Phương thức :
Add : thêm một chỉ mục và nội dung của một phần tử trong thể hiện
Remove : loại bỏ một phần tử trong thể hiện.
RemoveAll : loại bỏ tất cả các phần tử trong thể hiện.
Items : trả về mảng lƣu trữ các Item của thể hiện
Keys : trả về mảng lƣu trữ các chỉ mục của thể hiện
Ví dụ : tạo một thể hiện của đối tƣợng Dictionary để lƣu trữ số điện thoại và tên chủ thuê bao.
<%
Dim DanhBa, ListOfCustomer, num
Set DanhBa = CreateObject(“Scripting.Dictionary”) DanhBa.Add “841323”,” Trƣờng Đại học Sƣ phạm” DanhBa(“842308”) = “Trƣờng Đại học Bách khoa”
„ Truy xuất thông tin
Response.Write(DanhBa.Item(“841323”))
„ In ra dòng Trƣờng Đại học Sƣ phạm
„ Ta dùng mảng Keys và thuộc tính Count để duyệt các phần tử của thể hiện
ListOfCustomer = DanhBa.Items num = DanhBa.Count - 1
For i = 0 to num Response.Write(ListOfCustomer[i]&”<BR>”) %>
4.4.3. Đối tượng FileSystemObject
Đối tƣợng FileSystemObject cho phép làm việc với tệp tin và thƣ mục trên webserver. Muốn sử dụng đối tƣợng FileSystemObject phải tạo một thể hiện của đối tƣợng này với cú pháp : CreateObject(“Scripting.FileSystemObject”)
- Một số phương thức :
Ví dụ ta có FS là một thể hiện của FileSystemObject: FS.CopyFile “C:\*.*” C:\backup”
MoveFile, CopyFolder, CreateFolder, DeleteFile, DeleteFolder
DriverExists, FolderExists, FileExists : kiểm tra sự tồn tại của một ổ đĩa ,... GetDrive, GetFolder, GetFile : lấy tên ổ đĩa, thƣ mục, tệp tin chỉ định.
- Các đối tượng và tập hợp của thể hiện đối tượng FileSystemObject
Đối tƣợng File :
Các thuộc tính : Name. DateCreated, DateLastAccessed, DateLastModified, Size, Drive (ổ đĩa chứa tệp tin), ParentFolder
Các phương thức : Copy, Delete và Move
Đối tƣợng Folder : có các thuộc tính và phƣơng thức nhƣ đối tƣợng File, ngoài ra còn có các thuộc tính SubFolder (tập các thƣ mục con) và IsRoot (có phải là thƣ mục gốc hay không)
Đối tƣợng Drive và tập hợp Drives (tập hợp các ổ đĩa của webserver)
Thông qua tập hợp Drives ta có thể truy xuất đến các đối tƣợng Drive. Đối tƣợng Drive có các thuộc tính :
- DriveLetter : Tên ổ đĩa
- VolumeName : Label của ổ đĩa
- FreeSpace : Dung lƣợng còn trống của ổ đĩa (tính theo byte) - TotalSize : Dung lƣợng của ổ đĩa (tính theo byte)
- IsReady : đĩa đã sẵn sàng truy cập chƣa
- DriveType : kiểu ổ đĩa (1: Removable, 2: HardDisk, 3: Network Drive, 4: CD, 5: Ram Drive)
- FileSystem: loại bảng FAT đang sử dụng - RootFolder : trả về thƣ mục gốc.
Ví dụ : Viết script để hiển thị thông tin về các ổ dĩa của webserver và các tệp tin, thƣ mục con của thƣ mục C:\
<%
„ Thông tin về các ổ đĩa
Dim Fs, Drv, Drvs
„ Fs : FileSystem Object
Set Fs = CreateObject(“Sripting.FileSystemObject”) Set Drvs = Fs.Drives
For each Drv in Drvs
If Drv.IsReady = True then
Response.Write(“Drive: “&Drv.VolumeName &”<br>”)
Response.Write(“Space Free: “&Drv.FreeSpace&” bytes”+”<br>”) Else
Response.Write(“Drive isn‟t ready “+”<br>”) End If
Next
„ Thông tin về các thư mục con và tệp tin của C:\
Dim Fo, RootDir, RootFiles
Set Drv = Fs.GetDrive(“C:”) Set RootDir = Drv.RootFolder Set RootFiles = RootDir.Files For Each Fo in RootFiles
Response.Write(Fo.Name&”<br>”) Next
Set Fs = Nothing
„ Giải phóng biến Fs khỏi bộ nhớ
%>
Ngoài đối tƣợng FileSystemObject, VBScript còn có đối tƣợng TextStream cho phép ta tạo ra một tệp tin hay thêm dữ liệu vào một tệp tin đã tồn tại.
CÂU HỎI VÀ BÀI TẬP
5. Viết một script cho lại các mục của trình đơn để giải phƣơng trình bậc nhất, phƣơng trình bậc hai một ẩn
6. Viết một script cho phép nhập dữ liệu vào mãng. Hãy sắp xếp mãng đó theo phƣơng thức Sort và in ra kết quả (Sử dụng phƣơng thức document.write biến)
7. Viết một script cho phép nhập một chuỗi k tự. Cho biết độ dài của chuỗi, số từ trong chuỗi, xóa bỏ các khoảng trống không có nghĩa trong chuỗi.
8. Tạo một lịch gồm có các thông tin : ngày, tháng, năm để ngƣời sử dụng có thể tra cứu thông tin theo thời gian đã lựa chọn (không dùng đối tƣợng ActiveX)
(Tạo lịch giống đối tƣợng ActiveX, nhƣng chỉ sử dụng JavaScript: tham khảo tại địa chỉ http://javascript.internet.com/calendars/dynamic.html hay thƣ viện JavaScript trên http://www.echip.com)
Chƣơng 5: ACTIVE SERVER PAGE.
5.1. Mô hình các lớp
Trong phát triển ứng dụng, để dễ quản l các thành phần của hệ thống, cũng nhƣ không bị ảnh hƣởng bởi các thay đổi, ngƣời ta hay nhóm các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hƣởng lẫn nhau. Ví dụ trong một công ty bạn có từng phòng ban, mỗi phòng ban sẽ chịu trách nhiệm một công việc cụ thể nào đó, phòng này không đƣợc can thiệp vào công việc nội bộ của phòng kia nhƣ Phòng tài chính thì chỉ phát lƣơng, còn chuyện lấy tiền đâu phát cho các anh phòng Marketing thì các anh không cần biết. Trong phát triển phần mềm, ngƣời ta cũng áp dụng cách phân chia chức năng này. Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là gì? Là Presentation, Business Logic, và Data Access. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.
Presentation Layer
Lớp này làm nhiệm vụ giao tiếp với ngƣời dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thông qua các thành phần trong giao diện ngƣời sử dụng. Lớp này sẽ sử dụng các dịch vụ do lớp Business Logic cung cấp.
Business Logic Layer
Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớpData Access cung cấp, và cung cấp các dịch vụ cho lớp Presentation. Lớp này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình.
Data Access Layer
Lớp này thực hiện các nghiệp vụ liên quan đến lƣu trữ và truy xuất dữ liệu của ứng dụng. Thƣờng lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu nhƣ SQL Server, Oracle,… để thực hiện nhiệm vụ của mình. Trong lớp này có các thành phần chính là Data Access Logic, Data Sources, Servive Agents).
MVC là một trong những mô hình các lớp đƣợc sử dụng rộng rãi .MVC có ba thành phần giống nhƣ tên gọi - controller,views và model. Mặc dù các thành phần này là những khái niệm logic nhƣng thƣờng là để làm cho chúng rõ ràng hơn, các ứng dụng thƣờng chia nó làm 3 thành phần vật l . Mô hình này có tất cả các thao tác nghiệp vụ, bao gồm cả các giao tiếp với lớp truy cập cơ sở dữ liệu. View biểu diễn Model dƣới dạng các mẫu tƣơng tác với ngƣời dùng, thông thƣờng là các phần tử giao diện ngƣời dùng. Controller đáp ứng lại các sự kiện, thƣờng là các thao tác của ngƣời dùng và gọi tới các Model và View thích hợp. Luồng hoạt động cơ bản của MVC bao gồm các bƣớc sau:
1. Ngƣời dùng tƣơng tác với giao diện ngƣời dùng (User Interface) theo một số cách nào đó ( vd: nhấn một nút).
2. Controller nhận đƣợc thông điệp của ngƣời dùng từ giao diện ngƣời dùng.
3. Controller truy cập và Model, để cập nhật các thay đổi thích hợp tƣơng ứng với hành động của ngƣời dùng.
4. Model đáp ứng lại các thay đổi của View
5. View sử dụng Model để tạo ra giao diện thích hợp với ngƣời dùng.
6. Giao diện ngƣời dùng chờ các thao tác tiếp theo của ngƣời dùng để tiếp tục một chu kỳ mới.
Tổng quát về MVC, các yêu cầu đƣợc chuyển trực tiếp tới Controller, nơi nó sẽ thực thi Model (hoặc điều gì đó) liên quan tới hành động cần đáp ứng, và cuối cùng nó thực thi View (hoặc điều gì đó) liên quan tới các hành động đó.
5.2. Thiết lập WebServer
5.2.1. ASP (Active Server Page)
ASP do Microsoft xây dựng, là môi trường lập trình ứng dụng phía server, hỗ trợ cho việc xây dựng các ứng dụng web. ASP không phải phải là một công nghệ độc lập, nó cho phép liên kết nhiều ứng dụng web gồm các thành phần HTML, VBScript, SQL, ADO (ActiveX Data Objects) và COM (Component Object Model)
ASP đƣợc hỗ trợ mặc định khi cài đặt IIS(Internet Information Server), trong môi trƣờng hệ điều hành khác cần thiết phải cài đặt thƣ viện hỗ trợ ASP nhƣ Sun Chili!Soft.
Những ƣu điểm và nhƣợc điểm của ASP:
Ưu điểm : Sử dụng ADO để thao tác trên cơ sở dữ liệu thuận lợi, có nhiều đối tƣợng dựng sẵn hỗ trợ việc lập trình dễ dàng, nhanh chóng. Đặt biệt, ASP có tính mở, nó cho phép ngƣời lập trình dùng một ngôn ngữ lập trình khác để xây dựng các component để xử dụng trong môi trƣờng ASP.
Nhược điểm : Tốc độ thực hiện chậm hơn công nghệ Java Servlet của Sun, tính bảo mật thấp vì các mã ASP đều có thể đọc đƣợc nếu ngƣời dùng có quyền truy cập vào web server
5.2.2. Trang ASP
Trang ASP là một text file có phần mở rộng là .asp, có cấu trúc nhƣ một tệp tƣ liệu HTML, trong trang ASP còn các thẻ khác để nhúng các mã kịch bản để làm việc với dữ liệu nhƣ một ngôn ngữ lập trình thật sự. Khi webserver nhận đƣợc yêu cầu từ client về một trang asp, nó sẽ yêu cầu trình xử l trang asp (ASP engine) để tạo ra một tệp tƣ liệu HTML gửi về cho client.
Ngôn ngữ kịch bản mặc nhiên trong môi trƣờng ASP là VBScript, ngoài ra có thể sử dụng các ngôn ngữ khác nhƣ Perl, Python, Jscript ... nếu webserver có cài đặt bộ xử l ngôn ngữ này. Một trang ASP thông thƣờng gồm có các thành phần :
Khai báo ngôn ngữ kịch bản đƣợc sử dụng : <%@ language= ngôn_ngữ%>
Các thẻ HTML
Các script cho phía client đƣợc đặt trong cặp thẻ <Script> và </Script> Mã chƣơng trình đƣợc đặt trong cặp thẻ <% và %>
Với cấu trúc nhƣ vậy, ta có thể xem trang asp là một tƣ liệu HTML đƣợc nhúng phần xử l viết bằng mã ASP.
Ví dụ :
<%@ language = VBScript%>
<HTML><HEAD><TITLE> Trang ASP </TITLE></HEAD> <BODY>
<P> Trang Web đầu tiên </P> <%
Response.Write(“Hôm nay ngày :” &Date()) %>
</BODY> </HTML>
5.2.3. IIS (Internet Information Server)
IIS là thành phần hạt nhân của web server, nó có nhiệm vụ nhận yêu cầu của client, xử l và chuyển các trả lời đến client thông qua giao thức HTTP. Ngoài ra nó cũng cung cấp các giao diện lập trình Internet, dịch vụ nhƣ FTP.
Mô hình ứng dụng web thể hiện qua công nghệ ASP đƣợc minh họa nhƣ sau:
Client Server
Request: Page ASP
Response : page HTML
Để thử nghiệm các trang ASP, cần thiết phải cài đặt trình chủ IIS và ODBC
Cài đặt trình chủ IIS: Control Panel – Add/Remove Program – Add/Remove Windows Component – Chọn Iternet Information Services
Thiết lập thư mục ảo cho ứng dụng : thiết lập một ánh xạ từ thƣ mục ảo đến một thƣ mục vật l trên đĩa cứng.
Mở IIS – Default Web Site – New... – Virtual Directory
Thiết lập DSN trong ODBC (Open DataBase Connectivity): để tạo kết nối cơ sở dữ liệu cho trang ASP thông qua Database System Name với driver phù hợp với Database.
5.3. Xử l các yêu cầu của IIS
Webserver xử l nhƣ thế nào khi ngƣời dùng yêu cầu một trang ASP: Không giống nhƣ html, khi ngƣời dùng yêu cầu 1 trang html, web server sẽ tìm trong kho dữ liệu và trả về file html đó để browser hiển thị lại phía client. Khi ngƣời dùng yêu cầu 1 trang Asp, IIS
Browser Web Server
ASP
server sẽ chuyển trang ASP đó cho một bộ phận xử l gọi là ASP engine. Engine sẽ đọc mã nguồn file asp theo từng dòng, thực thi các script trong file. Cuối cùng file ASP đƣợc trả về cho ngƣời dùng dƣới dạng một trang html thuần túy (không còn mã script) giống nhƣ trang web tĩnh. Nếu chúng ta xem lại mã nguồn của trang này trên browser thì có thể thấy những đoạn code asp trong file đã đƣợc dịch thành các dữ liệu html bình thƣờng.
Trang ASP sau khi thực thi trả về cho client dƣới dạng 1 trang web tĩnh. Browser không xem đƣợc mã nguồn của trang ASP
5.4. Mô hình đối tƣợng
Mô hình đối tƣợng mô tả mối liên hệ giữa các đối tƣợng trong ASP nhằm tạo ra các thành phần động cho các trang web viết bằng ASP. Mỗi đối tƣợng có một tập hợp các phƣơng thức, thuộc tính và sự kiện chúng cung cấp các tất cả các chức năng cho đối tƣợng. Dƣới đây chúng ta cùng xem xét 5 đối tƣợng chính trong mô hình đối tƣợng của ASP.
Đối tƣợng sinh mã ngữ cảnh (Scripting Context Object)
Nó là tập các các đối tƣợng sinh mã ngữ cảnh đặt là gốc của mô hình đối tƣợng của ASP. Chúng ta không thể tham chiếu tới nó vì nó đƣợc sinh ra tự động mỗi khi một đoạn mã ASP nào đƣợc chạy. Nó tạo ra các vùng để các đoạn mã đó đƣợc thực thi. Và tự động hủy khi đoạn mã ASP đƣợc thực thi xong.
Các đối tƣợng giao tiếp – Resquest và Response
Thông thƣờng đối với các trang web tĩnh sẽ không có các tƣơng tác giữa ngƣời dùng với server. Server chỉ đơn thuần là nơi chứa các tài liệu HTML và đáp ứng lại các yêu cầu của ngƣời dùng một cách bị động. Với ASP có cung cấp thêm các đối tƣợng Request và Response cho phép ngƣời dùng (trình duyệt) tƣơng tác với Server. Nhằm tạo ra các trang web động. Đối tƣợng Request thực
hiện việc lắng nghe các yêu cầu từ phía máy khách gửi tới máy chủ. Còn Respone có nhiệm vụ gửi các