up:: 请求转发与响应重定向

本篇博客的主要内容是:

● 为什么要有Cookie;

● Cookie本地存放地址;

● 如何在程序中设置(添加)Cookie;

● 如何在浏览器中查看Cookie信息;

● 如何在程序中获取Cookie信息;

● 如何设置Cookie时效;

Cookie(小甜饼~~~)

一个小例子:例如平常登录一个网易邮箱时,如果选择“十天内免登录”,登录后,关闭浏览器;重新打开浏览器,会发现网易邮箱的登录状态并没有消失。

其底层的实现原理是,网易邮箱网利用了Cookie技术,存放了用户的登录信息;浏览器二次访问网易邮箱首页时,浏览器会把Cookie中存放的用户登录信息提取出来,并通知服务器说之前这个用户已经登录过了,并不需要重新登录;

“十天内免登录”:这个Cookie只能保存十天,十天以后,将会被浏览器自动清除;


Cookie放在哪儿了?


设置Cookie示例:

下面,设置了Cookie,并将Cookie信息随着response(响应)发回到浏览器端;浏览器将这个Cookie信息保存到本地的文件中;之后每一次请求,request(请求对象)都会包含这个Cookie信息,一并发送到对应的地址上。

Cookie要导入这个包:

效果:


对于上面的过程中,Cookie是否生效嘞?在浏览器中查看Cookie。


获取Cookie

效果:


上面稍微改造下:

效果:


Cookie的时效性怎么弄?:Cookie的默认时效

当Cookie没有设置有效期时,Cookie的有效期就是当前的浏览器窗口:

在上面的例子中,我们先访问了ImoocLoginServlet这个Servlet,我们是在这个Servlet中设置的Cookie,然后在没有关闭浏览器的情况下,又访问了ImoocIndexServlet这个Servlet,在这个Servlet中我们访问了Cookie;

因为没有关闭浏览器,所以ImoocLoginServlet设置的Cookie信息会有效,ImoocIndexServlet能正常访问到Cookie信息;

但一旦,我们关闭了浏览器,重新打开浏览器,直接访问ImoocIndexServlet时:报错了,Cookie失效了

其实,上面报了空指针异常,其实cs这个数组是空的(因为所有的Cookie信息都失效了),会引发空指针异常了;

所以上面的程序可以改一下,增强健壮性:

上面程序处理了可能出现的错误情况,此时再访问时:


怎么设置Cookie时效:

此时先访问ImoocLoginServlet,先让浏览器将Cookie信息保存;

关闭浏览器:然后重启,访问ImoocIndexServlet:结果,发现Cookie并没有因为关闭了浏览器而失效,因为我们把其时效性设置成了7天;


cookie是保证用户会话(Session)的基础;

注解:

(1)cookie(大概率)也是浏览器自动创建的,浏览器会有一个存放所有Cookie对象的列表:然后我们也可以通过Cookie cookie = new Cookie(“user”,“admin”);自己创建一个cookie,然后通过response.addCookie(cookie); 响应返回给浏览器,然后浏览器会把这个返回的cookie添加到自己维护的cookie列表中;然后可以通过Cookie[] cs = request.getCookies();获得所有cookie的列表

(3)换句话说,Cookie是浏览器创建和维护的;这是个特殊的Java对象,这些对象有很多属性和方法,我们可以按需调用;