질문: 세션을 파괴하는 방법은 무엇입니까?
세션은 우리에게 없어서는 안 될 배경 기술로 주로 HTTP 프로토콜의 Stateless 특성을 해결하는 것으로 나타나며, 저장과 관련하여 자주 발생하는 사용자 상태의 저장 문제를 해결하는 데 사용됩니다. 시간 문제로, 파기 방법을 살펴보겠습니다.
기본 시간 만료
만료 시간을 직접 설정
즉시 만료
브라우저 닫기
서버 종료
클라이언트가 처음으로 서블릿을 요청하고 세션을 운영하면
Tomcat을 예로 들면 Tomcat에서 세션의 기본 생존 시간인 세션 객체가 생성됩니다.
30분, 즉 인터페이스를 조작하지 않는 시간입니다. 조작이 있으면 세션이 재설정됩니다. 그럼 기본 세션 시간을 변경할 수 있나요? 대답은 '예'입니다. 이는
Tomcat의 web.xml 파일에서 수정할 수 있습니다. 아래와 같이:
물론 위의 수정 방법 외에도 session.setMaxInactiveInterval(int)을 사용하여 프로그램의 최대 비활성 시간을 설정함으로써 프로그램에서 세션 수명 주기를 설정할 수도 있습니다. 세션 단위는 초입니다.
HttpSession session=req.getSession(); session.setMaxInactiveInterval(5)
물론 getMaxInactiveInterval( ); 방법 .
또는 session.invalidate() 메서드를 사용하여 세션을 즉시 무효화할 수도 있습니다.
session.invalidate();
세션의 맨 아래 계층은 쿠키 구현에 의존합니다.
다른 사용자가 액세스할 때 어떤 세션이 사용되는지 결정해야 하기 때문입니다. 서버이므로 사용자가 처음으로 서버에 접속할 때
쿠키를 통해 사용자 측에 세션 ID가 저장되는 경우가 많으며, 해당 쿠키는 브라우저가 닫힐 때까지 유효하므로 세션이 브라우저가 닫힐 때 유효하지 않은 것과 같습니다(해당하는
세션 ID가 없기 때문입니다). 아래 그림과 같이 브라우저를 닫았다가 다시 열면 다시 브라우저에 세션 ID가 할당됩니다.
쿠키만 만료되었다는 점에 유의하세요. 다시 방문하면 서버가 귀하를 새로운 사용자로 간주하여 이전 세션 개체를 파기하지 않고 세션을 생성하는 것과 같습니다.
서버가 비정상적으로 종료되면 세션이 소멸되고, 서버가 정상적으로 종료되면 해당 세션은 워크스페이스의 작업 디렉터리에 있는 SESSION.ser 파일에 디스크로 직렬화됩니다. 세션에서 개체가 저장되면 서버는 종료 시 개체를 하드 디스크에 직렬화해야 합니다. 이 개체는 직렬화 가능 인터페이스를 구현해야 하며 다음에 서비스가 시작될 때 자동으로 메모리에 로드됩니다. 아래 그림과 같이 정상 종료 후 폴더에 SESSIONS.ser 파일이 추가로 존재하는 것을 확인할 수 있으며, 서버를 다시 시작하면 해당 파일은 사라집니다.
사진에서 쿠키의 이름과 내용을 보는 것 외에도 만료 시간이라는 한 가지 정보에 주의해야 합니다. 만료 시간은 쿠키가 만료되는 시기를 지정하는 데 사용됩니다.
기본적으로 현재 브라우저가 닫히면 만료됩니다. 쿠키의 유효 시간(만료 시간을 통해 계산)을 수동으로 설정하고 setMaxAge(int expiry) 메소드를 통해 쿠키의 최대 유효 시간을 초 단위로 설정할 수 있습니다.
0보다 큰 정수로, 저장 시간(초)을 나타내며, 음수이면 쿠키가 저장되지 않음을 의미하고, 0이면 쿠키가 삭제됩니다.
음의 정수: 쿠키의 maxAge 속성 기본값은 -1입니다. 즉, 브라우저 창이 닫히면 쿠키가 사라집니다.
양의 정수: 쿠키 개체가 지정된 시간(초) 동안 유지될 수 있음을 나타냅니다. 수명이 0보다 크면 브라우저는 쿠키를 하드 디스크에 저장합니다. 브라우저를 닫거나 클라이언트 컴퓨터를 다시 시작하더라도 쿠키는 해당 기간 동안 유지됩니다.
0: 쿠키 수명이 0인 특별한 값은 쿠키가 무효화되었음을 의미합니다! 즉, 원래의 브라우저가 쿠키를 저장해 두었다면, 쿠키의 setMaxAge(0)를 통해 쿠키를 삭제할 수 있습니다. 이 쿠키는 브라우저 메모리와 클라이언트 하드 드라이브 모두에서 삭제됩니다.