2010-05-21 2 views
0

web.xml에 서블릿이 정의 된 웹 응용 프로그램이 있다고 가정합니다.서블릿 세션 동작 및 Session.invalidate

그런 다음 Tomcat에 배포합니다.

그런 다음 브라우저를 열고이 서블릿에 대한 링크로 이동하면 호출됩니다.

그런 다음 브라우저 창을 닫습니다.

어떻게 세션이 동작합니까?? 이 경우 어떻게 만들어지고 파괴됩니까?

모든 웹 응용 프로그램에서이 서블릿을 "분리"하고 게시 & get 만 사용하여 매개 변수를 가져 오는 경우 DoGet(), doPost의 끝에 Session.invalidate를 사용해야하는 경우 Session이 필요하지 않습니다.()?

답변

3

서블릿 컨테이너는 (1) HTTP 쿠키를 사용하거나 (2) 각 URL에 추가 매개 변수 jsessionid을 추가하여 세션을 추적합니다.

사용자가이 사이트에 액세스하고 이미 세션이 없으면 그에 해당하는 새로운 HttpSession을 포함하여 새 세션이 생성됩니다. 필요한 경우 사용자가 로그인 페이지로 리디렉션 될 수 있습니다.

Session.invalidate의 효과는 기본적으로 다음과 같습니다. "이 사용자의 현재 세션을 버리십시오. 사이트의 다른 페이지에 액세스하면 새 세션이 만들어집니다".

지금까지 내가 알고있는 세션 무효화는 일반적으로 로그 아웃 기능을 구현하는 데 사용됩니다.

"분리 된"서블릿에 Session.invalidate을 호출하지 않으면 다른 페이지를 방해합니다. 기본적으로 서블릿의 세션은 상관하지 않으며 어쨌든 사용하지 않습니다.

이 질문은 disabling the session 일 수도 있습니다.

3

그런 다음 브라우저 창을 닫습니다. 세션의 작동 방식 이 경우 어떻게 만들어지고 파괴됩니까?

응답이 클라이언트에서 수신되기 전에도 브라우저가 닫히면 어떻게됩니까?

그런 경우 서버에 Session이 계속 만들어집니다. 지정된 기간 동안 지속 된 후 만료됩니다.

브라우저의 다음 요청은 새로운 Session을 생성합니다. 여기에 더 자세히보기 : http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpSession.html

session.invalidate 관련 - ewernli는 이미 대답했습니다.

+0

그래,하지만 특정 기간 후에 1000 세션이 만료 될 필요는 없습니다. 나는 단순히 그것을 필요로하지 않는다는 것을 알고 있으며, 각 요청에 대해 만들어진다면 비즈니스 로직 방법이 끝난 후에 수동으로 파기하는 것이 완벽 할 것입니다. – EugeneP

+0

서블릿이 실제로 무엇을하는지에 따라 다릅니다. 사용자가 사이트를 계속 여행하지 않습니까? 이 경우 HttpSession은 아무 것도 저장하지 않으므로이 경우 매우 가벼우 며 1KB 미만입니다. 따라서 서버에 중대한 영향은 없습니다. – JoseK

관련 문제