java跟踪会话_JavaWeb会话跟踪

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的属性

cf4671f598942841bc66494d62b99e15.png

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地址中。

d5e874da68b0bb0c1ff8f6866acd67a8.png

b94c873692f499bf589a13f2ae49962d.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267370.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Uva 1625 - Color Length(DP)

题目链接 https://cn.vjudge.net/problem/UVA-1625 【题意】 输入两个长度分别为n和m的颜色序列&#xff08;n&#xff0c;m<5000&#xff09;&#xff0c;要求按一定规则合并成一个序列&#xff0c;规则是每次可以把一个序列开头的颜色放到新序列的尾部。例如对于序列GBBY…

教你用身份证号查社保卡号 个人电脑号

适用前提&#xff1a;在广东省内交社保 用身份证查社保号第一步 登录广东社保局网站 广东社保局网站 在“全省个人养老保险信息查询“框输入你的身份证号码 这时要密码&#xff0c;面此要注册&#xff0c;注册时那红星星不用理会&#xff0c;除了姓名其他乱填即可&#xff0c;这…

X3D.Studio编辑器界面介绍

2019独角兽企业重金招聘Python工程师标准>>> X3DStudio编辑器的界面可分为【菜单栏】、【属性栏】、【显示栏】和【对象信息栏】四大部分。如下图所示。 X3D.Engine 通用虚拟现实引擎安装包下载地址&#xff1a;http://www.x3dengine.cn/Download.aspx 技术支持QQ群…

浏览器BOM模型

百度百科&#xff1a;浏览器对象模型(BrowserObjectModel) 主要功能 1. 弹出新浏览器窗口的能力&#xff1b;2. 移动、关闭和更改浏览器窗口大小的能力&#xff1b;3. 可提供WEB浏览器详细信息的导航对象&#xff1b;4.可提供浏览器载入页面详细信息的本地对象&#xff1b;5 .可…

java map的理解_java中的hashmap理解

Asp&period;net Boilerplate之AbpSession扩展当前Abp版本1.2,项目类型为MVC5. 以属性的形式扩展AbpSession,并在"记住我"后,下次自动登录也能获取到扩展属性的值,版权归"角落的白板报"所 ...使用Mavne生成可以执行的jar文件到目前为之,还没有运行Hello…

Asp.net中DataBinder.Eval用法的总结

Asp.net中DataBinder.Eval用法的总结 缩短的Eval语法与DataBinder.Eval的不同点在于&#xff0c;Eval会根据最近的容器对象&#xff08;例如DataListItem&#xff09;的DataItem属性来自动地解析字段&#xff0c;而DataBinder.Eval需要使用参数来指定容器 Eval 和 Bind绑定的数…

php 三方即时通讯_php即时通讯解决方案-请问PHP能否实现即时通讯?

最简单的说&#xff0c;它可以定期刷新&#xff0c;比如10秒的间隔。新数据&#xff0c;反馈到前台&#xff0c;没有新数据等待下次刷新。但实际上在应用中需要考虑消息的及时性、服务器压力等。php即时通讯。可以用comet来设计节点。js、socketphp即时通讯系统。总之&#xff…

保存、删除配置文件

保存&#xff1a;write <> copy running-config startup-config 删除&#xff1a;erase startup-config转载于:https://blog.51cto.com/jackcyc/756029

javascript 中文与Unicode相互转化

