javax.servlet.http.HttpSession의 설명서에 혼란 스럽습니다.
은 말한다 :세션 개체 동작을 이해할 수 없습니다.
세션 여러 페이지 요청에서 상태 및 사용자의 신원을 유지하는 데 사용됩니다. 쿠키는 URL 재 작성을 통해 을 사용하여 세션을 유지 관리 할 수 있습니다.
이제 쿠키와 URL 재 작성 모두 서버의 응용 프로그램 코드 (예 : 코드)에 의해 처리됩니다.
는 그런 다음 세션이 new
로 간주되는 경우에 관한 말한다 :
서버는이 클라이언트가 합류 할 때까지 세션이 새 것으로 간주합니다. 클라이언트가 세션이 세 가지 사례 중 하나를 표시 할 수 있습니다 사실의 true.A 값을 반환 isNew 방법을 조인까지 :
1. 클라이언트가 아직 세션
2. 세션에 대해 알고하지 않습니다 아직
을 시작되지 않은 3. 클라이언트가 세션에 참가하지 않도록 선택합니다. 이 경우는 클라이언트가 쿠키 만 지원하고 서버가 보낸 쿠키 을 거부하도록 선택하면 발생합니다. 서버가 URL 재 작성을 지원하는 경우이 경우 은 일반적으로 발생하지 않습니다.
내가 생각할 때 명확하지 않거나/client has joined the session
을 의미합니다.
내가 (재 작성 또는 URL) 내 웹 응용 프로그램에서 쿠키를 사용하지 않는 경우 내 말은 내가 다음과 같습니다에 서버에서 서버 확인을
- POST IP A로부터 서버에
- POST 3 단계에서
것이다 true 또는 false를 session.isNew()
복귀? 나는 의사에게 분명하지 않다.
새 세션을 만들려면 false가 반환됩니다 (즉, 세션이 새로운 것이 아닙니다) session.invalidate()
에 전화해야합니까?
클라이언트가 HTTP 응용 프로그램이지만 웹 브라우저가 아닌 코드 조각을 디버깅 중이므로 3 단계에서 session.isNew()
이 쿠키 또는 URL 재 작성이 없어도 true
을 반환하지 않는다는 것을 알기 때문에 더 혼란스러운 이유가 있습니다. 서버 코드에서.
그래서 나는 두포에서 무슨 일이 일어나는지 알 수 없다.
이것을 이해하는 데 도움이되는 정보는 무엇입니까?
쿠키에 대해 혼란스러워합니다. 서블릿 컨테이너가 응답에 세션 쿠키를 추가하고 요청에서 읽습니다. 아무 것도 할 필요가 없습니다. 클라이언트 브라우저가 쿠키를 허용하지 않으면 URL 재 작성이 자동으로 사용되며 인코딩 된 URL (encodeURL, encodeRedirectURL 또는 해당 JSP 태그 포함)을 항상 제공하는 경우 작동합니다. –
@ JB Nizet : HTTP가 무 상태라고 생각했습니다. 세션을 유지하는 것은 프로그래머에게 달려 있습니다. 어쨌든 컨테이너로 세션이 있다고 나에게 말하고 있습니까? – Cratylus
컨테이너에 request.getSession() 또는 request.getSession (true)를 사용하여 세션을 만들도록 요청하면 컨테이너는 클라이언트에 전송 된 다음 응답에 세션 쿠키를 추가하고 세션 URL을 인코딩 된 URL에 추가합니다). 다음 요청 (또는 URL 끝에있는 세션 ID)에서 쿠키를 받으면 이전에 생성 된 세션에 요청을 연결할 수 있습니다. 클라이언트가 쿠키를 허용하지 않으면 URL 인코딩을 제외하고는 아무 것도 할 필요가 없습니다. 세션 추적 및 시간 초과는 컨테이너에 의해 수행됩니다. –