Quá trình Request - Response của HTTP
I.1. Đối tượng Response
Đối tượng Response được sử dụng để giao tiếp với Client, nó quản lý và điều phối thông tin từ Web Server đến các trình duyệt của người dùng.
I.1.1. Phương thức Write
Phương thức Write của đối tượng Response được dùng để in ra một chuỗi trên trang Web. Phương thức này là một trong những phương thức chủ lực trong các ứng dụng web sử dụng ASP 3.0 khi cần gởi kết quả từ Server về cho Client.
Response.Write("Chào bạn. Bạn đang tìm hiểu về đối tượng Response.") Web Client
(Browser)
Resource
Web Server Http Response
Http Request
Trong ASP.Net, chúng ta có thể thực hiện như sau:
lblChao.Text = "Chào bạn. Bạn đang tìm hiểu về đối tượng Response."
Qua ví dụ trên, chắc có lẽ bạn cũng nhận ra rằng, khi sử dụng phương thức Response.Write, chúng ta không thể qui định vị trí hiển thị của chuỗi trên trong trang Web. Thay vào đó, với ASP.Net, thông qua các Server control, chúng ta có thể thực hiện chức năng tương tự nhưng linh hoạt hơn bằng cách đặt điều khiển tại vị trí cần hiển thị.
I.1.2. Phương thức Redirect
Phương thức Redirect gởi thông điệp yêu cầu Web Browser truy cập đến một địa chỉ khác.
Ví dụ
'Nếu đăng nhập thành công If <Kiểm tra đăng nhập> Then Response.Redirect("Chao.aspx") Else
Response.Redirect("Dang_nhap.aspx") End If
I.1.3. Ví dụ xử lý cho phép người dùng download file
Ví dụ: Xử dụng đối tượng Response để thực hiện việc download tập tin.
Thiết kế
Thi hành Viết lệnh xử lý:
Private Sub lnkDownload_Click(sender …, e …) _
Handles lnkDownload.Click
Dim sTap_tin As String = "MinhHoa.zip"
Dim sDuong_dan As String
sDuong_dan = Server.MapPath("../Download/") & sTap_tin Response.AddHeader("Content-Disposition", _
"attachment; filename=" + sTap_tin) Response.WriteFile(sDuong_dan)
Response.End() End Sub
LinkButton
Hiển thị hộp thoại download tập tin
I.2. Đối tượng Request
Đối tượng Request được dùng để nhận thông tin từ trình duyệt của người dùng gởi về cho Web Server.
I.2.1. Thuộc tính QueryString
Như chúng tôi đã trình bày ở phần đầu của cuốn sách này, HTTP được xác định qua URLs (Uniform Resource Locators), với cấu trúc chuỗi có định dạng như sau:
http: // <host> [: <port>] [ <path> [? <QueryString>]]
Phần cuối của chuỗi URL là QueryString - còn được gọi là chuỗi tham số, có cấu trúc như sau:
[?Tham_so_1=gia_tri_1[&Tham_so_2=gia_tri_2[&……]]]
Trong trường hợp có nhiều tham số, các cặp [<Tham_so> = <Gia_tri>] phân cách nhau bằng dấu
&.
Ví dụ:
http://www.tuoitre.com.vn/Tianyon/Index.aspx?PID=16
http://www.tuoitre.com.vn/Tianyon/Index.aspx?ArticleID=89211&PID=16
Thuộc tính QueryString của đối tượng Request cho phép chúng ta nhận các giá trị truyền qua chuỗi tham số này.
Request.QueryString("Tên_tham_số")
Ví dụ: Giả sử một người dùng gởi thông điệp đến Web Server yêu cầu trang:
"Request.aspx?Chuc_nang=Hieu_chinh&ID=123". Để lấy giá trị 2 tham số trong chuỗi QueryString, chúng ta thực hiện như sau:
Dim sChuc_nang As String
sChuc_nang = Request.QueryString("Chuc_nang")
lblChuc_nang.Text = sChuc_nang Dim Id As Integer
Id = Request.QueryString("ID") lblId.Text = Id
Trong trường hợp tên tham số không tồn tại trong chuỗi QueryString, thuộc tính Request.QueryString() sẽ trả về giá trị nothing.
Nếu bạn để ý trong đoạn lệnh xử lý trên, chúng ta có thực hiện khai báo các biến với kiểu dữ liệu tương ứng các tham số, nhận kết quả trả về từ thuộc tính Request.QueryString(). Trong trường hợp tham số không được truyền trong chuỗi URL hoặc có truyền mà sai kiểu dữ liệu, các biến được tạo sẽ có giá trị mặc định tương ứng với kiểu dữ liệu của nó, tránh được các lỗi về kiểu dữ liệu không đáng có.
I.2.2. Các ví dụ minh họa
Ví dụ: Lấy thông tin các trình duyệt của người dùng.
Dim sThong_tin As String With Request.Browser
sThong_tin &= "Browser: " & .Browser & "<br>"
sThong_tin &= "Version: " & .Version & "<br>"
sThong_tin &= "Platform: " & .Platform & "<br>"
sThong_tin &= "JavaScript: " & .JavaScript & "<br>"
lblThong_tin.Text = sThong_tin End With
Thông tin của trình duyệt tại Client Ví dụ: Liệt kê danh sách các biến Server
Dim sServer As String, i As Integer With Request.ServerVariables
For i = 0 To .Count - 1
sServer &= .Keys(i) & ": " & .Item(i) & "<br>"
Next i
lblServer.Text = sServer End With
Danh sách các biến Server