详细介绍Jsp中的Cookies
来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 05:47 点击:次
在开发网站应用程序的过程中,使用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(SUN企业级应用的首选)页面或者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(SUN企业级应用的首选)和getcookie.jsp(SUN企业级应用的首选)、在web2下有getcookie.jsp(SUN企业级应用的首选)
web1下的setcookie.jsp(SUN企业级应用的首选)
<%
Cookie userCookie = new Cookie("user", "admin");
userCookie.setMaxAge(24*60*60);
userCookie.setPath("/web2/");
response.addCookie(userCookie);
%> web1下的getcookie.jsp(SUN企业级应用的首选)
<%
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(SUN企业级应用的首选)
<% 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);
%>
[nextpage]
先访问web1下的setcookie.jsp(SUN企业级应用的首选),然后分别访问web1和web2下面的getcookie.jsp(SUN企业级应用的首选)文件,你会发现奇怪的现象,web1下的getcookie.jsp(SUN企业级应用的首选)中user为空而web2下的getcookie.jsp(SUN企业级应用的首选)中user却有值,这就实现了从一个web应用下设置的cookie在另一个web应用下获得。
大多数人删除cookie不成功都是因为目录原因。一个典型的原因是在某一个目录中设置了cookie(没有调用setPath方法)却在另一个目录中删除该cookie(其实是调用setMaxAge方法)
&n
一、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(SUN企业级应用的首选)页面或者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(SUN企业级应用的首选)和getcookie.jsp(SUN企业级应用的首选)、在web2下有getcookie.jsp(SUN企业级应用的首选)
web1下的setcookie.jsp(SUN企业级应用的首选)
<%
Cookie userCookie = new Cookie("user", "admin");
userCookie.setMaxAge(24*60*60);
userCookie.setPath("/web2/");
response.addCookie(userCookie);
%> web1下的getcookie.jsp(SUN企业级应用的首选)
<%
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(SUN企业级应用的首选)
<% 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);
%>
[nextpage]
先访问web1下的setcookie.jsp(SUN企业级应用的首选),然后分别访问web1和web2下面的getcookie.jsp(SUN企业级应用的首选)文件,你会发现奇怪的现象,web1下的getcookie.jsp(SUN企业级应用的首选)中user为空而web2下的getcookie.jsp(SUN企业级应用的首选)中user却有值,这就实现了从一个web应用下设置的cookie在另一个web应用下获得。
大多数人删除cookie不成功都是因为目录原因。一个典型的原因是在某一个目录中设置了cookie(没有调用setPath方法)却在另一个目录中删除该cookie(其实是调用setMaxAge方法)
&n
相关新闻>>
- 发表评论
-
- 最新评论 更多>>