관리 메뉴

I LOVE EJ

asp.net 1.1 part 13 (Session 내장 객체) 본문

Web Development/.NET

asp.net 1.1 part 13 (Session 내장 객체)

BeOne 2007. 10. 15. 15:52

우선 알립니다. 본 asp.net 내용은 제가 공부하기 위해 블로그에 넣은 것입니다. 그리고 우선 공개로 해놓은 상태입니다. 본 내용은 상업적인 용도로 쓰이지 않을 것이며 asp.net을 공부하는 곳에만 쓰시기 바라고 다른 용도로 쓰시지 마시길 바랍니다. 이 내용은 http://www.bullog.net/ 에서 끌어 왔음을 알려드립니다.http://www.bullog.net/운영자께서 공개를 원치 않을 시에는 비공개로 전환하겠습니다.

 

Session 속성

Page 클래스의 Session 속성은 System.Web.SessionState.HttpSessionState 클래스의 인스턴스 객체로서 현재 웹 응용 프로그램에 액세스하고 있는 사용자들이 각자 자신만의 데이터를 저장하거나 가져올 수 있는 읽기 전용의 속성입니다.


Session 객체는 Application 객체와 마찬가지로 사전 형식으로 데이터를 저장하고 있지만 웹 응용 프로그램에 액세스하고 있는 모든 사용자가 공유하는 전역 데이터가 아니라 각각의 사용자들이 독립적으로 사용할 수 있는 지역 데이터를 저장하는 격리된 저장 공간을 제공합니다.


앞서 살펴본 Application 객체가 가족들이 공유하는 화장실 같은 곳이었다면 Session 객체는 공중 목욕탕에 설치된 개인 락커이라고 생각하시면 됩니다.


이 락커에는 여러분의 옷이나 신발 등을 보관할 수 있으며 여러분 외에 다른 사람들은 이 락커를 열어 여러분의 물건에 손을 댈 수 없듯이 Session 객체에 저장된 데이터 역시 개발 사용자들만이 액세스할 수 있습니다.


그러면 Session 객체가 제공하는 속성들을 한 번 살펴볼까요?


Session 객체의 속성

CodePage 속성

이 속성은 현재 세션에 대한 코드 페이지 식별자를 설정하거나 가져오는 속성으로 응답이나 요청에 사용될 코드 페이지를 지정할 수 있습니다. 이 속성은 기존의 ASP와의 호환성을 위해 제공되는 속성입니다.


Contents 속성

기존의 ASP에서 사용하던 Session 객체와의 호환성을 위해 제공되는 속성으로 Session 객체에 대한 참조를 리턴합니다.


Count 속성

현재 세션에 저장된 데이터의 개수를 리턴합니다.


IsCookieless 속성

이 속성은 True 또는 False 중 하나의 값을 가지며 고유한 세션을 구별하기 위한 세션 ID가 쿠키에 저장되어 있으면 False 값을 가지며 세션 ID가 URL에 저장되어 있으면 True 값을 가집니다.

 

IsNewSession 속성

이 세션이 현재 요청에 의해 새롭게 생성된 것이면 True 값을 가지며 그렇지 않으면 False 값을 가집니다.

 

IsReadOnly 속성

현재 세션이 읽기 전용이면 True 값을 가지며 그렇지 않으면 False 값을 가집니다.

 

Item 속성

현재 세션에 저장되어 있는 전역 데이터를 키 또는 인덱스를 이용하여 참조하기 위한 속성입니다. 이 속성은 C#에서 인덱서로 구현되어 있으므로 다음과 같이 사용됩니다.

 

Session[index] 또는

Session[name]

 

Keys 속성

세션에 저장된 모든 값들의 키 이름에 대한 컬렉션을 가져옵니다.

 

LCID 속성

현재 세션에 대한 LCID (로케일 ID)를 가져오거나 설정하는 속성입니다. 이 속성 값은 현재 세션의 문화를 나타내는 CultureInfo 값입니다.

 

Mode 속성

이 속성은 현재 세션 상태 관리 모드를 가져오기 위한 속성으로 다음의 SessionStateMode 열거형 멤버 값 중 하나를 갖습니다.


멤버 이름

설명

InProc

기본 값이며 세션 상태가 ASP.NET 워커 프로세스에 의해 처리됩니다.

ASP.NET 워커 프로세스는 윈도 2000 윈도 XP에서는 aspnet_wp.exe이며 윈도 서버 2003에서는 w3wp.exe 입니다.

Off

세션 상태 관리가 비활성화되어 있습니다.

SQLServer

세션 상태가 SQL Server 데이터베이스를 이용해 관리됩니다..

StateServer

세션 상태가 다른 윈도 2000 서버를 이용해 관리됩니다.

 

SessionID 속성

고유한 세션을 식별하기 위한 세션 ID를 가져오는 속성입니다.

 

StaticObject 속성

