이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 17168|회답: 1

[출처] 세션의 생애주기

[링크 복사]
게시됨 2015. 4. 19. 오후 7:44:59 | | |
이전에는 공부할 때는 별로 신경 쓰지 않았지만, 오늘은 다시 돌아가서 세션의 생애 주기를 꼼꼼히 공부했습니다.
세션은 서버 측에 저장되며, 일반적으로 서버 메모리에 저장되는 것을 방지하기 위해 (고속 접근을 위해) Sessinon은 사용자가 처음 서버에 접속할 때 세션을 생성합니다.JSP, Servlet 및 기타 프로그램에만 접근하면 세션이 생성되며, HTML이나 IMAGE와 같은 정적 자원에만 접근하면 세션이 생성되지 않는다는 점에 유의하세요.
  세션은 언제 만료되나요?
1. 서버는 오랫동안 비활성 상태였던 세션을 서버 메모리에서 삭제하여 세션이 무효가 됩니다. Tomcat 세션의 기본 만료 시간은 20분입니다.
2. 세션의 무효화 메서드를 호출합니다.
  브라우저 세션 요구사항:
 세션은 서버에 저장되며 클라이언트에게는 투명하지만, 정상적인 동작은 여전히 클라이언트의 브라우저 지원이 필요합니다. 이는 세션이 쿠키를 식별자로 사용해야 하기 때문입니다. HTTP 프로토콜은 상태 무서기이며, HTTP 연결로 세션이 동일 고객인지 판단할 수 없기 때문에, 서버는 JSESSIONID라는 쿠키를 클라이언트 브라우저에 보내는데, 이 쿠키는 세션의 id(즉, HttpSession.getId()의 반환 값)를 포함합니다. 세션은 쿠키를 사용해 동일 사용자인지 확인합니다.

이 쿠키는 서버에 의해 자동으로 생성되며, maxAge 속성은 보통 -1입니다. 이는 현재 브라우저에서만 유효하고 브라우저 창 간에 공유되지 않고, 브라우저가 닫히면 유효하지 않다는 의미입니다. 따라서 같은 기기에서 두 개의 브라우저 창이 서버에 접속할 때 두 개의 서로 다른 세션이 생성됩니다. 단, 브라우저 창 내에서 링크, 스크립트 등으로 열리는 새 창(즉, 데스크톱 브라우저 아이콘을 더블 클릭해서 열리는 창은 아님)은 예외입니다. 이 자식 창들은 부모 창의 쿠키를 공유하여 세션을 공유합니다.

참고: 새 세션은 새로 열린 브라우저 창에서 생성되며, 하위 창은 제외됩니다. 자식 윈도우는 부모 윈도우의 세션을 공유합니다. 예를 들어, 링크를 우클릭한 후 바로가기 메뉴에서 "새 창에서 열기"를 선택하면 자식 창은 부모 창의 세션에 접근할 수 있습니다.

클라이언트 브라우저가 쿠키를 비활성화하거나 쿠키를 지원하지 않는다면 어떻게 되나요? 예를 들어, 대부분의 모바일 브라우저는 쿠키를 지원하지 않습니다. Java Web은 또 다른 해결책을 제공합니다: URL 주소 재작성입니다.
URL 주소 재작성은 쿠키를 지원하지 않는 클라이언트를 위한 솔루션입니다. URL 주소 재작성의 원리는 사용자의 세션 ID 정보를 URL 주소로 다시 쓰는 것입니다. 서버는 다시 작성된 URL을 파싱하여 세션 ID를 얻을 수 있습니다. 이렇게 하면 클라이언트가 쿠키를 지원하지 않더라도 세션을 통해 사용자 상태를 기록할 수 있습니다. HttpServletResponse 클래스는 URL 주소 재작성을 구현하기 위한 encodeURL(문자열 URL)을 제공하며, 이는 클라이언트가 쿠키를 지원하는지 자동으로 결정합니다. 클라이언트가 쿠키를 지원한다면, URL은 그대로 출력됩니다. 클라이언트가 쿠키를 지원하지 않는 경우, 사용자 세션의 ID가 URL에 다시 기록됩니다.
참고: TOMCAT은 요청에 쿠키가 포함되었는지 여부에 따라 클라이언트 브라우저가 쿠키를 지원하는지 판단합니다. 클라이언트가 쿠키를 지원할 수는 있지만, 첫 번째 요청에서는 쿠키를 전달하지 않기 때문에(쿠키가 없기 때문에), 다시 작성된 URL 주소에는 여전히 jsessionid가 포함되어 있습니다. 서버는 두 번째 방문 시 이미 브라우저에 쿠키를 작성했기 때문에, 재작성된 URL 주소에는 jsessionid가 없습니다.





이전의:테이블 테두리를 얇은 선으로 바꾸는 HTML 트릭
다음:성능 최적화 ASP.NET 맞춤 파일 캐시를 구축하세요
게시됨 2017. 3. 18. 오후 4:52:21 |
정말 잘 쓰여 있어요, 배우세요!
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com