2012-05-29 2 views
5

전화 할 때 "null"이 필요할 때를 알고 싶습니다. HttpServletRequest.getSession(false)HttpServletRequest.getSession (false) : 언제 null을 반환합니까?

또한 : HttpSession에 대한 유용한 자습서가 있습니까? 나는 세부 사항을 얻고 싶으면 : 무효화 할 때()? 결과는 무엇입니까? 반환 된 HttpSession이 유효한지 확인해야합니까? ... < == 코멘트에 (이)라고 대답 해주세요.

+0

내 robots.txt를 존중하지 않는 특정 검색 엔진이 있다는 것을 깨달았을 때 나는 그 사이트에 대해 정확하게 그랬습니다. 즉, getSession (boolean)을 false로 매개 변수로 호출합니다. 세션이 존재하는 경우는 세션을 돌려 주어, 존재하지 않는 경우는 null를 돌려줍니다. 그런 다음 세션에서 .getAttributeNames()를 호출하면 무효화 된 세션 (시간 초과 됨, 닫힘)에서 IllegalStateException이 발생합니다. – 0xCAFEBABE

답변

4

사실 널 값을 기대해서는 안됩니다. 문서에서 말하는 것처럼 요청에 대한 활성 세션이없는 경우 (대개 요청의 필터 체인에서 확인), 세션이 만들어집니다. 이것에서 null 값을 얻는다면, 기본 OS에 문제가 있다는 것을 내기 할 것입니다. 세션 생성을위한 충분한 메모리가 마음에 들지 않을 것입니다.

+0

다음은이 질문에 대한 답변입니다. http://stackoverflow.com/questions/3080203/how-could-randomly-my-session-is-null. 이런 경우가 더 있는지 궁금하네요. 다른 사람들은 세션에 대한 필터 검사를하는 것이 좋은 생각이라고 동의합니까? – AndrewBourgeois

+0

포스터가 말했듯이, 그는 getSession (true)을 시도했습니다. 내 경험과 문서에 따르면 세션이 이미 존재하지 않으면 세션을 생성합니다. 그것이 만들어지지 않으면, 이것이 유한 자원 또는 다른 문제 (포스터가 제안했거나 어쩌면 피싱 방지 기술)에 문제가 있다는 것을 내기는했지만, 언급 한 애플리케이션 서버에는 익숙하지 않습니다. 수코양이). – 0xCAFEBABE

+0

정상적인 상황에서 충분한 리소스를 사용하여 애플리케이션이 실행되고 있으므로 null이 표시되지 않습니다. 충분히 좋다 (나는 이것을 하루 동안 열어 놓고 다른 사람들이 필요할 경우 논평 할 수있다). – AndrewBourgeois

관련 문제