关于Session:

图1

session的话,是将数据保存在服务端的,是服务端的会话跟踪技术。关于session的原理,其实session是基于cookies实现的。

假设服务端写了两个servlet,一个是servlet_a,一个是servlet_b。

此时在servlet_a中创建一个session对象,并对session对象赋值;然后在servlet_b中可以通过getAttribute的方法获取到servlet_a中的数据。

这就是session传输数据的基本过程,但是怎么保证servlet_a与servlet_b调用的是同一个session呢?

此处就用到了cookies,当servlet_a创建完session之后,会在给客户端响应的时候返回一个set-cookie的值,当下一次客户端发送请求到servlet_b的时候,会同时发生这个session的cookie值。从而保证servlet_a与servlet_b访问的是同一个session。这也是为什么说session是基于cookie的。

图2

session主要工作流程前面已经简单叙述过了,现在让我们来看一看具体的代码实现。主要用的方法如图2所示,具体代码如下图。

图3

这是创建的servlet demo1,具体在demo1中实现session的获取与数据的储存,其中需要注意的是,在给session里面储存数据时,使用的是键值对的数据类型,但value部分的数据类型不止是字符串类型,可以是任何类型,当我们查看此方法的源代码时(如图4)可以看到,value部分的数据类型是object。

图4

图5

在图3中我们创建好了session对象,这时我们在servlet-demo2中访问该数据,从而达到两个servlet之间数据的交流。可以将数据打印出来查看是否是同一个seesion的值。

图6

session的使用细节

session钝化与活化:

正常关闭重启:(下述内容为正常实验观察钝化与活化的过程)

首先重启tomcat:

在tomcat中用ctrl_c停止,依此输入(windows下)

cd ..

cd cookie-demo

mvn tomcat7:run(注意这里是用的你自己配置的tomcat的版本)

再访问用来创建session对象的servlet

再结束tomcat服务

ctrl c(等待一会儿)

出现提示,选择“Y”,终止操作。

再次启动服务器

tomcat命令行输入“mvn tomcat7:run(注意这里是用的你自己配置的tomcat的版本)”

然后直接访问使用demo1中session的demo2,并输出session值来观察session是否变化。

注意:不用再次访问demo1.

结果可以看见session值还在。

————————————————————————————

这是因为在正常关闭之下,tomcat会执行tomcat的钝化与活化(如图6)并且再次活化时,存入文件的session值会在加载之后自动删除。

即!正常重启,session是不会丢失的(但还是有时间限制)

—————————————————————————————

还有一种情况:

demo1创建session1,然后关闭浏览器,再打开浏览器,demo2获取session2,此时的sessio1与session2就不是一样的了。因为关闭浏览器后,再次产生的会话就不是同一个会话了,因此cookie值代表的ID也就不一样了。

因此,若是需要共享session,通过session传递数据,那在需要的期间,浏览器都不能关闭。

即session是不能长期地储存数据的。

question:那直接关闭浏览器就不算是正常关闭了吗?

session的销毁:

两种销毁方式,如图6所示。

  • 默认的自动销毁时间是30分钟,可以到web.xml文件中自行定义从而改变默认值。
  • session自己调用invalidate()方法就自己把自己销毁了,里面的数据就没有了。

图7

关于session与cookie的区别 :

有如图7所示的5点。

关于安全性:因为cookie是将数据存储在客户端的,在发请求的时候会多次在客户端与服务端之间进行传递,然而传递就会容易被半路截住,而session就一直呆在服务端里,在家里总是比出门要安全的多的。

所以,根据他俩的区别,一般我们在运用的时候

购物车数据:C

账户信息:S

登录账号密码输入:C(确实需要安全性,但是session不能长时间记住嘛,那就给cooki里的数据加密吧)

验证码:S

