Thực chất ASP được xây dựng trên cơ sở hướng đối tượng và nó có một tập các đối tượng được cài đặt sẵn làm cơ sở cho người lập trình, có các đối tượng tiện ích (có thể cài đặt hoặc không) và bản thân chúng cũng có những đối tượng cho riêng mình đó là các đối tượng ActiveX/COM
Một số đối tượng cài sẵn thông dụng:
o Request
o Response
o Application
o Session
o Server
Các đối tượng có các tập hợp, các thuộc tính và các phương thức, để truy cập vào một thuộc tính hoặc một phương thức nào đó của đối tượng ta sử dụng:
<Tên đối tượng>.<Tên tập hợp | thuộc tính | phương thức>
Ví dụ:
Response.Write("Hello World")
5.7.2. Đối tượng REQUEST
Một trong những mục đích của ASP là cho phép nhận thông tin từ phía client và người sử dụng. Đối tượng Request được dùng để nhận các thông tin đó được dễ dàng. Đối tượng
Request quản lý các thông tin được gửi từ phía web browser lên server như dữ liệu của các form, cookies...
Đối tượng Request giúp chúng ta truy cập vào đoạn đầu và thân các yêu cầu HTTP của người sử dụng. Đây là đối tượng rất quan trọng vì ta phải thông qua nó để nhận được và đáp ứng các yêu cầu người sử dụng đưa ra. Sử dụng đối tượng Request chúng ta mới có thể xây dựng được trang web động và thực hiện được các hoạt động khác có ý nghĩa hơn ở máy chủ như cập nhật các dữ liệu ở máy khách vào cơ sở dữ liệu...
5.7.2.1. Một số tập hợp thông dụng trong đối tượng Request
TÊN TẬP HỢP MIÊU TẢ
QueryString(<tên biến>) Chứa các giá trị được gửi lên từ các yêu cầu HTTP Get (hiểu đơn giản là từ các URL)
Form(<Tên form>) Chứa các giá trị trong form được gửi đến (với điều kiện form phải sử dụng phương pháp POST
Cookies(<Tên cookie>) Chứa các thông tin của các cookies được gửi trong yêu cầu HTTP
ServerVariables(<tên biến>) Chứa danh sách các giá trị của các biến môi trường đã được xác định trước
a. Tập hợp QueryString
Tập hợp QueryString cho phép ta lấy thông tin từ máy khách gửi đến, có thể là một form được gửi theo phương pháp GET hoặc dữ liệu được gắn với URL khi trang web được yêu cầu.
Để đưa được các biến vào chương trình, sau phần cuối của địa chỉ thông thường ta thêm dấu (?) rồi sau đó đến từng cặp <tên biến> = <giá trị> được phân cách nhau bởi dấu (&).
Ví dụ: để truyền ba biến a, b, c có giá trị lần lượt là 1, 2, 1 về trang PTBAC2.ASP trên server thì chuỗi URL khi đó như sau.
http://localhost/ptbac2.asp?a=1&b=2&c=1
Tập hợp này có tính năng tương đối hạn chế về số lượng các kí tự có thể gửi được trong tiêu đề và trong yêu cầu HTTP. Giới hạn dữ liệu này ở khoảng dưới 2000 kí tự. Nêu số lượng kí tự vượt quá số lượng giới hạn thì chúng sẽ không được sử dụng mặc dù script vẫn chạy.
Ví dụ: ta quay lại ví dụ Giải phương trình bậc 2 ở bài trước. Các biến a, b, c được lấy vào trong chương trình bằng cách lấy từ QueryString.
Và các biến này được truyền vào từ URL của trình duyệt:
b. Tập hợp Form
Tập hợp này cho phép nhận thông tin đầu vào từ các form được gửi đến thông qua phương thức POST. Phương thức này có ưu điểm hơn phương thức GET ở chỗ là có thể truyền được lượng dữ liệu lớn.
* Ví dụ: Ta có thể sửa lại chương trình giải phương trình bậc 2 trong phần trên để cho phép người sử dụng nhập dữ liệu từ trang PTBAC2.HTM và gửi dữ liệu sang trang
GIAIPTB2.ASP để xử lý như sau: - Mã lệnh PTBAC2.HTM
- Mã lệnh phần đọc dữ liệu trong GIAIPTB2.ASP
- Kết quả
Giải thích chi tiết cho phương pháp này sẽ được đề cập ở phần sau.
c. Tập hợp Cookies
Cookies là những mẩu thông tin nhỏ được lưu trên máy trạm thông thường các Cookies được sử dụng để xác định các người sử dụng truy cập trang web.
Chi tiết về Cookies sẽ được đề cập trong một phần riêng về Cookies.
d. Tập hợp ServerVariables
ServerVariables là một tập các giá trị của HTTP header được gửi từ client cùng với giá trị một số biến môi trường của webserver. Các thành phần trong tập này đều là giá trị chỉ đọc.
5.7.2.2. Thuộc tính
Đối tượng Request chỉ có một thuộc tính duy nhất đó là TotalBytes cung cấp thông tin về số bytes dữ liệu mà người dùng chuyển lên web server. Thuộc tính này ít được sử dụng trừ trường hợp xử lý đặc biệt trên server như upload file từ phía client.
5.7.3.3. Phương thức
Đối tượng Request chỉ có một phương thức là BinaryRead phương thức này rất ít được sử dụng và thường không được dùng đến nên ta không đề cập cụ thể ở đây.
5.7.3. Đối tượng RESPONSE
Cùng với đối tượng Request, đối tượng Response cho phép chúng ta quyền kiểm soát thông tin từ server được gửi trả về trình duyệt. Hai đối tượng Request và Response tạo thành một cặp cho phép tạo nên sự giao tiếp client-server.
5.7.3.1. Các tập hợp
Đối tượng Response chi có duy nhất một tập hợp đó là tập hợp Cookies. Tập hợp này cho phép chúng ta tạo nên các Cookies trên máy trạm.
Chi tiết về Cookies sẽ được đề cập trong một phần riêng về Cookies.
5.7.3.2. Một số thuộc tính
TÊN THUỘC TÍNH MIÊU TẢ
Buffer = [True | False] - Điều khiển thông tin được xử lý trước khi gửi về cho client + Nếu được đặt là True thì tất cả các script trên trang phải được chạy trước khi gửi kết quả về client
+ Nếu được đặt là False (giá trị mặc định) thì những kết quả sẽ được gửi về client ngay sau khi mỗi dòng được thực hiện xong.
Charset(charset_name) Đặt tên tập hợp các kí tự
ContentType="Kiểu" Thiết đặt nội dung HTTP. Có một số kiểu phổ biến + Text/HTML (Mặc định)
+ Image/gif + Image/jpeg + Text/plain
Expires = Số phút Đặt thời gian một trang web được cất trên browser trước khi nó hết hạn.
Nếu đặt =0 trang này sẽ không bao giờ được lưu lại trên browser.
5.7.3.3. Một số phương thức
TÊN PHƯƠNG THỨC MIÊU TẢ
Write(Chuỗi kí tự) Gửi chuỗi kí tự về trình duyệt
Redirect(Địa chỉ mới) Chuyển địa chỉ trình duyệt sang một địa chỉ mới
Chú ý: Trong một số phiên bản cũ của web server ta không được thực hiện bất cứ một lệnh viết nào lên trình duyệt trước khi thực hiện lệnh này. Nếu làm trái điều này sẽ gây ra lỗi.
End Kết thúc việc thực hiện scripts, trả về client giá trị hiện tại
Flush Gửi ngay lập tức giá trị được lưu trong buffer về trình duyệt. Lệnh này đòi hỏi Response.Buffer phải được đặt là true, nếu không sẽ gây ra lỗi run-time error.
Clear Xóa ngay lập tức toàn bộ giá trị output được lưu trong buffer. Lệnh này đòi hỏi Response.Buffer phải được đặt là true, nếu không sẽ gây ra lỗi run-time error.
Ví dụ:
Trong ví dụ dưới đây có 2 trang web, một trang là trang LOGIN.HTM, trên trang này có một form cho phép người dùng nhập tên và mật khẩu. Khi nhấn submit, các thông tin được gửi sang trang LOGIN.ASP. Nếu tên truy nhập đúng là "user" và mật khẩu đúng là "password" thì trình duyệt tự động chuyển sang trang DEFAULT.ASP, ngược lại trình duyệt quay về trang LOGIN.HTM
- Kết quả:
- Trang LOGIN.ASP
5.7.4. Đối tượng APPLICATION
5.7.4.1. Khái niệm
Một ứng dụng trên web là một tập hợp các trang có thể truy cập thông tin qua một thư mục ảo xác định nào đó. Các trang này làm việc cùng nhau để thực hiện một mục đích hoặc một công việc nào đó. Và đối tượng Application dùng để tạo ra mối liên kết giữa các trang này.
Do đối tượng Application dùng để chia sẻ thông tin giữa các trang nên Application là toàn cục với mọi trang trong web. Và là toàn cục với tất cả client sử dụng trang web này, việc thay đổi một thuộc tính của Application tại một vị trí sẽ tạo ra sự thay đổi ở tất cả các vị trí khác.
Các biến Application chỉ được tạp ra trong Global.asa nhưng có thể được truy nhập và sửa đổi bởi bất cứ một trang nào trong web.
Đối tượng Application được khởi tạo vào lúc máy khách đầu tiên yêu cầu bất kì một file nào trong thư mục ảo của web.
5.7.4.2. Các tập hợp của đối tượng Application
a. Contents(Key):
Tập hợp này chứa tất cả các biến được giới hạn ở mức độ ứng dụng và các đối tượng được bổ xung vào ứng dụng hiện tại thông qua các script.
Tập hợp này là tập hợp mặc định của Application nên hai cách viết sau đây là hoàn toàn tương đương:
Application("dbTimeOut") = 15
và
Application.Contents("dbTimeOut") = 15
Tập hợp này có các thuộc tính Item, Key, Count, Chi tiết xem lại bài tập hợp
b. StaticObject(Key):
Thuộc tính này dùng để truy xuất các đối tượng được định nghĩa trong tập hợp. Tập hợp này có các thuộc tính Item, Key, Count, Chi tiết xem lại bài tập hợp
5.7.4.3. Các phương thức
a. Phương thức Lock
Phương thức này dùng để ngăn cản không cho người dùng khác thay đổi giá trị các biến trong tập hợp Application. Sử dụng phương thức này để giải quyết vấn đề tương tranh giữa các người sử dụng.
Phương thức này sẽ khóa toàn bộ đối tượng Application (ta không thể thay đổi được bất cứ một thuộc tính nào) do đó ta phải sử dụng phương thức này trong thời gian ít nhất có thể.
* Cú pháp: Application.Lock
b. Phương thức UnLock
* Chức năng: Tháo khóa ta đã đặt bằng phương thức Lock ở trên * Cú pháp: Application.UnLock
c. Cách sử dụng Lock và UnLock
Ví dụ:
5.7.4.4. Các sự kiện
Đối tượng Application chỉ có hai sự kiện là + Application_OnStart
+ Application_OnEnd
Đây là hai sự kiện được xử lý trong file cấu hình Global.asa đã được đề cập ở Bài 3
5.7.4.5. Vấn đề lưu trữ dữ liệu bằng đối tượng Application
Về bản chất, đối tượng Application cũng là một biến nằm trong bộ nhớ của máy chủ, ta không nên lưu trữ dữ liệu lâu dài trong đối tượng Application. Dữ liệu trên biến Application sẽ bị mất sau khi sự kiện Application_OnEnd xảy ra.
Nếu ta muốn lưu trữ lại những dữ liệu nào đó của Application thì ta cần viết các mã lệnh xử lý lưu trữ (đưa các giá trị biến này vào trong những dữ liệu chắc chắn nằm trên bộ nhớ ngoài như file, cơ sở dữ liệu...) trong thủ tục đáp ứng sự kiện Application_OnEnd. Đến khi ứng dụng được khởi động lại, ta cần đọc lại các giá trị đã lưu vào bộ nhớ trong thủ tục đáp ứng sự kiện Application.OnStart
5.7.5. ĐỐI TƯỢNG SESSION
Đối tượng Session được sử dụng để lưu trữ thông tin về một phiên làm việc của người sử dụng hay những thay đổi về phiên làm việc đó. Những biến nằm trong đối tượng Session giữ toàn bộ thông tin về người sử dụng và nó có thể sử dụng ở trên một máy trạm và có hiệu lực trên tất cả các trang trong một web.
Máy phục vụ web tìm ra người sử dụng bằng một giá trị SessionID duy nhất, biến Session này được gán cho người sử dụng kể từ khi người đó bắt đầu phiên làm việc của mình trên web browser. SessionID được lưu trên máy khách bằng cách viết một Cookie chứa SessionID trên máy người sử dụng. Cookie này sẽ được gửi về phía server mỗi khi người sử dụng đưa ra yêu cầu, để nhận ra sự tồn tại của người sử dụng này máy chủ phải đi tìm SessionID trong bộ nhớ và so sánh nó với SessionID trong Cookie vừa nhận được.
5.7.5.1. Các tập hợp của đối tượng Session.
Tương tự đối tượng Application, đối tượng Session có hai tập hợp đó là Contents và
StaticObjects. Phương pháp sử dụng và truy cập tương tự như đối với Application tuy nhiên với đối tượng Session ta có thể thêm, bớt, thay đổi các giá trị của Session từ bất kì vị trí nào và các Session với từng người sử dụng là khác nhau.
5.7.5.2. Các thuộc tính
a. SessionID
SessionID trả lại số định danh của Session. Số này là duy nhất cho mỗi Session. Ta có thể xem qua ví dụ sau:
Kết quả
Nếu ta mở một cửa sổ trình duyệt mới rồi mở trang này ta sẽ nhận được một SessionID mới.
b. CodePage
Thiết đặt trang mã để hiển thị các nội dung động trong script hiện thời.
c. TimeOut
Thiết đặt thời gian hết hạn của một Session (đơn vị thời gian được tính là phút) mặc định là 20 phút.
Cú pháp: Session.TimeOut = <số phút>.
5.7.5.4. Các phương thức
Phương thức trực tiếp trong đối tượng Session là phương thức Abandon.
Chức năng: hủy bỏ toàn bộ các đối tượng trong đối tượng Session giải phóng bộ nhớ cho web server. Chỉ có phiên làm việc nào thực hiện Abandon thì dữ liệu về phiên làm việc ấy mới bị giải phóng, các phiên làm việc khác giữ nguyên.
5.7.5.5. Các sự kiện
Đối tượng Session có hai sự kiện đó là + Session_OnStart
+ Session_OnEnd
Đây là hai sự kiện được xử lý trong file cấu hình Global.asa đã được đề cập ở Bài 3
5.7.5.6. Ví dụ
Trong ví dụ ở mục 2 bài 4 về Login.Asp sẽ xảy ra trường hợp người dùng biết được địa chỉ của trang default.asp và gõ thẳng địa chỉ trang này vào cửa sổ trình duyệt khi đó form login sẽ bị bỏ qua. Ta sẽ kiểm soát vấn đề này bằng biến Session như sau
Phần đầu File DEFAULT.ASP
5.7.6. ĐỐI TƯỢNG SERVER
Đối tượng Server cung cấp một vài chức năng hỗn hợp mà chúng ta có thể sử dụng trong các ứng dụng ASP. Mặc dù hầu hết các chức năng của đối tượng này đều khó hiểu và ít khi được sử dụng nhưng có một phương thức CreateObject và thuộc tính ScriptTimeOut của đối tượng Server là vô giá. Chúng ta sẽ sử dụng các phương thức và thuộc tính này trong script của mình.
Đối tượng Server như tên của nó ngụ ý như đại diện cho chính máy phục vụ web và nhiều chức năng mà nó cung cấp hoàn toàn là chức năng của bản thân máy phục vụ web sử dụng khi xử lý các yêu cầu từ máy khách và trả lời từ máy phục vụ.
5.7.6.1. Thuộc tính ScriptTimeOut
Chức năng: Khoảng thời gian tối đa cho phép một script chạy trên Server. Cú pháp: Server.ScriptTimeOut = <Khoảng thời gian>
Khoảng thời gian được tính bằng giây, giá trị mặc định là 90 và đây cũng chính là khoảng thời gian tối thiểu.
Ví dụ:
Server.ScriptTimeOut = 120
5.7.6.2. Các phương thức
a. Phương thức CreateObject
Chức năng: Tạo ra một đối tượng hoạt động trên Server. Cú pháp: Server.CreateObject(ProgID)
Trong đó ProgID là định danh của mỗi đối tượng
Chú ý: Khi gán một biến cho một đối tượng ta cần phải dùng từ khóa Set
b. Phương thức HTMLEncode
Chức năng: Mã hóa kí tự. Do trong ASP có một vài kí tự có ý nghĩa đặc biệy như <, >, ', ", &,... do đó trong HTML cũng như ASP muốn sử dụng các kí tự này phải mã hóa chúng. Ngoài ra, một số ngôn ngữ ngoài sử dụng các kí tự cơ bản còn sử dụng thêm một số bộ kí tự mở rộng như tiếng Việt, Pháp,... Các kí tự này phải được mã hóa trong các trang HTML, ASP thì các chương trình mới có thể hiển thị đúng đắn. Việc mã hóa này được thực hiện bởi HTMLEncode do Server cung cấp.
Ví dụ:
HTMLENCO.ASP
Kết quả:
Đoạn mã HTML được tạo ra khi xem nguồn trên trình duyệt:
Chức năng: Chuyển đường dẫn logic thành đường dẫn vật lý trên ổ đĩa server. Chức năng này thường được dùng trong các thao tác truy nhập trực tiếp file.
Cú pháp: Server.MapPath(<đường dẫn logic>)
Ví dụ: nếu ta có file MAPPATH.ASP nằm trên thư mục gốc của web server và đường dẫn đến thư mục gốc của web server là E:\Inetpub\wwwroot\ thì khi đó
Server.MapPath("MapPath.asp") sẽ là E:\Inetpub\wwwroot\MapPath.asp. Điều đó thể hiện cụ thể qua chương trình dưới đây:
Mã lệnh MAPPATH.ASP Kết quả
d. Phương thức URLEncode:
Chức năng: Mã hóa các chuỗi URL (Tương tự như HTMLEncode nhưng ở đây là mã hóa các chuỗi URL).
Cú pháp. Server.URLEncode(url) Ví dụ: URLENCO.ASP
5.8. COOKIES
5.8.1. Khái niệm COOKIES
Cookies là những mẩu thông tin nhỏ được ghi trên các máy trạm. Khả năng tạo Cookies phụ thuộc vào tính năng của trình duyệt. Cookies được dùng để xác định user.
Nếu sử dụng IE chúng ta có thể xem thấy các files Cookies được ghi trong thư mục tạm thời của IE, mặc định là C:\WINDOWS\Temporary Internet Files
5.8.2. Thiết lập COOKIES
5.8.2.1. Đặt giá trị cho Cookies
Để đặt giá trị cho Cookies ta sử dụng tạp hợp Cookies của đối tượng Response. Cú pháp như sau:
Response.Cookies("<Tên Cookie>") = <Giá trị>
Nếu tên Cookie chưa tồn tại thì một tên mới sẽ được tạo ra và lấy giá trị ngược lại sẽ đổi giá trị của Cookie thành giá trị mới.
Trong các phiên bản web Server cũ, việc viết các Cookies phải được đặt trước bất cứ một lệnh xuất kết quả ra client nào, trái điều này script sẽ bị lỗi.