啊!! 今天真是郁闷,写一个简单的struts登陆的时候,session老是去不掉;改程序分为以下几个部分:
login.jsp 登陆页面(用户名和密码输入)
LoginActon.java Struts1.4.9中负责数据验证验证的servlet 我现在只用他的 execute 方法
LoginFrom.java Struts1.4.9中负责用户数据存储的bean 我用他的reset方法初始化我的username,password参数
success.jsp 输入正确的登陆页面,带退出
当我写完开始运行时,出现这些现象:
1. 登陆验证没问题
2. 各部分运行正常,web.xml和struts-config.xml 配置没问题
3. 当我点击success.jsp里的退出时,我使用了一个退出的servlet 核心代码为:
HttpSession session=request.getSession(true);
session.invalidate();
response.sendRedirect("webPage/login.jsp");
退出 看起来也没问题。
呵呵,但是但我在退出之后,
点浏览器上的返回按钮,晕 我看到了 我的用户信息 呵呵出问题了
于是我去掉浏览器的缓存(这东西虽然提高效率但在目前这种情况下,他无疑降低了我这个程序的安全性)
我在 execute 里加入:
/**//*去除浏览器的缓存*/
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma","no-cache");
看到这里 大家会想 呵呵 这下肯定没问题 是的 当我再点返回的时候 我没有看到我的信息
但是无聊的我有做了一个实验 我再次点退出,当我在地址栏里 输入显示用户信息的地址时
http://localhost/login.do
哈哈 有出问题了 我又再次看到我的信息 悲哀 这又是什么缘故呢?
弄了很久 我才想起
LoginFrom.java 里的reset方法,啊 去掉之后就没问题了
什么原因呢? 我想了下 觉得是这样的 当你访问struts1.4.9里的一个actionFrom(servlet)的时候,不管你是通过什么方式(表单或者直接输入地址) actionFrom都会去找From(也就是这里的LogingFrom.java) 看看他里面有没有初始化参数 有的话 就直接拿来用,所以大家以后一定要注意这个东东了。
哎 悲哀的我第一次就吃了番茄 闪人了 祝大家编程好运!!
地震让大伙知道:居安思危,才是生存之道。
posted on 2007-08-01 16:08
小寻 阅读(512)
评论(0) 编辑 收藏 所属分类:
j2se/j2ee/j2me