美文网首页
servlet学习(十一):会话之cookie

servlet学习(十一):会话之cookie

作者: 程序员三千_ | 来源:发表于2019-02-25 17:12 被阅读9次

    cookie简介

        在登录某个网站时,比如登录163邮箱的网站,界面中有个十天免登陆的选项,先不勾选该选项,登录成功之后关闭浏览器或重启电脑,当再次访问163邮箱时会提示用户登录,这说明http协议是无状态的,在不同的请求之间是无法进行数据传递的。

    而当勾选了十天免登陆的选项并登录成功之后,关闭浏览器或者重启电脑,之后再次访问163邮箱时就会自动登录了。这说明用户登录的一些信息保存到了该电脑的硬盘中(默认会存在浏览器的缓存中,可以设置保存在硬盘上),当访问163邮箱网站时,浏览器会将这些数据发送到服务器,从而实现了自动登录的功能,客户端电脑中用于保存这数据的资源,称为cookie。

    用户在勾选十天免登陆的选项并登录成功之后,由服务器生成 Cookie,并将其封装到响应头中,以响应的形式发送给浏览器。浏览器接收到这个响应后,将 Cookie 保存到硬盘中。当浏览器再次发送同类请求后,在请求中会携带保存在硬盘的Cookie数据,发送到服务端,由服务器对解析该Cookie。

    Cookie 技术并不是 JavaWeb 开发专属技术,而是属于 Web 开发的技术,是所有 Web 开

    发语言均支持的技术。Cookie 是由若干键值对构成,这里的键一般称为 name,值称为 value。 Cookie 中的键值对均为字符串。

    在web.xml中将上面的servlet的url-pattern设置为:/test/cookie01

        访问该servlet时,在上图中,我们看到响应头中携带了之前设置的cookie信息。此时两个cookie与默认资源路径http://localhost:8080/wdy/test/cookie01 进行了绑定,也就是url-pattern中的上一级路径,当再次访问路径包含以上资源路径的url时,会自动将cookie放到请求头中向服务器发出请求。也就是在不同应用间cookie是不共享的。

    手动设置cookie路径


    设置完成后运行,发现路径变为/wdy/aaa了

    这是我们随便访问一个路径/wdy/test/12,是不会有cookie传递的

    我们用/wdy/aaa/12访问,是有cookie传递的

    设置cookie的有效时长

    默认情况下, Cookie 是保存在浏览器的缓存中的,关闭浏览器后Cookie也就消失了。

        开发者可以通过设置Cookie的有效时长,将Cookie写入到客户端硬盘文件中。

    可以通过下面的方法设置有效时长

    public void setMaxAge(int expiry)

    其中expiry的单位为秒,整型。

    大于 0,则表示要将 Cookie 写入到硬盘文件中;

    小于 0,则表示 Cookie 存放在浏览器缓存中,与不设置时长等效;

    等于 0,则表示 Cookie产生后直接失效。

    服务器端获取请求的cookie

    在 HttpServletRequest 中有一个方法getCookies(),专门用于读取请求中所携带的 Cookie 数据,该方法的返回值类型是Cookie数组。

    新建一个servlet:

    相关文章

      网友评论

          本文标题:servlet学习(十一):会话之cookie

          本文链接:https://www.haomeiwen.com/subject/keegyqtx.html