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,一经查实,立即删除!

相关文章

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

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

X3D.Studio编辑器界面介绍

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

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

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

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

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

【原译】在amazon kindle上安装Metasploit

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

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

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

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

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

charles修改响应体

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

HW—词频统计

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

oFono安装和启动

安装和启动oFono 1. git clone git://git.kernel.org/pub/scm/network/ofono/ofono.git 2. cd ofono 3. ./bootstrap-configure 或者./configure. configure过程中你可以需要装一些依赖包, 如: sudo apt-get install libudev-dev libdbus-1-dev libcap-ng-dev libto…

全排列问题(递归)

上次上课老师讲了全排列算法,现在刚刚看自己的写的全排列算法,看了好一会才看懂。。。。 应该是自己理解的不够彻底 所以今天彻彻底底的来分析一下 先看图: 思路: 先固定一个字符,然后将固定的字符与它后面的每一个进行…

php内核介绍及扩展开发指南,4.5. 发布扩展信息

发布扩展信息扩展可以发布 phpinfo() 或反射API要求的信息。我们一起来看一下。本章不会太长,因为真的很简单。MINFO( ) 挂钩如果声明了,一切都在声明的 MINFO() 挂钩中进行。如果未声明,则引擎将运行默认功能以打印有关扩展名的信息。该功能…

Ajax乱码解决方案

2019独角兽企业重金招聘Python工程师标准>>> 方案1: 页面端: <% page language"java" contentType"text/html; charsetgb2312" pageEncoding"gb2312"%> http://www.w3.org/TR/html4/loose.dtd"> Ajax: function ve…

花里胡哨,不协调统一的界面,正如看到一个穿花里胡哨衣服的人,让人作呕,不想接近。...

2019独角兽企业重金招聘Python工程师标准>>> 花里胡哨&#xff0c;不协调统一的界面&#xff0c;正如看到一个穿花里胡哨衣服的人&#xff0c;让人作呕&#xff0c;不想接近。 不要瞎变。 转载于:https://my.oschina.net/dongming/blog/40569

python全栈学习--day12(函数高级应用-带参数的装饰器,多个装饰器装饰一个函数)...

函数的执行时&#xff0c;*打散 函数的定义时&#xff0c;*聚合 from functools import wrapsdef wrapper(f):wraps(f)def inner(*args,**kwargs):执行函数之前的相关操作ret f(*args,**kwargs)执行函数之后的相关操作return retreturn inner wrapper def func1(*args):print…

选择排序法对数组进行排序

package selectionSort;import java.util.Arrays;public class Exam { //使用选择排序法对数组进行排序public static void main(String[] args) {int[] nums {23,3453,123,54,12,45,145,135,656,146,65};SelectionSort(nums);System.out.println(Arrays.toString(nums));}publ…

爬取校园新闻首页的新闻

1. 用requests库和BeautifulSoup库&#xff0c;爬取校园新闻首页新闻的标题、链接、正文。 import requests from bs4 import BeautifulSoup url requests.get("http://news.gzcc.cn/html/xiaoyuanxinwen/")url.encoding "utf-8" soup BeautifulSoup(…

php服务划分,云计算提供的服务分为哪三个层次

三个层次&#xff1a;1、基础设施即服务(IaaS)&#xff0c;向云计算提供商的个人或组织提供虚拟化计算资源&#xff1b;2、平台即服务(PaaS)&#xff0c;为开发人员提供通过全球互联网构建应用程序和服务的平台&#xff1b;3、软件即服务((SaaS)&#xff0c;通过互联网提供按需…

如何做个人职业规划和年度计划

在做规划的同时&#xff0c;已经结合工作和个人自身情况思考调整个人的职业规划以及2012年自己的学习成长计划。持续了大约2个月的时间&#xff0c;已经整理出了2012年自己的目标和计划。总结一下&#xff0c;制定个人规划大致分为几个步骤&#xff1a; 一、认识自己。主要包括…

centos 7 快速安装nginx

输入指令 vim /etc/yum.repos.d/nginx.repo 输入以下内容 [nginx] namenginx repo baseurlhttp://nginx.org/packages/centos/7/$basearch/ gpgcheck0 enabled1 wq 进行保存 验证是否安装成功 安装 yum install nginx 启动nginx服务 nginx 测试是否启动成功 在linux输入你的IP地…