JavaWeb学习:session相关推荐

  1. JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    JavaWeb学习总结(五十二)--使用JavaMail创建邮件和发送邮件 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两 ...

  2. 转载:javaweb学习总结(二十三)——jsp自定义标签开发入门

    javaweb学习总结(二十三)--jsp自定义标签开发入门 转自:http://www.cnblogs.com/xdp-gacl/p/3916734.html 一.自定义标签的作用 自定义标签主要用 ...

  3. JavaWeb学习之路——SSM框架之SpringMVC(八)

    SpringMVC参数传递:把内容写到方法(HandlerMethod)参数中,SpringMVC只要有这个内容,则会注入,在这里使用注解的方式来传递参数 前提使用springmvc注解功能,相应配置 ...

  4. JavaWeb学习之路——SSM框架之Mybatis(三)

    数据库配置和相关类创建看上篇:JavaWeb学习之路--SSM框架之Mybatis(二) https://blog.csdn.net/kuishao1314aa/article/details/832 ...

  5. B站狂神说JavaWeb学习笔记

    JavaWeb学习笔记(根据b站狂神说java编写) 1.基本概念 1.1 前言 静态Web: 提供给所有人看数据不会发生变化! HTML,CSS 动态Web: 有数据交互,登录账号密码,网站访问人数 ...

  6. JavaWeb学习笔记(5)-B站尚硅谷

    文章目录 十四.书城项目第三阶段--优化 (1)页面jsp动态化 (2)抽取页面中相同的内容 A.登录成功的菜单 B.base.css.jQuery标签 C.每个页面的页脚 D.manager模块的菜 ...

  7. 【javaweb学习笔记】servlet-api,filter和Listener

    javaweb学习笔记 1. servlet-api 1.1 servlet初始化 1.2 ServletContext和context-param 2. 什么是业务层 3. IOC 3.1 耦合/依 ...

  8. JavaWeb学习笔记(动态SQL)

    JavaWeb学习笔记(动态SQL) 动态SQL中的元素 < if>元素 < choose>.< when>.< otherwise>元素 < w ...

  9. Javaweb学习笔记(JSP标准标签库)

    Javaweb学习笔记(JSP标准标签库) JSTL入门 安装和测试JSTL JSTL中的Core标签库 < c:out>标签 标签 标签 < c:catch>标签 标签 标签 ...

  10. 【转载】 javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册 - 孤傲苍狼 - 博 http://www.cnblogs.com/xdp-gacl/

    javaweb学习总结(二十二)--基于Servlet+JSP+JavaBean开发模式的用户登录注册 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+Ja ...

最新文章

  1. SQLServer导入Excel截断数据的解决办法
  2. Golang中的自动伸缩和自防御设计
  3. 1、MySQL数据类型简介
  4. IDEA新建spring boot项目没有Spring Initializr选项
  5. 从小白到大神程序员必读15本经典电子书免费送第三季(先到先得)
  6. Java ThreadLocal 使用详解
  7. 【MM系列】SAP ABAP 编辑字段出现:对象编辑中的错误
  8. jQuery 1.2 带来的兼容问题及对策
  9. 有个程序媛女朋友是一种什么样的感觉?
  10. linux mvn m2目录,Maven C盘用户文件下没有.m2
  11. Linux 终端常用快捷键
  12. 解题报告 幸福的道路
  13. matlab线圈磁场,利用Matlab计算螺线管内磁场分布研究.pdf
  14. 【百度echarts】实现圆环进度条-代码示例代码demo
  15. [Guava源码日报(1)]Guava类库简介
  16. java文件名中不能包含的字符,使用Java 7编写包含非英语字符的文件名时,zip条目不正确...
  17. 百万级别长连接,并发测试指南
  18. 如何软件项目电子投标
  19. 领克发布智能电混技术 全新设计语言概念车亮相
  20. CAD编辑指南2:五大CAD查看器的功能盘点

热门文章

  1. MySQL 版本:'for the right syntax to use near 'identified by 'password' with grant option'
  2. 电子计算机厂 四月份生产计,西安市国家税务局转发《陕西省电子计算机替代手工记帐管理办法(试行)》的通知...
  3. Stardock Curtains v1.19.1 Windows主题美化软件中文直装版
  4. 教你如何用路由器连接网页登陆式校园网(by liukun321 咕唧咕唧)
  5. 跑赢阿里云和百度,腾讯云凭啥刷新大数据国际纪录?
  6. 迷你世界滑动方块机器人怎么做_迷你世界中滑动方块怎么做?
  7. java之HeapByteBufferDirectByteBuffer以及回收DirectByteBuffer
  8. 前端网站-文档、工具
  9. Javaweb中web.xml配置文件编写方式
  10. Python的开源人脸识别库:离线识别率高达99.38%【源码】