随笔 - 303  文章 - 883  trackbacks - 0
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

欢迎光临! 
闲聊 QQ:1074961813

随笔分类(357)

我管理的群

公共blog

  • n维空间
  • Email : java3d@126.com 群 : 12999758

参与管理的论坛

好友的blog

我的其他blog

朋友的网站

搜索

  •  

最新评论

啊!! 今天真是郁闷,写一个简单的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

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问