cookie和session是常用的会话跟踪技术

cookie机制

1、web应用程序是使用HTTP协议传输数据的,HTTP协议是无状态的协议,一旦数据交换完毕就会关闭链接。Cookie可以弥补HTTP协议无状态的不足。

位于:javax.servlet.http.Cookie

2、Cookie具有不可跨域名性。Cookie的管理是浏览器,浏览器判断一个网站是否能操作另一个网站的Cookie的依据是域名。例:p_w_picpaths.baidu.com与www.baidu.com不是同一个域名,cookie不能相互操作。但可以对此类cookie做特殊处理,让其相互访问。

3、Unicode编码:保存中文

中文属于Unicode字符,在内存中占4个字符,而英文属于ASCII字符,内存中只占2个字节。Cookie中使用Unicode字符时需要URLEncode编码,否则乱码。一般采用UTF-8即可,GBK不推荐使用,因为浏览器不一定支持,而javascript也不支持GBK。

4、BASE64编码:保存二进制图片

Cookie可以使用二进制数据。例如在Cookie中使用数字证书,提供安全度。使用二进制数据时需要编码BASE64。

BASE64:sun.misc.BASE64Encode;sun.misc.BASE64Decoder;

byte[] binary = new byte[1024];

String content = BASE64Encode.class.newInstance().encode(binary);

5、Cookie的属性

6、Cookie的有效期

cookie.setMaxAge(秒)

负数:为临时性Cookie,不会被持久化,不会写到cookie文件中,cookie信息保存在浏览器内存中,关闭浏览器cookie就会消失,cookie的默认值为-1。

0:为零表示删除该cookie,会从浏览器内存中删除。

maxAge属性只是被浏览器判断是否过期的,不会提交到服务端。

修改:新建一个同名的cookie,覆盖原来的cookie。

删除:新建同名的cookie,并将maxAge为零,进行覆盖。

7、永久登录

方案:在登录时查询一次数据库,以后访问验证登录信息时不再查询数据库。实现方式是把账号按照一定的规则加密后,连同账号一块保存到cookie中。下次访问时只需要判断账号的加密规则是否正确即可。如:把账号连同密匙用MD5算法加密后保存到cookie中,验证时,验证cookie中的账号与密匙是否与cookie中的一样。

session机制

session对应类javax.servlet.http.HttpSession类

session的使用比cookie方便,但过多的session存储在服务器内存中,会对服务器造成压力。

session的生命周期:

session在用户第一次访问服务器的时候自动创建,需要注意只有访问JSP,Servlet等程序时才会创建session,访问html等静态资源并不会创建session。如果未生成session,可以使用request.getSession(true)强制生成。session生成后,只要用户继续访问,服务器就会更新session的最后时间,并维护session。用户每访问服务器一次,无论是否读写session,服务器都认为该用户的session活跃了一次。

session的有效期:

越来越多的用户访问,session也会越多,为防止内存溢出,服务器会把长时间内没有活跃的session从内存中删除。超时时间属性为maxInactiveInterval,可设置超时时间。

tomcat的默认超时时间是20分钟。

web.xml也可以设置超时时间

60

session对浏览器的要求:

http协议是无状态的,不能依据http连接来判断是否同一客户,因此服务器向客户发送一个名为JSESSIONID的cookie,它的值为session的id,session依据该cookie来识别是否为同一用户。该cookie为服务器自动生成,他的maxAge属性为-1,表示仅当前浏览器内有效。

如果客户端浏览器将cookie功能禁止,或者不支持cookie,例如大多数手机浏览器都不支持cookie,Javaweb提供另一种方案:URL地址重写。

URL地址重写:

原理是将该用户session的id信息重新写到URL地址中。

