예전에는 공부할 땐 별 신경을 안 썼는데, 오늘은 돌아가서 Session의 생명주기를 꼼꼼히 공부했어요.
Session은 서버 측에 저장됩니다. 일반적으로 (고속 접속을 위해) 서버의 메모리에 저장되는 것을 방지하기 위해 사용자가 처음 서버에 접속할 때 Session이 생성되어야 합니다. 세션은 JSP, 서블릿 및 기타 프로그램에 액세스할 때만 생성되며 HTML 및 IMAGE와 같은 정적 리소스에 액세스하는 경우에만 세션을 생성하기 위해 request.getSession(true)을 호출할 수 있습니다.
세션은 언제 만료되나요?
1. 서버는 장기간 비활성 상태인 Session을 서버 메모리에서 삭제하며 이때 해당 Session은 무효화됩니다. Tomcat에서 세션의 기본 만료 시간은 20분입니다.
2. Session의 무효화 메소드를 호출합니다.
세션 브라우저 요구 사항:
세션이 서버에 저장되고 클라이언트에 투명하지만 정상적인 작동에는 여전히 클라이언트 브라우저의 지원이 필요합니다. 이는 Session이 Cookie를 식별 표시로 사용해야 하기 때문입니다. HTTP 프로토콜은 Stateless이며 Session은 HTTP 연결을 기반으로 동일한 클라이언트인지 확인할 수 없습니다. 따라서 서버는 JSESSIONID라는 쿠키를 클라이언트 브라우저에 보내고 그 값은 Session의 ID입니다. HttpSession.getId() 반환 값). 세션은 이 쿠키를 사용하여 동일한 사용자인지 확인합니다.
이 쿠키는 서버에 의해 자동으로 생성됩니다. maxAge 속성은 일반적으로 -1입니다. 즉, 현재 브라우저 내에서만 유효하며 브라우저를 닫으면 무효화됩니다. 따라서 동일한 시스템에 있는 두 개의 브라우저 창이 서버에 액세스하면 두 개의 서로 다른 세션이 생성됩니다. 단, 브라우저 창 내에서 링크, 스크립트 등으로 열리는 새 창(즉, 데스크톱 브라우저 아이콘 등을 더블클릭해도 열리지 않는 창)은 제외됩니다. 이 유형의 하위 창은 상위 창의 쿠키를 공유하므로 세션을 공유합니다.참고: 새로 열린 브라우저 창은 하위 창을 제외하고 새 세션을 생성합니다. 하위 창은 상위 창의 세션을 공유합니다. 예를 들어, 링크를 마우스 오른쪽 버튼으로 클릭하고 팝업 바로 가기 메뉴에서 "새 창에서 열기"를 선택하면 하위 창에서 상위 창의 세션에 액세스할 수 있습니다.
클라이언트 브라우저가 쿠키 기능을 비활성화하거나 쿠키를 지원하지 않는 경우 어떻게 해야 하나요? 예를 들어, 대부분의 모바일 브라우저는 쿠키를 지원하지 않습니다. Java Web은 또 다른 솔루션인 URL 주소 재작성을 제공합니다.
URL 주소 재작성은 쿠키를 지원하지 않는 클라이언트를 위한 솔루션입니다. URL 주소 재작성 원칙은 사용자의 세션 ID 정보를 URL 주소에 재작성하는 것입니다. 서버는 다시 작성된 URL을 구문 분석하여 세션 ID를 얻을 수 있습니다. 이렇게 하면 클라이언트가 Cookie를 지원하지 않더라도 Session을 이용하여 사용자의 상태를 기록할 수 있습니다. HttpServletResponse 클래스는 URL 주소 재작성을 구현하기 위해 encodeURL(문자열 url)을 제공합니다. 이 메소드는 클라이언트가 쿠키를 지원하는지 자동으로 결정합니다. 클라이언트가 쿠키를 지원하는 경우 URL은 그대로 출력됩니다. 클라이언트가 쿠키를 지원하지 않으면 사용자의 세션 ID가 URL에 다시 작성됩니다.
참고: TOMCAT은 요청에 쿠키가 포함되어 있는지 여부에 따라 클라이언트 브라우저가 쿠키를 지원하는지 여부를 결정합니다. 클라이언트가 쿠키를 지원할 수 있더라도 첫 번째 요청에서는 쿠키가 전달되지 않으므로(전달할 쿠키가 없기 때문에) 다시 작성된 URL 주소에는 여전히 jsessionid가 포함됩니다. 두 번째로 접속할 때 서버는 이미 브라우저에 쿠키를 작성했기 때문에 다시 작성한 후의 URL 주소에는 jsessionid가 포함되지 않습니다.
위 내용은 세션 수명주기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!