ASP 내장 객체 - Session 객체(2)

출처 : http://www.hompydesign.com/bbs/board.php?bo_table=asp_study&wr_id=130

지난 강좌에 이어 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 &amp; 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>

Table of contents 목차

평점을 남겨주세요
평점 : 2.5
총 투표수 : 1