java跟踪会话_JavaWeb会话跟踪相关推荐

  1. 基于JAVA社区老人健康服务跟踪系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA社区老人健康服务跟踪系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA社区老人健康服务跟踪系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B ...

  2. java计算机毕业设计教学互动跟踪系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计教学互动跟踪系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计教学互动跟踪系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  3. java计算机毕业设计在线学习跟踪系统后台源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计在线学习跟踪系统后台源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计在线学习跟踪系统后台源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构 ...

  4. 会话及会话技术、Cookie对象、Session对象 详解

    会话及会话技术 当用户通过浏览器访问Web应用时,通常情况下,服务器需要对用户的状态进行跟踪.例如,用户在网站结算商品时,Web服务器必须根据 请求用户的身份,找到该用户所购买的商品.在Web开发中, ...

  5. 第5章 会话及其会话技术

    目录 5.1 会话概述 5.2 Cookie对象 5.2.1 什么是Cookie 5.2.2 Cookie API [任务5-1]显示用户上次访问时间 5.3 Session 对象 5.3.1 什么是 ...

  6. 动态网站开发讲课笔记05:会话及会话技术

    文章目录 零.本节学习目标 一.会话概述 (一)会话的概念 (二)全局数据共享 二.Cookie对象 (一)什么是Cookie 1.Cookie的概念 2.如何设置Cookie 2.Cookie操作示 ...

  7. oracle 数据跟踪软件,oracle数据库跟踪工具

    有没有一个能跟踪oracle数据库中执行SQL代码的跟踪工具? 通过Oracle企业管理器建立跟踪从Top Consumers页面(可以通过Additional Monitoring Links区域中 ...

  8. 转:WF中的跟踪服务(1):Sql跟踪数据库表,视图,存储过程等相关说明

    使用WF 中的SqlTrackingService 跟踪服务,我们可以记录有关工作流及其关联活动的跟踪信息到Sql Server数据库库中.SqlTrackingQuery 类提供对包含在跟踪数据库中 ...

  9. linux 内核连接跟踪,Linux内核连接跟踪锁的优化分析(1)

    Linux内核连接跟踪锁的优化分析(1) 作者:gfree.wind@gmail.com 博客:linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer ...

最新文章

  1. sql查询父节点所有子节点id_5招搞定SQL棘手问题,同事看到直呼“内行”
  2. python全栈开发,Day40(进程间通信(队列和管道),进程间的数据共享Manager,进程池Pool)...
  3. 安卓v7支持包下的ListView替代品————RecyclerView
  4. oracle数值类型--LOB+ROWID/UROWID
  5. java后台接收数据格式_Java后台基于POST获取JSON格式数据
  6. javax.servlet.servlet
  7. OAuth 2.0介绍
  8. 蔡先生论道大数据之八: 让他在看小说的时候, 看到喜欢的汽车
  9. Flask初级(十)flash与前台交互post详解
  10. c语言求闰年平年的计算方法,C语言平年闰年问题
  11. Ubuntu安装docker报错:Command ‘lsb_release‘ not found
  12. modbus调试工具开发(1)--windows下编译libmodbus库文件
  13. python请输入一个三位数输出该三位数的逆序数_键盘输入一个三位数,输出逆序后的数...
  14. 湖南职称计算机模拟试题,湖南职称计算机考试培训软件:集职称计算机考试模拟题、长沙职称计算机考试题库...
  15. 32款 jQuery UI框架开源软件
  16. Chrome浏览器如何实现多开操作?(Mac系统为例)
  17. 不可重复读和幻读有什么区别区别?
  18. 数据的类型:分类数据、顺序数据、数值型数据
  19. java计算机毕业设计小区物业管理系统录像展示.mp4源程序+mysql+系统+lw文档+远程调试
  20. command a expects \ followed by text

热门文章

  1. Python的正则表达式笔记
  2. iOS开发:通过经纬度获得城市、省份等信息
  3. android获取网络图片
  4. 在现有的python环境下创建另一个python版本【亲测有效】
  5. 数字图像处理频域滤波实现低通与高通滤波(包含matlab代码)
  6. jQuery安装和语法
  7. 2、基于wsgiref模块DIY一个web框架
  8. 普及几个小常识,新手技能补充
  9. 基于数据库的事务消息解决分布式事务方案
  10. 项目Alpha冲刺Day4