文档章节

【JavaWeb】 Cookie和Session

o
 osc_9yc7q9oq
发布于 03/15 21:57
字数 675
阅读 11
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

  Session和Cookie出现的原因: 

    由于Http是无状态的协议,会话之间没有任何关联,也就是上一次会话和下一次会话没有任何关联,因此出现了会话技术Cookie和Session 

  下面分别从CookieSession两方面来讨论:

  Cookie:

    Cookie是客户端的会话技术,当浏览器访问服务端时,服务端可以通过将Cookie信息存放到响应头Set-Cookie字段中,随着响应报文发送给浏览器

  浏览器看到Set-Cookie字段后,会将该信息保存起来,下次请求时,将Cookie自动放到请求头的Cookie字段发送给服务器端,服务端解析Cookie信息可以

  获得相关的信息,例如保存登录状态等等

  以Java为例:

    浏览器访问服务端的接口

/**
     * Cookie测试
     * @param httpServletResponse
     * @return
     */
    @GetMapping("/testCookie")
    public Result testCookie(HttpServletResponse httpServletResponse){
        //如何创建Cookie
        Cookie cookie = new Cookie("test","xxxxx");
        //如何将Cookie返回给客户端--通过Response响应给浏览器
        httpServletResponse.addCookie(cookie);
        return Result.success("success");

    }

    服务端响应给浏览器的信息如图:

 

     下次浏览器再次与服务端通信的时候,会将次Cookie存放在请求头的Cookie字段,一起发送给服务端,如图

 

     Cookie的相关参数

 

     Cookie由于以文本形式保存到浏览器,因此不太安全,而且每个浏览器存放Cookie的数量和大小都有区别,因此出现了下面的服务端会话技术Session

  Session:

    Session存储在服务端,客户端只存储了SessionId,服务端将一次会话的重要信息存放在Session中,浏览器只记录SessionId,一个SessionId对象一次会话请求

  同样的,服务端设置完Session之后,Session会随着响应一起发送给客户端,Session通过响应头中的Set-Cookie字段,数据格式以JSessionId=xxx

  的方式来返回给浏览器

    下面以Java代码为例:

/**
     * Session测试
     * @param httpServletRequest
     * @return
     */
    @GetMapping("/testSession")
    public Result testSession(HttpServletRequest httpServletRequest){
        //如何创建Session
        HttpSession session = httpServletRequest.getSession();
        session.setAttribute("testSession",222222);
        //如何将Session返回给客户端--设置完Sesison的key-value后,服务端会生成SesisonId来记录本次会话信息,通过Response响应给浏览器
        return Result.success("success");

    }

    服务端响应头中Set-Cookie字段来传递Session,生成一个唯一Id来记录本次会话

 

     下次会话时,浏览器将自动将SessionId携带至请求头的Cookie字段来一起请求服务端,如图

 

     Session即使我关闭浏览器,再次打开浏览器请求该站点时,值要Session没过期(默认30分钟),也会将该Session自动携带至请求头给服务端

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.5K
6
密码管理程序--pwgrep

为了管理我的密码,我写了一个小的 bash/awk 脚本用来管理一个密码数据库并使用 GnuPG 进行加密。使用 pwgrep 的好处是: 密码加密 密码版本化,不用担心丢失老密码 Since a versioning sys...

匿名
2013/03/11
1.3K
0
垂直爬虫--WebMagic

webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。 以下是爬取oschina博客的一段代码: Spider.create(new SimplePageProcessor("h...

黄亿华
2013/06/13
12.8W
84
全站 HTTPS 来了

各位使用百度、谷歌或淘宝的时候,有没有注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 HTTPS 进行保护。仔细观察,会发现这些网站已经全站使用 HTTPS。同时,iOS...

腾讯Bugly
2015/12/25
2K
5
CAS环境下的AJAX跨域

情况说明: 在单点登录的环境下,所有的文件上传都是通过webuploader上传到文件管理服务器。而webuploader的上传可以参考ajax的请求,相当于是跨域操作。 首先,跨域请求访问的问题,可以通过...

战五渣
2015/10/09
247
0

没有更多内容

加载失败,请刷新页面

加载更多

Trends期刊8月中国论文合辑

作为Cell Press细胞出版社旗下的权威综述月刊,Trends系列旨在为科学家们提供具有权威性且易于理解的科研趋势。其16本Trends期刊涵盖生命科学和化学的不同领域。 为了让大家对于Trends期刊有...

科研菌
昨天
0
0
C语言哈希表uthash的使用方法详解(附下载链接)

工科生一枚,热衷于底层技术开发,有强烈的好奇心,感兴趣内容包括单片机,嵌入式Linux,Uboot等,欢迎学习交流! 爱好跑步,打篮球,睡觉。 欢迎加我QQ1500836631(备注CSDN),一起学习交流...

osc_h7zc4umy
19分钟前
7
0
CGB2004-京淘项目Day08

1.实现图片回显 1.1准备虚拟路径 1.1.1 编辑image.properties 说明:在jt-manager中创建image.properties文件,在其中编辑关于图片配置的所有信息. 1.1.2 编辑FileServiceImpl 说明:实现虚拟路...

osc_gp8avabl
21分钟前
5
0
C++核心准则​E.28:避免基于全局状态的错误处理(例如errno)

蜀葵 E.28: Avoid error handling based on global state (e.g. errno) E.28:避免基于全局状态的错误处理(例如errno) Reason(原因) Global state is hard to manage and it is easy to for......

面向对象思考
今天
9
0
网易2020校招笔试- 大数据开发工程师(正式批)

目录 一、翻倍 方法一:暴力 方法二:递归 二、跳柱子 方法一:暴力,寻找能到达的最高柱子,方便我下次跳 方法二:动态规划dp 三、人数统计 方法:哈希表 四、积木 方法 如果你从本文中学习...

osc_8kei32r9
22分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部