jsp实验4.(3)cookie的使用:用一个程序(mySetCookie.jsp)在五个路径/jsp/temp/、/jsp/temp/2015/、/jsp/temp/2016/、/jsp/temp/2016/main/、/jsp/temp/2016/other/(只是设置cookie的路径)下分别设置名字为x0~x4的cookie,并把路径名作为cookie值,最大保存时间都是120秒。在这些路径下都放置一个程序myGetCookie.jsp,它可以读出当前路径下可以取到的所有cookie。最后,再做一个myShowCookie.jsp可以链接mySetCookie.jsp和所有myGetCookie.jsp。
目录截图如下:
mySetCookie代码如下:
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GB2312" contentType="text/html;charset=GB2312"%> <% Cookie cookie0 = new Cookie("x0","/jsp/temp/"); cookie0.setMaxAge(120);// 设置保留时间 120秒。 // 设置为负值表示只保存在内存, 关闭浏览器则消失。 // 设置为0表示要删除该cookie。 cookie0.setPath("/jsp_4/temp/"); //设置路径为根目录 response.addCookie(cookie0); %> <% Cookie cookie1 = new Cookie("x1","/jsp/temp/2015/"); cookie1.setMaxAge(120);// 设置保留时间 120秒。 cookie1.setPath("/jsp_4/temp/2015/"); //设置路径为根目录 response.addCookie(cookie1); %> <% Cookie cookie2 = new Cookie("x2","/jsp/temp/2016/"); cookie2.setMaxAge(120);// 设置保留时间 120秒。 cookie2.setPath("/jsp_4/temp/2016/"); //设置路径为根目录 response.addCookie(cookie2); %><% Cookie cookie3 = new Cookie("x3","/jsp/temp/2016/main/"); cookie3.setMaxAge(120);// 设置保留时间 120秒。 cookie3.setPath("/jsp_4/temp/2016/main/"); //设置路径为根目录 response.addCookie(cookie3); %><% Cookie cookie4 = new Cookie("x4","/jsp/temp/2016/other/"); cookie4.setMaxAge(120);// 设置保留时间 120秒。 cookie4.setPath("/jsp_4/temp/2016/other/"); //设置路径为根目录 response.addCookie(cookie4); %>
setCookie
myShowCookie.jsp代码如下:
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GB2312" contentType="text/html;charset=GB2312"%>
myShowCookie
/jsp_4/mySetCookie.jsp/jsp_4/temp/myGetCookie.jsp
/jsp_4/temp/2015/myGetCookie.jsp
/jsp_4/temp/2016/myGetCookie.jsp
/jsp_4/temp/2016/main/myGetCookie.jsp
/jsp_4/temp/2016/other/myGetCookie.jsp
myGetCookie.jsp代码如下:
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GB2312" contentType="text/html;charset=GB2312"%>
getCookie
<% Cookie[] cookies = request.getCookies(); for(Cookie cookie : cookies){ String name = cookie.getName(); String value = cookie.getValue(); out.write("" + name + ":" + value); } %>
运行其中一个目录下的myGetCookie可以看到:
每个目录下的得到的cookie的jsessionID都是一样的。
原因可以从下图看出:
服务器上的session变量是用一个jsessionID来关联的。
(2)运行mySetCookie.jsp,然后关闭所有浏览器,过了一分钟后再打开myGetCookie.jsp,会发现什么情况?
jSessionId会改变。
原因:session的生命周期和浏览器有关,浏览器关闭session将被删除。但是如果你长时间不关闭浏览器,又不访问该网站, session的生命周期也会结束,一般是三十分钟。
(3)运行mySetCookie.jsp,然后关闭所有浏览器,过三分钟再打开所有myGetCookie.jsp,会出现什么情况?
之前设置的Cookie对象消失了,因为过了cookie的过期时间120秒
(4)运行mySetCookie.jsp,不关闭所有浏览器,过三分钟再打开所有myGetCookie.jsp,会出现什么情况?
之前设置的Cookie对象消失了,因为过了cookie的过期时间120秒。过期时间到了,无论是否关闭浏览器,cookie对象都会失效。