2012-01-10 3 views
0

< bean:write />을 사용하여 세션에서 JSP의 일부 값을 인쇄하고 있습니다. 그러나 페이지를 제출 한 후 (세션 만료 후) 다시 돌아와서 페이지를 새로 고치면 페이지의 말괄량이 트레이스가 인쇄됩니다.스트럿에서 안전하게 JSP에서 세션 변수를 사용하는 방법

< session attribute name> not found in session scope. 

나는 이것을 피했다. 그러나 아무것도 나를 위해 일하지 않았다.

  1. 난 그냥 < session attribute name>의 값이 null인지 여부를 확인 페이지의 시작에서 < logic:empty />
  2. 내부 < bean:write />을 포장했다. 그렇다면 오류 페이지로 리디렉션하고 있습니다.

같은 문제 세션 대신 요청에 속성을 추가하면 직면하게됩니다. JSP에서

< request attribute name> not found in request scope. 

코드는 세션

나는 "다른"블록이 의미 작다는 것을 알 수
HttpSession sess = request.getSession(false); 
if (sess == null) {response.sendRedirect("errorpg.jsp");} 
else{ 
    String sessionId_Logon = (String) sess.getAttribute("attrName"); 
    if(sessionId_Logon == null) 
    { 
      response.sendRedirect("errorpg.jsp"); 
    } 
} 

을 확인합니다. 나는 그것을 혼자 시도했다.

답변

0

음! 나는 내가 추측 한 문제를 발견했다. < bean:write />은 다른 어떤 것보다 먼저 컴파일됩니다. 따라서 세션에 대한 내 외부 검사가 덜합니다.

이제 2 가지 해결책이 있습니다.

  1. < bean:write />을 사용하지 마십시오. 대신 스크립틀릿을 사용할 수 있습니다.
  2. 또는 일부 마스터 페이지와 같이 상위 계층의 일부 페이지에서 세션 유효성을 확인할 수 있습니다.

두 번째 것을 사용하고 있습니다.

0

세션이 페이지에서 한 번 유효한지 확인한 다음 사용자에게 만료 된 경우 사용자에게 알려야합니다. 수행 할 작업에 대한 아이디어는 this thread 또는 this one을 참조하십시오.

+0

에 오신 것을 환영는 나와 함께 잘 작동 ..이 .... 을 당신을 도울 수있을 수 있습니다, 나는을 벌써 확인하고 그것. –

+0

세션 속성이 유효한지 여부는 확인하지 않은 것 같습니다. 적어도 그것은 당신의 질문에서 포인트 2를 해석하는 방법이었습니다. 세션이 만료되었는지 확인하는 방법을 보여줄 수 있습니까? –

+0

코드를 표시하도록 수정 된 질문 –

0

내가 점 2에서 언급 한 바와 같이

<logic:empty name="employee" scope="session"> <jsp:forward page="LoginScreen.do"/> </logic:empty>

<bean:write name="employee" scope="session"/ >

관련 문제