2016-12-08 15 views
0

에 산발적으로 길을 잃지 아래처럼 정상적인 방법으로 저장하고 나중에이 userId를 데이터베이스에 저장합니다.세션 변수가 나는 사용자가 응용 프로그램의 다른 페이지로 이동하면, 내가 사용이 사용자 ID 가져</p> <pre><code>HttpSession session = req.getSession(); session.setAttribute("userId", validUserId); </code></pre> <p>아래처럼 내 응용 프로그램의 홈페이지의 pageload에 세션 개체에 사용자 ID를 설정 자바

HttpSession session = request.getSession(); 
String userId = (String) session.getAttribute("userId"); 

이것은 100 회 중 거의 95 번 작동합니다. 나는 userId를 가져 와서 데이터베이스에 저장할 수 있지만, 5 번의 호출에 대해, 나는 빈 userID 객체 만 얻는다. 더 낮은 환경에서이 문제를 재현 할 수 없으므로 문제가 무엇인지 이해하기가 어렵습니다.

web.xml에 속성을 추가 한 다음 jsp 페이지에서 사용하여 페이지의 자동 만료 시간을 20 분으로 설정했습니다.

이 문제의 근본 원인이 될 수있는 사람이 있습니까?

+0

'session.invalidate()'? –

+0

세션이 중간에 무효화되었을 수 있습니다. 코드에서 모든 세션 관련 작업을 교차 확인하십시오. – iMBMT

+0

세션이 5 가지 경우에 만료되지 않았다고 확신합니까? 다른 사람이 데이터를 어떻게 든 지우지 않았 음을 확신합니까? –

답변

0

근본 원인을 찾았습니다.

만료 페이지를 표시하고 세션을 무효화 할 때 사용자가 브라우저의 뒤로 버튼을 클릭하면 이전 페이지가 다시 표시되고 데이터가 지금 제출되면 세션이 이미 있으므로이 변수를 사용할 수 없습니다 이전에 무효화되었습니다. 다시 버튼 문제를 해결해야합니다.