2011-04-11 8 views
3

JAVA 서버에 대한 AJAX 호출에서 세션에 액세스 할 수있는 방법이 있습니까?ajax 호출에서 ID로 세션 가져 오기

서버에서 request 개체는 sessioncookies 속성이 모두 NULL입니다.

세션 ID를 매개 변수로 전달할 수 있지만 어떻게 ID로 세션에 액세스 할 수 있습니까? session.getSession(true); 분명히 다른 ID로, 새로운 세션을 반환하면서, session.getSession(false); 반환 null를 사용

편집

.

답변

3

이 문제를 해결하는 가장 좋은 방법은 URL 끝에 "; jsessionid ="를 추가하는 것입니다. 예를 들어, JSP에서 :

<script type="text/javascript"> 
... 
    xhr.open("GET", url + ";jsessionid=<%=pageContext.getSession().getId()%>"); 
... 
</script> 

라인 :

xhr.open("GET", url + ";jsessionid=<%=pageContext.getSession().getId()%>"); 

는 다음과 같이 렌더링 : 나는`사용 session.getSession (참) 경우

xhr.open("GET", url + ";jsessionid=6EBA4F94838796DC6D653DCA1DD06373"); 
+0

답변 해 주셔서 감사합니다. 다음과 같은 문제가 생겼습니다 : 세션 ID를 계산하는 대신 "; jsessionid = <% = pageContext.session.id %>"문자열을 보내고 "; jsessionid = __sessionid__ " –

+2

실제로 scriplet는 <% = pageContext.getSession(). getId() %>이어야합니다. –

+0

업데이트 해 주셔서 감사합니다. –

0

세션이없는 것 같습니다.

AJAX 스크립트가 포함 된로드가 발생하면 서버에 세션이 만들어 졌는지 확인하십시오.

session.getSession(true); 

쿠키로 저장하면 AJAX 호출은 서버가 실행될 때 서버로 다시 전송합니다.

+0

,'다음 새로운 세션 다른 ID를 사용하여 방문자를 위해 서버의 기존 세션을 복원하고 싶습니다. 어쩌면 내가 매개 변수로 세션 ID를 전달하면 도움이됩니다. –

0

세션에 액세스하려면 세션 ID가 필요하지 않습니다. 이것은 서블릿 컨테이너에 의해 백그라운드에서 수행됩니다. particluar 요청 당신이해야 할 모든 세션을 얻으려면입니다 : requestHttpServletRequest

HttpSession session = request.getSession(false); 

입니다. false arg는 "존재하지 않으면 세션을 만들지 않음"을 의미합니다. 물론 세션이 존재하지 않을 경우 세션을 생성하려면 "true"를 사용하십시오.

+0

내 질문을 편집했습니다. 나는 당신이 말한 것을 이미하고 있었지만, 불행하게도 그것은 효과가 없습니다. –