博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

达克

量变促质变
jiupima.cublog.cn


jsp中页面关闭时关闭session,cookie,页面缓存
一、清除页面缓存
在jsp页里
<%response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
response.flushBuffer();%>
在html页里
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">

二、清除cookie
<%   
          Cookie   killMyCookie   =   new   Cookie("mycookie",   null);   
          killMyCookie.setMaxAge(0);   
          killMyCookie.setPath("/");   
          response.addCookie(killMyCookie);   
%>
三、清除session
清除session方法
<%@   page   language="java"   %>   
<%   
  session.invalidate();   
%>  
在页面关闭时清除session,需要捕获windows.onclose事件,再调用清除session方法

 
 

发表于: 2007-08-13 ,修改于: 2007-08-13 13:36,已浏览1700次,有评论3条 推荐 投诉


网友评论
内容:
前两天看见有兄弟问cookie为什么删除不了,所以写了给小总结,希望对用cookie的各位兄弟有帮助
对于cookie,最主要的当然是读取和设置了,下面分两方面说明.
一、设置
Cookie是通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头中的
例如:
Cookie userCookie = new Cookie("user", "admin"); 
response.addCookie(userCookie);
和设置有关系的还有以下两个重要方法
1.setMaxAge
设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,而且这些Cookie不会保存到磁盘上。
注意:删除cookie就是通过该方法实现的。将要删除的cookie的过期之前的时间指定为0就可以达到删除该cookie的目的。
2.setPath
设置Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面(JSP页面或者Servlet的映射)所在目录及其子目录下的所有页面。
注意:
A:所有的cookie都是有路径的
B:该方法设置的路径为客户端路径,即“/”代表服务器根目录,而不是WEB应用根目录
C:该方法设置路径时,“/myWeb/”与“/myWeb”是不同的,要特别注意;前者可以关联到服务器的myWeb目录下,而或者则不可以。
D:该方法设置路径时,没有相对目录可言,即不论在哪个目录下设置setPath(“/myWeb/”),该cookie都将关联到服务器的myWeb目录下(setPath(“/myWeb”)则不可以),而不是当前目录的myWeb的子目录下;同样,设置setPath(“myWeb/”)和setPath(“myWeb”)也不能关联到当前目录的myWeb的子目录下
这里有个奇怪的例子,就是在一个web应用下设置的cookie可以在另一个web应用下获得(两个web应用在同一个服务器下)
目录结构:在服务器根目录上有web1和web2两个目录,在web1下有setcookie.jsp和getcookie.jsp、在web2下有getcookie.jsp
web1下的setcookie.jsp
<%
Cookie userCookie = new Cookie("user", "admin"); 
userCookie.setMaxAge(24*60*60);
userCookie.setPath("/web2/");
response.addCookie(userCookie);
%>
web1下的getcookie.jsp
<%
Cookie[] cookie = request.getCookies();
String user = new String();
if ( cookie != null ) {
for (int i = 0; i < cookie.length; i++) {
Cookie myCookie = cookie[i];
if (myCookie.getName().equals("user")) {
user = myCookie.getValue();
}
}
}
out.println("user = " + user);
%>
web2下的getcookie.jsp
<%
Cookie[] cookie = request.getCookies();
String user = new String();
if ( cookie != null ) {
for (int i = 0; i < cookie.length; i++) {
Cookie myCookie = cookie[i];
if (myCookie.getName().equals("user")) {
user = myCookie.getValue();
}
}
}
out.println("user = " + user);
%>
先访问web1下的setcookie.jsp,然后分别访问web1和web2下面的getcookie.jsp文件,你会发现奇怪的现象,web1下的getcookie.jsp中user为空而web2下的getcookie.jsp中user却有值,这就实现了从一个web应用下设置的cookie在另一个web应用下获得。
大多数人删除cookie不成功都是因为目录原因。一个典型的原因是在某一个目录中设置了cookie(没有调用setPath方法)却在另一个目录中删除该cookie(其实是调用setMaxAge方法)

二、读取
从客户端读取Cookie时调用的是HttpServletRequest的getCookies方法。该方法返回一个与HTTP请求头中的内容对应的Cookie对象数组。得到这个数组之后,一般是用循环访问其中的各个元素,调用getName检查各个Cookie的名字,直至找到目标Cookie。然后对这个目标Cookie调用getValue,根据获得的结果进行其他处理。
注意:若JSP和Servlet所在目录(Servlet为其映射目录)的父目录中有同名cookie,则request.getCookie()方法得到的Cookie数组中保存的是其父目录中的cookie的信息;
jiupima 评论于:2007-08-13 13:39:15 (222.90.15.★)
内容:
用window.navigate()跳转
cuidalian 评论于:2007-09-10 10:35:44 (222.172.222.★)
内容:
很好,谢谢啦.
本站网友评论于:2007-09-27 19:18:41 (211.91.165.★)

发表评论