当前页面: 开发资料首页 → JSP 专题 → 一个普通并经常用到的session问题
一个普通并经常用到的session问题
摘要: 一个普通并经常用到的session问题
比如有两个页面,test1.jsp和test2.jsp,代码如下
//test1.jsp(建立一个到test2.jsp的链接,并session传递一个username参数)
test2
<%
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("失败");
%>
退出
<%
session.setAttribute("username",null);
%>
问题是:当点浏览器的刷新按钮时也会退出,session丢失,不加session.setAttribute("username",null);这句时,点退出时又退出不了,怎么办?
为什么不在超链接后面加?号的方式传参数阿??
你这么写当然会把Session里的UserName清空啦.
没有条件判断.从下到下都会执行的.
session.setAttribute("username",null);
加上个条件.在什么样的条件下才执行这句.这样就OK了.
<%
session.setAttribute("username",null);
%>
这地方明显有问题,你可以将退出连接到test3.jsp,在test3.jsp执行上面的语句,清空Session.
回Puras(Puras.He)说的
我也想要的就是这个条件,条件就是在刷新的时候不执行,点'退出"的时候执行,怎么写
你在退出的链接上加个参数如退出
然后在test2.jsp页面上取out值
out==1才做session.setAttribute("username",null);这个操作
学习~~~~~
session.setAttribute("username",null);换成session.removeAttribute
session.setAttribute("username",null);换成session.setAttribute("username","");
-_-!
<%
session.setAttribute("username",null);
%>
这句无论如何都会被执行到的吧
就算你不使用退出按钮也会被执行到的
我的解决方法
1、新建立一个页面,功能就是实现退出的功能,也就是清SESSION的功能
2、直接把清SESSION的方法写到登陆页里去,在访问的时候先对SESSION进行清空,当点退出的时候,连接给到登陆页就好了
楼上的说的都可行的.
一个是建个新页面.在里面把Session的值清空.点击退出时进入这个页面.
要在本页做呢, 就在URL后面加个参数, 这样在执行清空Session之间判断这个参数的值.
不错,以上两种方法都行,谢谢大家的帮忙
结贴..
给分......