2012-06-11 36 views
-1

是使用servlet,使我的網站,並在釋放會話有問題,請檢查並找出錯誤的:會話沒有在Servlet中釋放

login.java : 
    ResultSet res=smt.executeQuery("Select * from admin where name='"+user+"' and password='"+password+"'"); 
    while(res.next()) 
    { 
     String name=res.getString("name"); 
     String pwd=res.getString("password"); 
    if(category.equals("Admin")) 
    { 
     if(name.equals(user) && pwd.equals(password)) 
     { 
          ServletContext context=request.getServletContext(); 
          context.setAttribute("name", name); 
          HttpSession session=request.getSession(); 
      session.setAttribute("name", name); 
      RequestDispatcher view=request.getRequestDispatcher("welcome_admin.jsp"); 
      view.forward(request, response); 
     } 
     else 
     { 
      response.sendRedirect("index.jsp"); 
     } 
    } 

和logout.jsp是:

<body> 
    <% 

    session.removeAttribute("name"); 

    session.invalidate(); 



    %> 
    <b> 
     <% 
     RequestDispatcher rd=request.getRequestDispatcher("index.jsp"); 
     rd.include(request, response); 
     %> 
    </b > 
</body> 

但會話沒有發佈,如果我點擊後退按鈕,它又將我重定向到頁面!有人請幫助我!

+0

建議:寫** **過濾器檢查會話屬性。 – adatapost

回答

1

問題是緩存。

一個解決辦法是把它添加到你的servlet:

Java servlet how to disable caching of page

// Set standard HTTP/1.1 no-cache headers. 
response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate"); 

// Set standard HTTP/1.0 no-cache header. 
response.setHeader("Pragma", "no-cache");