Đối tượng phiên ASP


Đối tượng Session lưu trữ thông tin về hoặc thay đổi cài đặt cho phiên người dùng.


Đối tượng phiên

Khi bạn đang làm việc với một ứng dụng trên máy tính của mình, bạn mở nó, thực hiện một số thay đổi và sau đó bạn đóng nó. Điều này giống như một Phiên họp. Máy tính biết bạn là ai. Nó biết khi nào bạn mở ứng dụng và khi bạn đóng nó. Tuy nhiên, trên internet có một vấn đề: máy chủ web không biết bạn là ai và bạn làm gì, vì địa chỉ HTTP không duy trì trạng thái.

ASP giải quyết vấn đề này bằng cách tạo một cookie duy nhất cho mỗi người dùng. Cookie được gửi đến máy tính của người dùng và nó chứa thông tin xác định người dùng. Giao diện này được gọi là đối tượng Session.

Đối tượng Session lưu trữ thông tin về hoặc thay đổi cài đặt cho phiên người dùng.

Các biến được lưu trữ trong một đối tượng Session chứa thông tin về một người dùng và có sẵn cho tất cả các trang trong một ứng dụng. Thông tin phổ biến được lưu trữ trong các biến phiên là tên, id và tùy chọn. Máy chủ tạo một đối tượng Session mới cho mỗi người dùng mới và hủy đối tượng Session khi phiên này hết hạn.


Khi nào thì một phiên bắt đầu?

Một phiên bắt đầu khi:

  • Người dùng mới yêu cầu tệp ASP và tệp Global.asa bao gồm thủ tục Session_OnStart
  • Một giá trị được lưu trữ trong một biến Phiên
  • Người dùng yêu cầu tệp ASP và tệp Global.asa sử dụng thẻ <object> để khởi tạo đối tượng có phạm vi phiên

Khi nào thì một phiên kết thúc?

Một phiên kết thúc nếu người dùng không yêu cầu hoặc làm mới một trang trong ứng dụng trong một khoảng thời gian cụ thể. Theo mặc định, đây là 20 phút.

Nếu bạn muốn thiết lập một khoảng thời gian chờ đó là ngắn hơn hoặc dài hơn mặc định, sử dụng Timeout tài sản.

Ví dụ dưới đây đặt khoảng thời gian chờ là 5 phút:

<%
Session.Timeout=5
%>

Sử dụng phương pháp Bỏ qua để kết thúc phiên ngay lập tức:

<%
Session.Abandon
%>

Lưu ý: Vấn đề chính với các phiên là KHI nào chúng nên kết thúc. Chúng tôi không biết liệu yêu cầu cuối cùng của người dùng có phải là yêu cầu cuối cùng hay không. Vì vậy, chúng tôi không biết chúng tôi nên giữ cho phiên "sống" trong bao lâu. Chờ đợi một phiên không hoạt động quá lâu sẽ sử dụng hết tài nguyên trên máy chủ, nhưng nếu phiên bị xóa quá sớm, người dùng phải bắt đầu lại tất cả vì máy chủ đã xóa tất cả thông tin. Tìm khoảng thời gian chờ phù hợp có thể khó khăn!

Mẹo: Chỉ lưu trữ lượng dữ liệu NHỎ trong các biến phiên!



Lưu trữ và truy xuất các biến phiên

Điều quan trọng nhất về đối tượng Session là bạn có thể lưu trữ các biến trong đó.

Ví dụ bên dưới sẽ đặt tên người dùng biến Phiên thành "Donald Duck" và tuổi biến Phiên thành "50":

<%
Session("username")="Donald Duck"
Session("age")=50
%>

Khi giá trị được lưu trữ trong một biến phiên, nó có thể được truy cập từ BẤT KỲ trang nào trong ứng dụng ASP:

Welcome <%Response.Write(Session("username"))%>

Dòng trên trả về: "Chào mừng Vịt Donald".

Bạn cũng có thể lưu trữ tùy chọn của người dùng trong đối tượng Session, sau đó truy cập tùy chọn đó để chọn trang nào sẽ trả lại cho người dùng.

Ví dụ bên dưới chỉ định phiên bản chỉ có văn bản của trang nếu người dùng có độ phân giải màn hình thấp:

<%If Session("screenres")="low" Then%>
  This is the text version of the page
<%Else%>
  This is the multimedia version of the page
<%End If%>

Xóa các biến phiên

Bộ sưu tập Nội dung chứa tất cả các biến phiên.

Có thể loại bỏ một biến phiên bằng phương thức Remove.

Ví dụ bên dưới xóa biến phiên "sale" nếu giá trị của biến phiên "age" thấp hơn 18:

<%
If Session.Contents("age")<18 then
  Session.Contents.Remove("sale")
End If
%>

Để loại bỏ tất cả các biến trong một phiên, hãy sử dụng phương thức RemoveAll:

<%
Session.Contents.RemoveAll()
%>

Vòng qua Bộ sưu tập nội dung

Bộ sưu tập Nội dung chứa tất cả các biến phiên. Bạn có thể lặp lại bộ sưu tập Nội dung, để xem những gì được lưu trữ trong đó:

<%
Session("username")="Donald Duck"
Session("age")=50

dim i
For Each i in Session.Contents
  Response.Write(i & "<br>")
Next
%>

Kết quả:

username
age

Nếu bạn không biết số lượng mục trong bộ sưu tập Nội dung, bạn có thể sử dụng thuộc tính Đếm:

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
  Response.Write(Session.Contents(i) & "<br>")
Next
%>

Kết quả:

Session variables: 2
Donald Duck
50

Vòng qua Bộ sưu tập StaticObjects

Bạn có thể lặp qua bộ sưu tập StaticObjects, để xem giá trị của tất cả các đối tượng được lưu trữ trong đối tượng Session:

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br>")
Next
%>