ASP Session Object

Programming/ASP 2008. 1. 16. 16:27
The Session object

어플리케이션에서 작업을 할 때, 어플을 열고, 어떤 작업을 하고, 어플을 닫는데, 세션도 이와 같다.
사용자가 어플을 시작하고 닫을 때, 컴퓨터는 사용자가 누구인지 안다.
그러나 인터넷에서 한 가지 문제가 있다
: HTTP 주소는 유지 상태가 아니기 때문에 웹 서버는 사용자가 누구인지 무엇을 할 지 모른다.

ASP는 각 사용자에게 고유한 쿠키를 생성함으로써 이 문제를 해결한다.
쿠키가 클라이언트에 보내지고 쿠키는 사용자를 인증하는 정보를 담고 있다.
이 인터페이스는 세션 객체라 불린다.

세션 객체는 사용자 세션에 대한 설정을 바꾸거나 세션에 관한 정보를 저장하는데 사용된다.
세션 객체에 저장된 변수들은 한 사용자에 관한 정보를 유지하고, 어플리케이션에서 모든 페이지에 이용 가능하다.
세션 변수들에 저장된 일반 정보들은 이름, 아이디, 등이다.
서버는 각 새로운 사용자에게 새로운 세션 객체를 생성하고, 세션 만료시 세션 객체를 파괴한다.


When does a Session Start?

그새로운 사용자는 ASP 파일을 요청하고, Global.asa 파일은 Session_OnStart 프로시저를 포함한다.
값은 세션 변수에 저장된다.
사용자가 ASP 파일에 요청하고, Global.asa 파일은 세션 유효 범위로 객체를 증명하기 위해 <object> 태그를 사용한다.


When does a Session End?

사용자가 요청하지 않거나, 특정 기간에 대해 페이지를 새로고침 하지 않으면 세션은 만료된다. 기본은 20분이다.
기본 시간보다 더 짧거나 길게 시간 조정을 하길 원한다면, Timeout 속성을 지정할 수 있다.

5분의 시간 간격을 지정하는 예
<%
Session.Timeout = 5
%>

세션을 즉시 끝내려면 Abandon 메소드를 사용
<%
Session.Abandon
%>


Store and Retrieve Session Variables

세션 객체에서 가장 중요한 것은 세션에 변수를 저장할 수 있다는 것이다.
세션 변수 username 과 age 에 값을 지정하는 예
<%
Session("username") = "oops"
Session("age") = 18
%>

세션 변수에 값이 저장되어질 때 ASP 어플의 어느 페이지에서도 이용 가능하다.
Welcome <%Response.Write(Session("username"))%>


Remove Session Variables

Contents 컬렉션은 모든 세션 변수들을 담고 있다.
Remove 메소드로 세션 변수를 제거하는 것이 가능하다.
세션 변수 age 값이 18보다 작으면 세션 변수 sale 를 제거하는 예
<%
If Session.Contents("age") < 18 then
  Session.Contents.Remove("sale")
End If
%>

모든 세션 변수를 제거하려면 RemoveAll 메소드를 사용한다.
<%
Session.Contents.RemoveAll()
%>


Loop Through the Contents Collection

Contents 컬렉션에 저장된 것들을 보기위해 반복 명령을 실행하는 예
<%
Session("username") = "oops"
Session("age") = 18
dim i
For Each i in Session.Contents
  Response.Write(i & "<br />")
Next
%>

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


Loop Through the StaticObjects Collection

세션 객체에 저장된 모든 객체의 값을 보려면 StaticObjects 컬렉션을 반복시킬 수 있다.
<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br />")
Next
%>


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,