2017-04-11 1 views
0

자바 서블릿에서하지 설정되지 않은 세션 내용입니다 수 변수는 설정 여부와 그에 따라 사용자가 페이지를 찾아 보거나 (세션 변수가 설정되지 않은 경우) 로그인 페이지로 다시내가 여기 세션을 무효화하는 데 사용되는 logout.jsp 페이지를 가지고

if(request.getSession(false)==null){ 
    response.sendRedirect("login.jsp"); 
} 

를 리디렉션 할 수 그러나 문제는이 같은에서 작동하지 않는입니다 주소 표시 줄에서 profile.jsp 페이지를 직접 열면 로그인 한 사용자가없는 경우에도 witho가 열립니다 ut은 로그인 페이지로 리디렉션됩니다. 또한 request.getSession(false)을 인쇄하면 [email protected]이라는 결과가 표시됩니다. 나는 이것이 무엇인지 모르며 인터넷에서 그것에 대해 아무것도 발견하지 못했다. 그래서이 문제를 해결하는 방법.

편집 :

개체 세션 ​​변수가 직렬화를 구현, 그래서 내가 직면하고있는 문제의 이유가 될 수 있기 때문에 내가 사용하고 클래스 '사용자'.

내가 여기에서 언급 했으므로 댓글을다는 것이 허용되지 않습니다. 쿠키를 사용하는 chrome을 사용합니다 .... 더 이상 Microsoft Edge에서 동일하게 시도했지만 여전히 동일합니다

+0

JSP는 사용자가 세션을 만들지 않는 한 자동으로 세션을 만듭니다. 보통 우리는 세션에 속성을 넣고 그 속성이 설정되어 있는지 확인합니다. – rickz

+0

그래, 나도 그걸 시도해 봤어.'if (session.getAttribute ("user") == null) { \t response.sendRedirect ("login.jsp");} System.out.println (session.getAttribute 여기서 user는 세션 변수 속성이고 콘솔 출력은'mypack.user @ 1ad20a7'입니다. 여기서 mypack은 클래스 이름이 'user'인 패키지의 이름입니다. 어떤 객체를 세션 변수로 사용합니까 – Sourajit

+0

리디렉션하지 않습니다 – Sourajit

답변

0

로그인 및 로그 아웃을 위해 서블릿을 만든 다음 해당 서블릿에서 리디렉션 할 수 있다고 가정합니다 페이지로 : 이 로그인 서블릿 코드가 될 수 있습니다

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    String email = request.getParameter("email"); 
    String password = request.getParameter("password"); 
    HttpSession session = request.getSession(); 
    session.setAttribute("userName", email); 
    session.setAttribute("password", password); 
    getServletContext().getRequestDispatcher("/profile.jsp").forward(request, 
    response); 
    } 

이 세션 확인하도록 profile.jsp 페이지 코드가 될 수 있습니다 당신은 단지에 요청을 보낼 수 있습니다 로그 아웃 페이지에서

<% 
if(!(request.getSession(true).getAttribute("userName").toString()).isEmpty()){ 
    String firstName = (String)request.getAttribute("firstName"); 
String lastName = (String)request.getAttribute("lastName"); 
}else{%> 
<jsp:forward page = "Login.jsp" /> 
<% }%> 

을 너는 goutservlet. 나는이 세션에서 자격 증명 내가 해당 필드에 null 값을 얻고 무엇입니까 때 후

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 
    HttpSession session = request.getSession(); 
    session.invalidate(); 
    out.println("Logout Successful"); 
    out.println("Username : "+session.getAttribute("userName")); 
    out.println("Password : "+session.getAttribute("password")); 

} 

: 그리고, 이것은 당신의 logoutservlet 코드를 할 수 있습니다.

+0

'<% = request.위의 메서드를 시도하고 로그 아웃 페이지에서'request.getSession (false)'는 null을 반환하지만 열기시에는 true를 반환합니다. profile.jsp 페이지 (로그인하지 않은 상태)는 true를 반환합니다. 내 특정 파일을보고 싶다면 여기에 추가 할 수 있습니다. – Sourajit

관련 문제