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

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

이번 강좌에선 Session 객체에 대해 살펴보도록 하겠습니다.

      Session은 사용자와 컴퓨터 또는 두 대의 컴퓨터간의 활성화된 접속을 의미하며, 이런 세션에 관한 모든 것을 처리하는 것이 바로 Session 객체입니다. 이전 강좌에서 살펴본 Application 객체가 응용 프로그램(웹 사이트)의 전체를 지배하며, Application 변수는 누구나 접근, 수정이 가능하다면, Session은 클라이언트마다 각각 할당되는 고유의 것으로 생각하면 됩니다. 
      일단 Session 객체 사용에 대한 자세한 내용에 대해서는 IIS 5.0 설명서의 세션 관리를 참고하도록 하겠습니다.</FONT>
      <FONT face=바탕체>
      ▶<B> 세션 관리</B>
      
      성공적인 웹 응용 프로그램 개발에 있어 어려운 과제 중 하나는 사용자가 응용 프로그램의 여러 페이지 간을 이동할 때 
      방문, 또는 세션에 대한 <B>사용자 정보를 유지 관리하는 것</B>입니다. <B>HTTP는 상태를 구별하지 않는 프로토콜</B>이며 이것은 <B>
      웹 서버가 페이지에 대한 각 HTTP 요청을 독립 요청으로 취급</B>한다는 의미입니다. 즉, <B>이전 요청이 발생한 지 불과 
      몇 초 후에 현재 요청이 발생하더라도 서버에는 이전 요청에 대한 정보가 남지 않습니다. </B>이전 요청을 기억하지 못
      하는 것은 온라인 카탈로그와 같이 사용자가 카탈로그의 여러 페이지 간을 이동하는 동안 선택한 카탈로그 항목을 추적할 필
      요가 있는 응용 프로그램을 쓰기 어렵다는 것을 의미합니다.
      
      ASP는 세션 정보 관리 문제에 대한 유일한 솔루션을 제공합니다. 서버에 의해 생성된 특정 사용자 ID와 ASP Session 개체를 사용하여 방문한 각 사용자를 식별하는 지능적인 응용 프로그램을 만들고 정보를 수집하면 응용 프로그램은 이러한 정보를 사용하여 사용자 기본 설정과 선택을 추적할 수 있습니다. 
      
      <B><FONT color=#0000ff>중요</FONT></B>
      ASP는 사용자 브라우저에 저장된 작은 파일인 HTTP 쿠키를 사용하여 사용자 ID를 할당합니다. 따라서 쿠키를 지원하지 않는 브라우저용 응용 프로그램을 만들거나 고객이 쿠키를 거부하도록 브라우저를 설정한다면 APS의 세션 관리 기능을 사용하지 말아야 합니다. 
      </FONT>
      <FONT color=#333366>위의 설명대로 비연결 지향적인 HTTP 프로토콜의 ASP 기반 애플리케이션에서도 Session 객체를 사용하면 특정 사용자 세션에 필요한 정보를 저장할 수 있습니다. 
      또한, 이렇게 Session 객체에 저장된 변수는 사용자가 응용 프로그램(웹 사이트)에서 페이지 사이를 이동할 때 버려지지 않는 특징이 있습니다. 즉, 이들 Session 객체는 사용자가 웹 서버와 연결이 지속되는 동안 계속 유지됩니다.
      일반적으로 세션은 응용 프로그램에서 아직 세션을 가지고 있지 않은 사용자가 웹 페이지를 요청하면 웹 서버는 자동으로 Session 객체를 작성하며, 서버에서 세션이 만료되거나 중단될 때 Session 객체를 없앱니다. 
      주의할 점은 사용자가 브라우저를 닫는다고 해서 Session이 끝나는 것이 아닙니다. 현재의 브라우저를 종료하고 다른 브라우저를 실행한 경우에만 세션이 종료됩니다. 세션종료에 대해서는 다시 살펴보도록 하겠습니다.
      
      그리고, 위의 설명에서도 [중요] 표시가 되어 있지만, 세션은 쿠키의 일종이며, ASP에서는 클라이언트 브라우저에 저장된 작은 쿠키를 사용하여 그 사용자에게 고유한 Session ID를 할당하기 때문에 쿠키를 지원하지 않는 브라우저인 경우 또는, 클라이언트가 쿠키를 거부하도록 브라우저를 설정한 경우라면 ASP의 세션기능을 사용할 수 없습니다.</FONT> <FONT color=#333366>
      단, 세션값은 서버에 저장이 되어지는 반면, 쿠키는 클라이언트에 저장되는 차이가 있다는 점에 염두해 두어야 합니다.</FONT>
      
  <FONT color=#333366>이제 Session 객체에서 제공하는 컬렉션, 메소드, 이벤트 들을 하나하나 알아보도록 하지요. </FONT></P></TD>
</TR>

종 류

설 명

컬렉션

Contents

스크립트 명령을 통해 Session에 추가된 모든 항목을 포함

StaticObjects

태그와 지정된 세션 영역으로 작성된 개체를 포함 </FONT>

속 성

CodePage

기호 매핑에 사용되는 코드 페이지

LCID

로케일 식별자

SessionID

사용자에 대한 세션 ID를 반환

Timeout

응용 프로그램의 세션 상태에 대한 시간 제한 값(분으로 표시)

메서드
Abandon Session 개체를 없애고 리소스를 해제
Contents.Remove Contents 컬렉션에서 항목을 삭제
Contents.RemoveAll Contents 컬렉션에서 모든 항목을 삭제
이벤트
Session_OnStart

이벤트용 스크립트는 Global.asa 파일에서 선언, 이들 이벤트와 Global.asa 파일에 대한 내용은 [Global.asa 파일 참조] 강좌 참고

Session_OnEnd
세션의 시작과 종료
    Session이 시작될 경우는 Application에 접속하는 순간 즉, 브라우저가 웹 서버에 처음 페이지를 요구했을 때 입니다.
    이렇게 세션이 시작되는 순간 ASP는 global.asa에 있는 Session_OnStart 이벤트에 있는 스크립트를 시작합니다. 만약 정의된 스크립트가 없다면 아무것도 실행하지 않습니다.
    
    종료는 다음과 같은 경우에 해당합니다. 
    </FONT>
    <UL>
      <LI><FONT color=#333366>다른 페이지로의 이동없이 한 페이지에만 머물러 Session.Timeout(디폴드로 20분)이 초과한 경우 </FONT>
      <LI><FONT color=#333366>Session.Abandon 메서드가 호출된 경우</FONT>
      <LI><FONT color=#333366>사용자가 브라우저를 닫고 다른 브라우저를 실행한 경우</FONT>
      <LI><FONT color=#333366>Global.asa 파일을 편집한 후 저장했을 경우 </FONT>
      <LI><FONT color=#333366>Web Server가 종료된 경우 </FONT></LI>
    </UL>
    <FONT color=#333366>참고로, 세션 시간 제한이 너무 길어지면 세션을 너무 많이 열게 되어 서버의 메모리 리소스가 낭비될 수 있다고 IIS 5.0 설명서에 기술되어 있더군요. 참고하시기 바랍니다.
    
  "ASP 내장 객체 - Session 객체" 강좌는 계속 됩니다. 그럼, 좋은 하루 되세요.</FONT></TD>
</TR>

Table of contents 목차

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