ASP (Active Server Pages) 기술의 세션 객체는 대화 중에 사용자의 개인 정보를 저장하는 데 사용됩니다. 현재 사용자의 세션 객체에 정의 된 변수 및 객체는 페이지간에 공유 할 수 있지만 ASP를 사용하여 웹 애플리케이션을 개발할 때는 사용자를 저장하고 추적하는 데 사용될 수 있습니다. 상태 정보.
세션 객체에는 매우 중요한 속성이 있습니다. 시간 초과는 세션 리소스가 릴리스되기 전에 세션 객체가 비활성 상태로 유지 될 수있는 시간을 설정하는 데 사용됩니다 (기본값은 20 분). 타임 아웃 속성에 의해 설정된 시간 값이 소진되면 세션 리소스가 릴리스됩니다. 제한없이 서버에서 생성되는 세션 객체를 피하고 서버 리소스를 보호하는 것을 피하고 시간 초과 속성을 통해 세션 객체를 파괴하십시오. 그러나 실제 네트워크 개발에서 세션 객체의 실패 및 사용자 상태 정보 손실로 인해 신청 프로세스가 정상적으로 완료 될 수없는 경우가 종종 있습니다.
타임 아웃 속성을 사용하여 리소스를 공개하는 전략은 서버를 보호하기위한 것이지만 세션 객체의 예측할 수없는 실패는 응용 프로그램 개발에 불리한 점이되었습니다. 따라서 실제 응용 프로그램의 개발에서 세션 객체 고장 문제를 해결해야합니다.
전통적인 솔루션
기존 솔루션은 모두 서버 측 메소드를 사용하여 세션 객체 고장 문제를 해결하는 것입니다. 전형적인 치료 방법은 두 가지 범주로 나뉩니다. 실패 전 치료 및 실패 후 치료.
실패 전 처리는 세션 객체가 발생하기 전에 만료되기 전에 변수의 전송 및 기타 변수 처리를 말합니다. 일반적인 솔루션은 애플리케이션에서 타이머를 설정하고 세션 객체가 실패하기 5 분 전에 타이머를 트리거 한 다음 세션 객체의 다양한 변수 및 객체를 재설정하는 것입니다. 이 방법은 서버 측에서 타이머를 실시간으로 유지해야하므로 서버에 추가로드를 추가하고 세션 내내 프로그램을 활성화해야합니다.
실패 후 처리는 세션 객체가 만료 된 직후에 사용자가 처리하도록 유도하는 것을 의미합니다. 일반적인 솔루션은 세션 객체가 실패한 후 서버 측에 중단 점을 저장하고 사용자가 다시 로그인하고 작업을 계속 완료하도록 자극하는 것입니다. 이 방법은 구현하기가 간단하지만 종종 중단 점의 자동 복구와 다시 로그 인 프로세스의 복잡성으로 인해 최종 사용자가 불평하고 비판합니다.
위의 두 가지 유형의 솔루션의 단점에 따라 프로그래밍 연습에서 저자는 쿠키 객체의 특성을 결합하고 클라이언트의 세션 수준 변수에 공동으로 액세스하는 방법을 사용하여 서버에 대한 추가 수요를 피할뿐만 아니라 리소스는 또한 브레이크 포인트 문제가 자동으로 복원되지 않는 문제를 해결하고 로그인하는 문제도 제거됩니다.
새로운 솔루션
쿠키 객체는 브라우저와 웹 서버 사이에 전달할 수있는 현재 사용자에 대한 데이터를 저장하는 작은 정보 패킷입니다. 웹 응용 프로그램에서 쿠키는 각 사용자 위치를 추적하고 기록하는 메커니즘을 제공합니다. 쿠키의 가장 일반적인 용도 중 하나는 웹 애플리케이션 또는 방문 할 URL에 방문 할 마지막 웹 페이지의 시간과 날짜를 저장하는 것입니다.
일반적으로 쿠키 객체는 클라이언트 Windows 시스템 디렉토리의 쿠키 서브 디렉토리에 파일로 저장됩니다. 쿠키 객체에 저장된 정보 데이터는 오랫동안 저장 될 수 있으므로 세션 객체가 유효하지 않은 후에는 세션 수준 변수를 백업 할 수 있습니다. 쿠키 개체.
쿠키 객체에는 다음과 같은 속성이 있습니다.
● 만료 : 쿠키 객체가 만료되는 날짜를 설정합니다.
● 도메인 : 도메인 속성에 의해서만 결정된 멤버로서 쿠키 개체의 전송을 결정합니다.
● 경로 : 쿠키 객체의 전달 경로를 결정하십시오.
● 보안 : 쿠키 객체가 안전한지 여부를 명확히합니다.
● Haskeys : 쿠키 객체에 여러 값이 포함되어 있는지 여부를 반환합니다.
쿠키 객체의 만료 속성이 명시 적으로 정의되지 않으면 쿠키 객체는 사용자 세션이 끝날 때 만료됩니다.
ASP의 요청 수집 및 응답 컬렉션을 통해 객체를 읽고 쓰십시오. 쿠키 객체에 변수를 쓰는 구문은 다음과 같습니다.
응답 .cookies (쿠키) [(키) | .attribute] = value
여기서 쿠키는 쿠키 파일 이름이고 키는 사전 요소를 나타내고 속성은 쿠키의 특정 특성이며 쿠키에 할당 된 값입니다. 예를 들어, MyHobby라는 쿠키를 만들고 다음에 가치를 지정하려면 다음과 같은 가치를 지정하려면 다음 구문을 사용하십시오.
< %response.cookies (myHobby) = 농구 %>
클라이언트 컴퓨터에서 쿠키 객체를 읽는 방법은 다음과 같습니다.
request.cookies (쿠키) [(키) | .attribute]
그중에서도 쿠키는 요청 된 쿠키의 이름이며, 키는 하위 키 값의 첨자이며, 속성은 쿠키 속성을 나타내는 데 사용됩니다. 예를 들어 : MyHobby라는 쿠키에서 정보를 추출하고 페이지에 값을 쓰려면 다음 구문을 사용하십시오.
< % request.cookies (myHobby) %>
HTTP 페이지가 요청 브라우저로 전송 된 후 HTTP 페이지 헤더는 쿠키 객체에 기록 할 수 없습니다. 즉, HTML 식별자가 브라우저로 전송 된 후에는 쿠키 정보를 브라우저로 전송할 수 없습니다.
특정 구현
다음은 Session Object 변수 실패 문제를 처리하는 방법을 소개하기위한 ASP 기술을 기반으로하는 대화방 구현입니다.
● 사용자 로그인하기 전에 초기 세션 수준 변수 : 사용자 이름 (로그인 사용자 이름을 저장하는 데 사용).
<%세션 (사용자 이름) =%>
// 쿠키 객체를 초기화합니다
< % response.cookies (사용자 이름) = %>
● 사용자가 로그인하면 세션 수준 변수를 설정하고 클라이언트 쿠키 객체로 백업합니다.
<%username = trim (request.for (username))%>
< % 세션 (사용자 이름) = username %>
// 세션 수준 변수를 클라이언트 쿠키 객체로 백업합니다
< % response.cookies (username) = username %>
● 사용자가 말하면 변수가 만료되면 쿠키 객체를 읽음으로써 세션 수준 변수의 속성 값이 복원됩니다.
< % username = session (username) %>
// 변수가 만료 된 경우 클라이언트 쿠키 개체를 검색하십시오.
username = then %> 인 경우 < %
< % username = request.cookies (username) %>
username = then %> 인 경우 < %
// 사용자가 로그인하지 않고 채팅방에 들어가면 쿠키 객체의 속성 값이 비어 있습니다. 현재 사용자는 오류가 있고 사용자 로그인 페이지로 전환하라는 메시지가 표시됩니다.
< %response.redirect error.html %>
< % else %>
// 쿠키 객체 에서이 세션 수준 변수를 복원합니다
< % 세션 (사용자 이름) = 사용자 이름 %>
< % 종료 if %>
< % 종료 if %>
● 사용자가 채팅방을 나가면 세션 수준 객체와 쿠키 객체를 지우십시오.
<%세션 (사용자 이름) =%>
// 쿠키 객체의 속성 값을 지우려면 사용자가 로그인하지 않고 채팅방에 들어가는 것을 피하십시오.
< % response.cookies (사용자 이름) = %>
위의 코드는 Windows NT 4.0 + IIS 4.0 + IE 5.0 환경에서 실행되고 전달됩니다.
요약
클라이언트의 세션 수준 변수에 액세스하는 방법은 간단하고 실용적이며 사용자의 강제 로그인과 같은 문제를 효과적으로 피할 수 있습니다.