请教一个JSP的登录退出流程

05-07-03 bsc2xp
我写了一个web应用。流程如下:

1.login.jsp 登录组件。成功登录后转到init.jsp。

2.init.jsp 在session中置入两个对象。转发请求(用RequestDispatcher)到下一个frame页面。

3.frame.htm 这个是应用的界面,并有一个退出按钮。

4.点击frame中的退出按钮,链接到logout.jsp。

5.在logout.jsp中 session.invalidate() 然后 request.sendRedirect("login.jsp")

回到login.jsp重新登录。

但是再登录后执行上述步骤,我发现并没有执行步骤2中的init.jsp。也就是没有在session中置入两个对象。

经过试验我发现两种解决办法,

A.把frame.htm改为frame.jsp。仅仅是改了文件类型。其他都不变。

B.把init.jsp 加上禁止缓存的代码。

以上两种方法用任何一种,退出后再重新登录(并没有关IE)都没任何问题。seesion中也有那两个对象。

请问这是为什么??????尤其是解决方法A,实在是不明白。

贴过一次不知道为什么被删了。

banq
2005-07-03 10:48
这是http的缓存问题。

htm缺省情况下,客户端浏览器是使用缓存也就是本地机的缓存,而jsp缺省情况下,每次都是从服务器获得。

这两者区别主要是和配置有关,你可以失效Apache中htm的request缓存,但是负载很大,你也可以在jsp页面头部加上request的缓存,提高性能。

bsc2xp
2005-07-07 14:40
谢谢板桥的解答。

是缓存的问题这个是肯定的了。

可是解决方案A我还是没想明白。

因为init.jsp是在frame之前运行。为什么把frame改为jsp,init.jsp就会重新运行?而如果是frame.htm。init.jsp就不会再次运行,而是去读她的缓存?

猜你喜欢