JSP中的会话问题

时间:2010-12-15 05:43:53

标签: java session jsp servlets

我在登录页面上设置并获取会话属性,当我退出页面并按下后退按钮时,它会再次进入主页。

这是我的代码,

::::::::::::::::::::::::::**sessionaction.jsp**::::::::::::::::::::::::::::::::::::::

<%@page import="java.util.*" %>
<%
    String str = request.getParameter("UserName");
    session.setAttribute("sessUserName", request.getParameter("Password"));
%>

<%
    if (session.getAttribute("sessUserName").equals(""))
    {
        response.sendRedirect("login.jsp");
%>

<%
    }
else
    {
        response.sendRedirect("home.jsp");
    }
%>


::::::::::::::::::::::::::**logout.jsp**::::::::::::::::::::::::::::::::::::::
<%@page import="java.util.*" %>

<%
//session.invalidate();
session.removeAttribute("sessUserName");
%>

You have logged out. Please
<a href="login.jsp"><b>Login</b></a>

请指导我。

3 个答案:

答案 0 :(得分:2)

设置缓存标头

response.setHeader("Cache-Control","private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0");

另外

如果需要用于Cache-Control的元标记

答案 1 :(得分:2)

尝试:

if (session.getAttribute("sessUserName") == null)

答案 2 :(得分:1)

我认为,根本原因是已经被用户sje397 建议(接受他的回答),我只在这里详细阐述。原因是您的会话失效与login.jsp中的代码不同步。

您正在从会话中删除该属性,这意味着以下代码

if(session.getAttribute("sessUserName").equals(""))

应改为

if(session.getAttribute("sessUserName")==null)

其他: 后退按钮可能只是从其本地缓存显示主页。试试disabling the cache,看看它是否有效。