ASP 세션 개체


Session 개체는 사용자 세션에 대한 정보를 저장하거나 설정을 변경합니다.


세션 객체

컴퓨터에서 응용 프로그램으로 작업할 때 응용 프로그램을 열고 일부 변경한 다음 닫습니다. 이것은 세션과 매우 유사합니다. 컴퓨터는 당신이 누구인지 알고 있습니다. 응용 프로그램을 열 때와 닫을 때를 알고 있습니다. 그러나 인터넷에는 한 가지 문제가 있습니다. HTTP 주소는 상태를 유지하지 않기 때문에 웹 서버는 귀하가 누구이고 무엇을 하는지 모릅니다.

ASP는 각 사용자에 대해 고유한 쿠키를 만들어 이 문제를 해결합니다. 쿠키는 사용자의 컴퓨터로 전송되며 사용자를 식별하는 정보가 포함됩니다. 이 인터페이스를 Session 개체라고 합니다.

Session 개체는 사용자 세션에 대한 정보를 저장하거나 설정을 변경합니다.

Session 객체에 저장된 변수는 한 명의 사용자에 대한 정보를 담고 있으며 한 애플리케이션의 모든 페이지에서 사용할 수 있습니다. 세션 변수에 저장되는 공통 정보는 이름, ID 및 기본 설정입니다. 서버는 각각의 새 사용자에 대해 새 Session 개체를 만들고 세션이 만료되면 Session 개체를 삭제합니다.


세션은 언제 시작됩니까?

다음과 같은 경우 세션이 시작됩니다.

  • 새 사용자가 ASP 파일을 요청하고 Global.asa 파일에는 Session_OnStart 프로시저가 포함됩니다.
  • 값은 세션 변수에 저장됩니다.
  • 사용자가 ASP 파일을 요청하고 Global.asa 파일은 <object> 태그를 사용하여 세션 범위의 개체를 인스턴스화합니다.

세션은 언제 종료됩니까?

사용자가 지정된 기간 동안 애플리케이션에서 페이지를 요청하거나 새로 고치지 않으면 세션이 종료됩니다. 기본적으로 20분입니다.

기본값보다 짧거나 긴 시간 초과 간격을 설정하려면 Timeout 속성을 사용합니다.

아래 예에서는 시간 초과 간격을 5분으로 설정합니다.

<%
Session.Timeout=5
%>

Abandon 메서드를 사용하여 세션을 즉시 종료합니다.

<%
Session.Abandon
%>

참고: 세션의 주요 문제는 세션을 종료해야 하는 시간입니다. 사용자의 마지막 요청이 마지막 요청인지 아닌지 알 수 없습니다. 따라서 세션을 "활성" 상태로 유지해야 하는 기간을 알 수 없습니다. 유휴 세션을 너무 오래 기다리면 서버의 리소스가 소모되지만 세션이 너무 빨리 삭제되면 서버가 모든 정보를 삭제했기 때문에 사용자가 처음부터 다시 시작해야 합니다. 올바른 타임아웃 간격을 찾는 것은 어려울 수 있습니다!

팁: 세션 변수에 소량의 데이터만 저장하십시오!



세션 변수 저장 및 검색

Session 개체에 대해 가장 중요한 것은 변수를 저장할 수 있다는 것입니다.

아래 예에서는 세션 변수 username 을 "Donald Duck"으로 설정하고 세션 변수 age 를 "50"으로 설정합니다.

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

값이 세션 변수에 저장되면 ASP 응용 프로그램의 모든 페이지에서 이 값에 도달할 수 있습니다.

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

위의 줄은 "Welcome Donald Duck"을 반환합니다.

세션 개체에 사용자 기본 설정을 저장한 다음 해당 기본 설정에 액세스하여 사용자에게 반환할 페이지를 선택할 수도 있습니다.

아래 예는 사용자의 화면 해상도가 낮은 경우 페이지의 텍스트 전용 버전을 지정합니다.

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

세션 변수 제거

Contents 컬렉션에는 모든 세션 변수가 포함됩니다.

Remove 메소드를 사용하여 세션 변수를 제거할 수 있습니다.

아래 예에서는 세션 변수 "age"의 값이 18보다 낮은 경우 세션 변수 "sale"을 제거합니다.

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

세션의 모든 변수를 제거하려면 RemoveAll 메서드를 사용합니다.

<%
Session.Contents.RemoveAll()
%>

콘텐츠 컬렉션을 통해 루프

Contents 컬렉션에는 모든 세션 변수가 포함됩니다. Contents 컬렉션을 반복하여 콘텐츠 컬렉션에 무엇이 저장되어 있는지 확인할 수 있습니다.

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

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

결과:

username
age

Contents 컬렉션의 항목 수를 모르는 경우 Count 속성을 사용할 수 있습니다.

<%
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
%>

결과:

Session variables: 2
Donald Duck
50

StaticObjects 컬렉션을 통해 루프

StaticObjects 컬렉션을 반복하여 Session 개체에 저장된 모든 개체의 값을 볼 수 있습니다.

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