比如有两个页面,test1.jsp和test2.jsp,代码如下
//test1.jsp(建立一个到test2.jsp的链接,并session传递一个username参数)
<a href="test2.jsp">test2</a>
<%
String username="harryzyp";
session.setAttribute("username",username);
%>
//test2.jsp(接收test1.jsp的usename参数,但有个'退出'按钮,判断参数情况输出不同的东西
<%
String username=(String)session.getAttribute("username");
if(username!=null)
out.print("成功");
else
out.print("失败");
%>
<br />
<a href="test2.jsp">退出</a>
<%
session.setAttribute("username",null);
%>问题是:当点浏览器的刷新按钮时也会退出,session丢失,不加session.setAttribute("username",null);这句时,点退出时又退出不了,怎么办?

解决方案 »

  1.   

    你这么写当然会把Session里的UserName清空啦.
    没有条件判断.从下到下都会执行的.
    session.setAttribute("username",null);
    加上个条件.在什么样的条件下才执行这句.这样就OK了.
      

  2.   

    <%
    session.setAttribute("username",null);
    %>这地方明显有问题,你可以将退出连接到test3.jsp,在test3.jsp执行上面的语句,清空Session.
      

  3.   

    回Puras(Puras.He)说的我也想要的就是这个条件,条件就是在刷新的时候不执行,点'退出"的时候执行,怎么写
      

  4.   

    你在退出的链接上加个参数如<a href="test2.jsp?out=1">退出</a>
    然后在test2.jsp页面上取out值
    out==1才做session.setAttribute("username",null);这个操作
      

  5.   

    session.setAttribute("username",null);换成session.removeAttribute
      

  6.   

    session.setAttribute("username",null);换成session.setAttribute("username","");
      

  7.   

    <%
    session.setAttribute("username",null);
    %>这句无论如何都会被执行到的吧就算你不使用退出按钮也会被执行到的我的解决方法1、新建立一个页面,功能就是实现退出的功能,也就是清SESSION的功能2、直接把清SESSION的方法写到登陆页里去,在访问的时候先对SESSION进行清空,当点退出的时候,连接给到登陆页就好了
      

  8.   

    楼上的说的都可行的.
    一个是建个新页面.在里面把Session的值清空.点击退出时进入这个页面.
    要在本页做呢, 就在URL后面加个参数, 这样在执行清空Session之间判断这个参数的值.