上次写了一篇关于cookie和session的文章:Session与Cookie解析,继续深入学习了之后,做几点补充。
Cookie
1、cookie的作用范围
cookie分为两种,区分的标准就是其是否具有生命周期。如果不对cookie设置生命周期的话,则该cookie存放于内存中,默认只对浏览器当前窗口及其子窗口有效,对其他新的页面无效。
而设置生命周期之后,对其他页面也有效。
如:
<span style="font-size:18px;">Cookie c1 = new Cookie("username","Mr-Yang");//建立一个Cookie
response.addCookie(c1);//不加时间限制的
Cookie c2 = new Cookie("username","Mr-Yang");//建立一个Cookie
c2.SetMaxAge(60*60);//设置Cookie有效时间为1小时
response.addCookie(c2);</span>
下面我们通过图来理解一下:
图一:未设置生命周期
图二:设置了生命周期
2、服务器可以向客户端写入的内容只能是文本内容,而客户端也可以通过禁用cookie来阻止浏览器的写入。
另外,读取cookie时,一个servlet或JSP设置的cookie能被同一路径或子路径下面的servlet/jsp读到,其他路径无法读到。如:
<span style="font-size:18px;"><servlet-mapping>
<servlet-name>ShowCookies</servlet-name>
<url-pattern>/path/ShowCookies</url-pattern>//初始路径,此时可以读到
</servlet-mapping>
<servlet-mapping>
<servlet-name>ShowCookies</servlet-name>
<url-pattern>/newPath/ShowCookies</url-pattern>//子路径,此时可以读到
</servlet-mapping>
<servlet-name>ShowCookies</servlet-name>
<url-pattern>/ShowCookies</url-pattern>//非子路径,此时不可以读到
</servlet-mapping></span>
Session
1、关于Session,这里就补充一点吧,就是向浏览器发送SessionID的方式
第一个就是通过cookie:
<span style="font-size:18px;"><pre name="code" class="java">HttpSession session = new request.getSession(true);//实例化一个Session,保证接收状态
</span>
<span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">session.setAttribute("username","Mr-Yang");//写入内容</span>
当cookie被浏览器禁用后,怎么办?
此时就要采取第二种方式,重新URL:
<span style="font-size:18px;">HttpSession session = new request.getSession(true);
response.getWriter.println(response.encodeURL(request.getRequestURL().toString()));</span>
这样比较麻烦,但是能够无视浏览器禁用cookie的限制。
随着学习的深入,对后续内容有了更深刻的理解之后,再继续分享给大家吧~