javascript 中文与Unicode相互转化 CreateTime--2018年3月30日11:26:50 Author:Marydon /*** 中文与Unicode的相互转换*/ var chineseUnicodeConverter {toUnicode:function(chinese){// 自定义String去除左右空格方法 var str chinese || "";str str.tri…

php fopen插入文本_PHP 文件创建/写入

在项目中&#xff0c;我们在服务器上面操作文件&#xff0c;是一件非常频繁的事情。比如用户的投票的数据写入到txt文档中&#xff0c;缩略图上传&#xff0c;文件上传&#xff0c;及文件移动等等操作都离不开PHP 文件创建/读写/上传(上传我将会在下一节中讲到)。PHP 创建文件 …

【原译】在amazon kindle上安装Metasploit

免责申明&#xff08;必读&#xff01;&#xff09;&#xff1a;本博客提供的所有教程的翻译原稿均来自于互联网&#xff0c;仅供学习交流之用&#xff0c;切勿进行商业传播。同时&#xff0c;转载时不要移除本申明。如产生任何纠纷&#xff0c;均与本博客所有人、发表该翻译稿…

java实现将一个正整数分解质因数,Java将一个正整数分解质因数

import java.io.*;public class Factorization{public void division(int input){for(int i 2; i < input / 2; i){if(input % i 0){System.out.print(i "*");division(input / i);}}System.out.print(input);System.exit(0);//不能没有这句&#xff0c;否则结…

这就是搜索引擎:核心技术详解

这就是搜索引擎&#xff1a;核心技术详解张俊林 著ISBN 978-7-121-14865-12012年1月出版定价&#xff1a;45.00 元16开320页宣传语&#xff1a;改变全世界人们生活方式的“信息之门”内 容 简 介搜索引擎作为互联网发展中至关重要的一种应用&#xff0c;已经成为互联网各个领域…

僵尸进程和孤儿进程 转载

孤儿进程&#xff1a;一个父进程退出&#xff0c;而它的一个或多个子进程还在运行&#xff0c;那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养&#xff0c;并由init进程对它们完成状态收集工作。 僵尸进程&#xff1a;一个进程使用fork创建子进程&#…

『MCSE 2008系统管理视频』Unit 6 文件资源管理——NTFS MCSE 2008

NTFS权限的种类 用户的有效权限 NTFS权限的设置 文件与文件夹的所有权 文件复制或移动后权限的变化 文件的压缩 EFS 磁盘配额 MCSE 2008系统管理之件资源管理——NTFS 转载于:https://blog.51cto.com/ldj027/759326

php yii 控件分页,Yii2分页的使用及其扩展方法详解

前言&#xff1a;说明下我们本篇文章都要讲哪些内容分页的使用&#xff0c;一步一步的教你怎么做分页类LinkPager和Pagination都可以自定义哪些属性分页类LinkPager如何扩展成我们所需要的第一步&#xff0c;我们来看看yii2自带的分页类该如何去使用&#xff1f;1、controller …

charles修改响应体

一.修改响应体&#xff08;只要勾选了主导航Tools--rewrite之后&#xff0c;则请求会一直被修改&#xff09; 目的&#xff1a;需要测试数据为空&#xff0c;为纯英文&#xff0c;纯数字等多种情况&#xff0c;为了不麻烦后端的技术人员一支来配置&#xff0c;那么咱们就可以改…

php json 不转义,php json_encode中文不转义

php json_encode函数处理完包含中文的字符串之后&#xff0c;中文会被处理成一串看不懂的字符串&#xff0c;非常不方便&#xff0c;查了一下php文档&#xff0c;发现自php 5.4起&#xff0c;json_encode新增了一个参数 JSON_UNESCAPED_UNICODE。JSON_UNESCAPED_UNICODE(中文不…

查看UNIX系统版本

uname -a uname -n 查看主机名&#xff0c;等价于hostname uname -m 查看硬件信息 uname -r 查看系统版本号 uname -s 查看系统类型 经常是uname -sr这样使用&#xff0c;输出如下 SunOS 5.10

HW—词频统计

第一次个人作业——词频统计 第一次做这种大作业&#xff0c;明显感觉陌生&#xff0c;各种规范和技能也是第一次使用&#xff0c;希望自己好运。 目录&#xff1a;一、基本要求 二、需求分析及时间估计 三、实现思路及过程 四、测试用例、时间性能分析及改进方法 五、经验总结…