ASP Session 객체
- 이전 페이지 ASP 쿠키
- 다음 페이지 ASP 애플리케이션
세션 객체는 사용자 정보를 저장하기 위해 사용됩니다. 세션 객체에 저장된 변수는 단일 사용자 정보를 가지고 있으며, 모든 페이지에서 사용할 수 있습니다.
세션 객체
당신이 어떤 애플리케이션을操作할 때, 그 애플리케이션을 열고 변경을 가하고 그 애플리케이션을 닫습니다. 이는 한 번의 대화(세션)와 매우 비슷합니다. 컴퓨터는 누구인지 알고 있으며, 애플리케이션을 언제 열고 닫았는지 명확히 알고 있습니다. 하지만 인터넷에서는 문제가 있습니다: HTTP 주소가 상태를 유지할 수 없기 때문에, 웹 서버는 누구인지 그리고 무엇을 했는지 모릅니다.
ASP는 각 사용자마다 독특한 쿠키를 생성하여 이 문제를 해결합니다. 쿠키는 클라이언트로 전송되며, 사용자를 인식할 수 있는 정보를 포함하고 있습니다. 이 인터페이스는 세션 객체로 불립니다.
세션 객체는 사용자에 대한 정보를 저장하거나, 사용자의 세션 변경 설정을 위해 사용됩니다. 세션 객체에 저장된 변수는 단일 사용자의 정보를 가지고 있으며, 애플리케이션의 모든 페이지에서 사용할 수 있습니다. 세션 객체에 저장된 정보는 일반적으로 이름, ID 및 매개변수입니다. 서버는 새 사용자마다 새 세션을 생성하고, 세션이 만료될 때 해당 세션 객체를 취소합니다。
세션이 언제 시작됩니까?
세션이 언제 시작됩니까?
- 새 사용자가 ASP 파일을 요청했을 때, Global.asa 파일이 Session_OnStart 서브프로그램을 참조할 때;
- 세션 변수에 값이 저장될 때;
- 사용자가 ASP 파일을 요청했을 때, Global.asa가 <object> 태그를 통해 세션의 범위를 사용하여 객체를 인스턴스화할 때;
세션이 언제 종료됩니까?
사용자가 지정된 시간 내에 애플리케이션에서 요청이나 페이지를 새로고침하지 않으면 세션이 종료됩니다. 기본 값은 20분입니다。
만약 초과 시간 간격을 더 길게나 더 짧게 설정하고 싶다면 다음을 설정할 수 있습니다 Timeout 속성。
아래의 예제는 5분의 초과 시간 간격을 설정합니다:
<% Session.Timeout=5 %>
세션이 즉시 종료되도록 하려면 다음을 사용할 수 있습니다 Abandon 메서드:
<% Session.Abandon %>
주의:세션을 사용할 때 주요 문제는 그들이 언제 끝날지입니다. 최근의 사용자 요청이 마지막 요청인지 알 수 없기 때문에, 세션이 얼마나 오래 "생존"해야 할지 알 수 없습니다. 비활성 세션이 너무 오래 기다려지면 서버 자원이 소모됩니다. 그러나 세션이 너무 일찍 제거되면, 사용자는 모든 정보가 서버에서 제거되었기 때문에 다시 시작해야 합니다. 적절한 초과 시간 간격을 찾는 것은 어려운 일입니다。
훌륭한 팁:세션 변수를 사용할 때는 많은 데이터를 저장하지 마세요。
세션 변수 저장 및 가져오기
세션 객체의 가장 큰 장점은 그 안에 변수를 저장하여 이후의 웹 페이지에서 읽을 수 있도록 할 수 있으며, 그 적용 범위는 매우 넓습니다。
아래의 예제는 "Donald Duck"을 username이라는 세션 변수에 할당하고, "50"을 age라는 세션 변수에 할당합니다:
<% Session("username")="Donald Duck" Session("age")=50 %>
세션 변수에 값이 저장되면, ASP 애플리케이션의 어떤 페이지에서도 사용할 수 있습니다:
Welcome <%Response.Write(Session("username"))%>
이 줄의 프로그램 결과는: "Welcome Donald Duck"입니다。
세션 객체에 사용자 매개변수를 저장하고 이 매개변수를 통해 사용자에게 반환할 페이지를 결정할 수도 있습니다。
다음 예제에서 사용자가 낮은 디스플레이 해상도를 사용할 때, 원시 텍스트 버전의 페이지를 반환합니다:
<%If Session("screenres")="low" Then%> 이 페이지는 텍스트 버전입니다 <%Else%> 이 페이지는 멀티미디어 버전입니다 <%End If%>
세션 변수 제거
컨텐츠 컬렉션은 모든 세션 변수를 포함하고 있습니다。
remove 메서드를 사용하여 세션 변수를 제거할 수 있습니다。
다음 예제에서 세션 변수 "age"의 값이 18보다 작을 때, 세션 변수 "sale"를 제거합니다:
<% If Session.Contents("age")<18 then Session.Contents.Remove("sale") End If %>
세션에서 모든 변수를 제거하려면 RemoveAll 메서드를 사용하십시오:
<% Session.Contents.RemoveAll() %>
컨텐츠 컬렉션을 순회합니다
컨텐츠 컬렉션은 모든 세션 변수를 포함하고 있습니다. 컨텐츠 컬렉션을 순회하면 저장된 변수를 확인할 수 있습니다:
<% Session("username")="Donald Duck" Session("age")=50 dim i For Each i in Session.Contents Response.Write(i & "<br />") Next %>
결과:
username age
세션 컨텐츠 컬렉션의 항목 수를 알고 싶다면 count 속성을 사용할 수 있습니다:
<% dim i dim j j=Session.Contents.Count Response.Write("세션 변수: " & j) For i=1 to j Response.Write(Session.Contents(i) & "<br />") Next %>
결과:
세션 변수: 2 돈닥크 50
StaticObjects 콜렉션을 순회합니다
StaticObjects 콜렉션을 반복하여 session 객체에 저장된 모든 객체의 값을 확인할 수 있습니다:
<% dim i For Each i in Session.StaticObjects Response.Write(i & "<br />") Next %>
- 이전 페이지 ASP 쿠키
- 다음 페이지 ASP 애플리케이션