站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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之间判断这个参数的值.



不错,以上两种方法都行,谢谢大家的帮忙
结贴..

给分......


↑返回目录
前一篇: Tomcat5+MySQL+JDBC的乱码问题
后一篇: tomcat+apache环境下servlet找不到