JavaWeb会话跟踪

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

cookie机制

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

位于:javax.servlet.http.Cookie

2、Cookie具有不可跨域名性。Cookie的管理是浏览器,浏览器判断一个网站是否能操作另一个网站的Cookie的依据是域名。例:images.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也可以设置超时时间

<session-config>

<session-timeout>60</session-timeout >  <!—单位:分钟à

</session-config>

session对浏览器的要求:

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

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

URL地址重写:

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

参考http://book.51cto.com/art/200912/169770.htm

JavaWeb会话跟踪,布布扣,bubuko.com

时间: 2024-10-03 07:06:57

JavaWeb会话跟踪的相关文章

会话跟踪--session

一.HttpSession 1. HttpSession概述 * HttpSession是由JavaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端!!! * HttpSession是Servlet三大域对象之一(request.session.application(ServletContext)),所以它也有setAttribute().getAttribute().removeAttribute()方法 * HttpSession底层依赖Cookie,或是URL

2.会话跟踪技术

1.什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了.从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束.在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中. 在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束. 在一个会话的多个请求中共享数据,这就是会

Servlet - 会话跟踪

会话跟踪 标签 : Java与Web 会话跟踪 HTTP本身是"无状态"协议,它不保存连接交互信息,一次响应完成之后即连接断开,下一次请求需要重新建立连接,服务器不记录上次连接的内容.因此如果判断两次连接是否是同一用户, 就需要使用会话跟踪技术来解决.常见的会话跟踪技术有如下几种: URL重写: 在URL结尾附加会话ID标识,服务器通过会话ID识别不同用户. 隐藏表单域: 将会话ID埋入HTML表单隐藏域提交到服务端(会话ID不在浏览器页面显示). Cookie: 第一次请求时服务器主

JavaEE基础(04):会话跟踪技术,Session和Cookie详解

本文源码:GitHub·点这里 || GitEE·点这里 一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操作结果才能和登录用户做关联. 2.概念简介 可以把会话理解为客户端与服务器之间的一次交互,在一次交互中可能会包含多次请求和响应.在JavaWeb中,从客户端向服务器发出第一个请求开始,会话就开始了,直到客户端关闭浏览器会话结束.在一个会话的多个请求中共享数据,这就是会话跟踪技术. 二.Cookie用

WEB中会话跟踪[转]

今天晚上去华工参加睿智融科的笔试,问到web会话跟踪,一脸懵比,这个词听都没听过,回来后百度下,发现其实会话跟踪的内容我基本都了解的~_~ 转自:http://www.cnblogs.com/gaopeng527/p/5246708.html 一.     什么叫会话跟踪 记录用户一段时间内的逻辑上相关联的不同访问请求个过程叫"会话跟踪".通过用户在每次对服务请求时的唯一标识,可以跟踪会话. 二.     会话跟踪产生的原因 我们都知道Internet通信协议可以分为有状态协议和无状态

java中会话跟踪技术

1.什么是会话跟踪技术? 会话跟踪技术,是针对无状态连接中,跟踪用户关键操作的技术. 具体应用场景,是淘宝网中用户登录后购买商品,但是服务器并不能将用户和商品对应起来:因此,需要通过会话跟踪技术来实现追踪定位. 2.java中有四种会话跟踪技术: cookie,session,url重写,隐藏域. cookie: 服务器创建保存于浏览器端,下次用户再访问该站点服务器的时候,保存在用户机器上的cookie信息就被送回给服务器端.一般cookie大小不大于4KB,且用户的敏感信息和账户密码不应该保存

会话管理-0.1.会话跟踪

1.什么是会话跟踪? 会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话. 在程序中,会话跟踪是很重要的事情.理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆.例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话. 2.为什么要会话跟踪? Web应用程序是使用HTTP协议传输数据的.HTTP协议是无状态的协议,一旦数据交

会话跟踪技术

会话跟踪是一种灵活.轻便的机制,它使Web上的状态编程变为可能.HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的.非连续的.当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题.当一个客户在多个页面间切换时,服务器会保存该用户的信息.有四种方法可以实现会话跟踪技术:URL重写.隐藏表单域.Cookie.Session.1).隐藏表单域:<input type="hidden">,

7、Servlet会话跟踪

一.会话跟踪: 不管操作多少功能,都是与当前登录用户相关的信息,当前的登录用户始终没有改变,也就是用户名和密码都没有丢失.但HTTP协议是一个无状态的协议,当一个客户向服务器发出请求(request),在服务器返回响应(response)后,连接就关闭了.这时,在服务器端不保留连接相关的信息,因此当下一次请求连接时,服务器已没有以前连接的信息了,也就无法判断这一次连接和以前的连接是否属于同一客户,也就是说Web服务器无法跟踪客户状态.在 Servlet 规范中,常用以下两种机制完成会话跟踪: a