Global.asax 파일안에 세션 범위 내에 선언된 객체의 컬렉션을 가져옵니다. 세션 범위 내에 객체를 선언하는 방법은 다음과 같습니다.

 

<object Runat=”Server” Scope=”Session”></object>

 

Timeout 속성

세션이 만료되는 시간 (분 단위)을 설정하거나 가져오기 위한 속성입니다. 예를 들어 이 속성 값을 10으로 설정하면 세션은 10분간 지속되며 10분간 사용자가 새로운 페이지 요청을 하지 않고 대기하면 세션은 자동적으로 파기됩니다.

 

Session 객체의 메서드

세션 객체가 제공하는 속성에 이어 메서드를 살펴보도록 하겠습니다.

 

Abandon 메서드

이 메서드는 현재 세션을 파기합니다. 예컨데 사용자 로그인 정보를 세션에 저장하는 경우 로그 아웃을 위해 세션을 파기하고자 할 때 이 메서드를 호출합니다. 형식은 다음과 같습니다.

 

public void Abandon();

 

Add 메서드

이 메서드는 세션 객체에 새로운 데이터를 추가하는 메서드며 새로 추가되는 값은 컬렉션의 가장 마지막에 추가됩니다. Add 메서드의 형식은 다음과 같습니다.

 

public void Add(string name, object value);


name 인자는 새로 추가될 값에 대한 키 이름이며, value 인자는 컬렉션에 새로 추가될 값입니다.

 

Clear 메서드

이 메서드는 세션에 저장된 모든 값들을 제거합니다. 형식은 다음과 같습니다.

 

public void Clear();

 

CopyTo 메서드

이 메서드는 현재 세션에 저장된 값의 컬렉션을 1차원 배열로 복사하는 메서드로 형식은 다음과 같습니다.

 

public virtual void CopyTo(Array array, int index);


array인자는 세션 데이터를 저장할 배열이며, index 인자는 세션 데이터가 채워지기 시작할 array 배열의 인덱스입니다. index인자가 0이면 array 배열의 첫 번째 원소부터 세션 데이터가 채워집니다.

 

Remove 메서드

이 메서드는 세션 객체에 저장된 값들의 키 이름을 통해 해당 데이터를 세션 객체로부터 제거하는 메서드입니다. 형식은 다음과 같습니다.

 

public void Remove(string name);


name 인자는 세션에서 제거할 데이터의 키 이름입니다.

 

RemoveAll 메서드

이 메서드는 세션 객체에 저장된 값들을 모두 제거하는 메서드며 형식은 다음과 같습니다.

 

public void RemoveAll();

 

RemoveAt 메서드

이 메서드는 세션 객체에 저장된 값들을 인덱스를 이용해 제거하기 위한 메서드며 형식은 다음과 같습니다.

 

public void RemoveAt(int index);


index 인자는 세션으로부터 제거할 데이터의 인덱스입니다.

이상으로 세션 객체의 속성과 메서드 목록을 살펴보았습니다.

 

세션 객체 사용 예제

Application 객체의 예제와 마찬가지로 간단한 세션 활용 예제를 구현해 보도록 하겠습니다. 먼저 소스부터 살펴볼까요?


1

<%@ Page Language="C#" %>

2

<html>

3

        <head>

4

               <title>HttpSessionState class</title>

5

               <script language="C#" runat="server">

6

                       void Page_Load(object sender, EventArgs e) {

7

                              //Session 객체에 10개의 값을 추가합니다.

8

                             

9

                              for (int i=0;i<10;i++) {

10

                                      string name = "Item" +

                                        i.ToString();

11

                                      int item = i;

12

                                      Session.Add(name, item);

13

                              }

14

                             

15

                              //Item 속성을 이용해 Session 객체에 저장된

16

                              //데이터들을 출력합니다.

17

                              for (int i=0;i<Session.Count;i++) {

18

                                    Response.Write(Session.Keys.Get(i));

19

                                    Response.Write(" : ");

20

                                    Response.Write(Session[i]);

21

                                    Response.Write("<br>");

22

                              }

23

                             

24

                              Session.Abandon();

25

                       }

26

               </script>

27

        </head>

28

        <body>

29

        </body>

30

</html>


소스를 보면 아시겠지만 앞서 구현했던 Application 객체 활용 예제와 거의 비슷하므로 코드에 대한 설명은 생략하도록 하겠습니다. 이 예제의 실행 결과는 아래 그림과 같습니다.



'Web Development > .NET' 카테고리의 다른 글

개발자가 알아두면 좋은 ASP.NET 지식 (connection pool)  (0) 2009.01.06
[ASP.NET]다운로드 팁  (1) 2007.10.15
ASP.NET으로 메일 보내기  (0) 2007.10.15
ASP.NET 메일보내기  (0) 2007.10.15
파일업로드 처리  (0) 2007.10.15