지난 강좌에 이어 Session 객체에 대해 알아보도록 하죠.
▶ <B>Session 개체에서 데이터 저장 및 제거 </B>
각각의 사용자 세션에서 사용해야 할 값들은 대개 Session 변수로 저장해 두고 이용합니다.
즉, 사용자마다의 고유한 값을 Session 객체에 저장할 수 있습니다. 이렇게 Session 객체에 저장된 정보는 세션 전체에서 사용할
수 있으며 세션 영역을 가집니다. 다음은 두 종류의 변수 저장 예를 보여 줍니다.
<FONT face="Arial, Helvetica, sans-serif"><%
Session("FirstName") = "Jeff"
Session("LastName") = "Smith"
%></FONT>
또한, 객체 인스턴스를 Session 객체에 저장할 수 있습니다. IIS 5.0 설명서에는 다음과 같이 기술되어 있습니다.</FONT>
<FONT face=바탕>개체를 Session 개체에 저장하고 기본 스크립트 언어로 VBScript-x를 사용하는 경우에는 Set 키워드를 사용해야 합니다.
다음 스크립트를 참고하십시오.
<% Set Session("Obj1") = Server.CreateObject("MyComponent.class1") %>
후속 웹 페이지에서 MyComponent.class1에 의해 제공된 메서드와 속성을 호출하기 위해 다음 명령을 사용합니다.
<% Session("Obj1").MyMethod %>
또는 개체의 로컬 사본을 추출하는 다음과 같은 명령을 사용합니다.
<%
Set MyLocalObj1 = Session("Obj1")
MyLocalObj1.MyObjMethod
%>
세션 영역을 가진 개체를 만드는 다른 방법은 Global.asa 파일에서 <OBJECT> 태그를 사용하는 것입니다.
그러나 Session 개체에 기본 제공 개체를 저장할 수는 없습니다. 예를 들어, 아래의 각 줄은 오류를 반환합니다.
<%
Set Session("var1") = Session
Set Session("var2") = Request
Set Session("var3") = Response
Set Session("var4") = Server
Set Session("var5") = Application
%></FONT>
<FONT face=바탕>
<B>예제 </B>
아래 코드는 세션 변수 name에 문자열 MyName을, 세션 변수 year에 값을, myObj 변수에 some.Obj 구성 요소의 인스턴스를 할당합니다.
<%
Session("name") = "MyName"
Session("year") = 96
Set Session("myObj" = Server.CreateObject("someObj")
%> </FONT>
<FONT color=#333366>
위에서 살펴보았듯이 Session 객체에 개체 인스턴스를 저장할 수도 있지만 이렇게 하면 서버 성능이 저하됩니다.
참고로, Session 객체에서 사용자의 기본 설정을 저장한 다음, 이 기본 설정에 의해 사용자에게 반환할 페이지를 결정할 수 있습니
다. 예를 들어, 사용자가 웹 사이트의 첫 번째 페이지에 있는 내용의 텍스트 버전만 지정한 다음,
이 사이트에서 해당 사용자가 방문한 모든 다른 페이지에 이 선택 사항을 적용하도록 할 수 있습니다.
<FONT face="Arial, Helvetica, sans-serif"><% If Session("Page") = "Low" Then %>
<FONT face=돋움>이것은 페이지의 텍스트 버전입니다.</FONT>
<% Else %>
<FONT face=돋움>이것은 페이지의 멀티미디어 버전입니다.</FONT>
<% End If %></FONT>
지금까지 Session 객체에 특정 값을 저장할 수 있음을 살펴보았습니다. 이제 이렇게 값을 저장할 수도 있는 반면에 저장된 항목을
삭제하는 방법에 대해 알아보도록 하죠. IIS 5.0 설명서에는 다음과 같이 기술되어 있습니다.</FONT>
<FONT face=바탕>예를 들어, 온라인 상점을 방문하는 사용자가 마음을 바꾼다든지, 구입한 물건 목록을 취소한다든지, 완전히 다른 제품을 선택하기
로 결정하는 일은 자주 발생하는 일입니다.
이러한 경우에 적절하지 않은 값을 삭제하면 Session 개체를 쉽게 업데이트할 수 있습니다. </FONT>
<P><FONT face=바탕>Session 개체의 Contents 컬렉션에는 세션에 대해서 저장된(HTML <OBJECT> 태그를 사용하지 않고 저장된) 모든 변수가 포함
되어 있습니다. Contents 컬렉션의 Remove 메서드를 사용하면 세션 상태에 추가된 변수에 대한 참조를 선택적으로 제거할 수 있
습니다. 다음 스크립트는 Remove 메서드를 사용하여 항목을 제거하는 방법, 즉 이 경우에는 Session 개체에서 사용자 할인 정보
를 제거하는 방법을 보여 줍니다.
<%
If Session.Contents("Purchamnt") <= 75 then
Session.Contents.Remove("Discount")
End If
%>
또한, Contents 컬렉션의 RemoveAll 메서드를 사용하여 세션에 저장된 모든 변수를 완전히 제거할 수도 있습니다.
<% Session.Content.RemoveAll() %></FONT>
▶ <B><FONT color=#333366>Timeout Property & Abandon Method</FONT></B><FONT color=#333366>
세션 연결을 끊는 방법에는 두 가지가 있습니다.
Timeout 프로퍼티를 사용할 수 있으며, Abandon 메소드를 호출해서 세션 연결을 끊을 수도 있습니다.
먼저, Timeout 프로퍼티에 대해 알아보죠.
Timeout 프로퍼티는 Session 객체에 지정된 제한 시간을 분 단위로 지정합니다. 사용자가 이렇게 지정한 제한 시간 내에 페이지를
새로 고치거나 요청하지 않으면 세션은 끝납니다.
<FONT face="Arial, Helvetica, sans-serif">
<% Session.Timeout = 20 %></FONT>
위에 예에서는 서버가 자동으로 종료되기 전에 세션이 상태로 남아 있을 수 있는 시간(분)으로 20분을 지정하였습니다.
Abandon 메소드는 Session 객체에 저장된 모든 객체를 삭제하고 리소스를 해제합니다. 이 Abandon 메서드를 명시적으로 호출하
지 않으면 세션이 시간 초과될 때 서버가 이들 객체를 삭제합니다.
<% Session.Abondon %>
Abondon 메소드에는 한가지 주의할 점이 있습니다. 다음에 기술되어 있는 IIS 5.0 설명서의 내용을 살펴보죠.</FONT>
<FONT face=바탕>Abandon 메소드를 호출하면 현재 페이지의 모든 스크립트 명령이 처리될 때까지는 실제로 삭제되지 않습니다.
즉, Abandon 메소드를 호출한 페이지에서는 Session 개체에 저장된 변수에 액세스할 수는 있지만 후속 웹 페이지에 있는 이 변수에는 액세스할 수 없다는 의미입니다.
예를 들면 다음 스크립트에서 세 번째 줄은 Mary 값을 인쇄합니다. 그 이유는 서버가 스크립트 처리를 끝낼 때까지는 Session 객체가 없어지지 않기 때문입니다.
<%
Session.Abandon
Session("MyName") = "Mary"
Reponse.Write(Session("MyName"))
%>
만일 후속 웹 페이지에서 MyName 변수에 액세스하면 이 변수는 비어 있습니다. 그 이유는 위 예제가 포함된 페이지가 다 처리되었을 때 MyName이 이전 Session 개체와 함께 없어졌기 때문입니다. </FONT>
<FONT color=#333366>
참고로, 한 세션을 취소한 후에 다음 웹 페이지를 열면 서버는 Session 객체를 새로 작성합니다. 이렇게 새로 작성된 Session 객체
에 변수와 객체를 저장할 수 있습니다.
Session 객체에 대한 강좌는 여기서 마치도록 하겠습니다. 그럼, 좋은 하루 되세요.</FONT></P></TD>
</TR>
|