搜档网
当前位置:搜档网 › session和cookie会话技术总结

session和cookie会话技术总结

session和cookie会话技术总结
session和cookie会话技术总结

什么是会话控制

出现原因:http是无状态协议的,每次都是不同的服务器请求,无法维护两个请求事务之间的关系.

会话控制:能够在网站中跟踪一个变量,通过对变量的跟踪,就可以使多个请求事物之间建立联系,根据授权和用户身份显示不同的内容,不同页面

cookie:是服务器设置在客户端的文本文件,保存客户端的个人信息.

什么是Cookie:

1.cookie是在http协议下,服务器或脚本在客户端保存维护信息的一种方式

2.cookie是web服务器保存在客户端的一个很小的文本文件,保存客户端的信息,提高网页的处

理效率,降低服务器负担

3.cookie保存在客户端,通常在浏览器的cookie临时文件夹中,可以手动的删除.如果cookie太

多超过系统的允许范围,系统将自动删除

cookie的工作原理

1.当用户访问基于php技术的网站时,在php中可以使用setcookie()函数生成一个cookie,

系统经过处理,将cookie发送到客户端并保存在C:\Documents and Setting\用户名\Cookies目录下

2.cookie是http标头的一部分,在它之前不能有任何输出,空格和换行都不可以

3.当客户端再次访问网站时,浏览器会自动把cookie目录下与该站点对应的cookie信息发

送到服务器,服务器将自动把客户端传来的cookie转化成php的变量,.php5中存放在$_COOKIE全局数据中

4.接受和处理cookie.使用$_COOKIE获取

COOKIE的参数设定

Setcookie(键,值,有效期=0,有效路径=‘’,有效域名=‘’,是否仅安全连接传输=false,是否HTTPonly=false)

1、键:设置cookie的名字,数据是在响应阶段被传输到浏览器端的

2、值:设置cookie的值

Tip:增加,修改,删除,都使用该函数setcookie()完成!

3、有效期:默认浏览器关闭(会话周期结束)时,COOKIE失效。也成之为:会话COOKIE

(临时COOKIE)

允许设置COOKIE的有效期,语法上,使用setcookie的第三个参数进行设置,通过unix 时间戳(从1970年到现在的秒数,PHP函数time()来获取当前时间戳。)来设置COOKIE 的有效期。

当用户下次访问您的站点的时候,浏览器会先检查您站点的所有cookie,如果某个cookie 已经过期,浏览器不会把这个cookie随页面请求一起发送给服务器,而是删除这个已

经过期的cookie。时间点是从cookie被创建时候当前时间开始计算。

谁来判断该COOKIE是否过期?(是否在有效期内)

浏览器OR 服务器?

是浏览器判断该COOKIE是否过期的。

在设置COOKIE时,同时将COOKIE的有效期,告知(传输)到浏览器端。

如何删除COOKIE:

Time()-1: 删除COOKIE通用做法,强制设为过期。

注意: 当cookie被删除时,它的值在当前页面仍然有效.如果要把cookie设置成在浏览器关闭后就失效.那么可以把expiretime的值设为0,或者不设此值

4、path有效路径(使用较少):默认仅在当前目录及其后代目录有效。使用空字符串表示

默认值!通常如果需要设置,就是将COOKIE设置为/ 根目录下有效,表示整站有效。

5、有效域(使用频率较高):某个域名下设置的COOKIE,仅仅可以在当前域名下所使用

COOKIE,支持在一级域名内(所有的二级域名之间)进行COOKIE数据共享。

6、secure是否仅安全连接(https)传输:

告知浏览器,我们所设置的cookie,是否仅仅在https这个协议下,才会被发送到浏览器端!用参数第六个完成设置:默认值false,表示都可以(http和https)。

7、HTTPONLY:

所设置好的COOKIE,是否仅仅在http请求时所使用。

COOKIE还可以通过浏览器端的脚本(javascript)获取到。

function getCookie(){

alert(document.cookie);

}

如果需要禁止浏览器端其他脚本使用该cookie,则使用第七个参数即可,默认false,设置为true表示除了http请求,其它地方(javascript)不可以用

COOKIE的有效期:

设置方法如下:

setcookie("cookie_name", "abcd", time()+3600);

解释:这个cookie有3600秒的有效期;

cookie有效期在退出作用域那一刻开始生效;

重新访问又有3600秒,设置cookie时,不会考虑之前的是否设置cookie和cookie 是否有效,可以认为是强制设置。

如果关闭浏览器重新打开又重新算(当然这个要php.ini设置了关闭浏览器立即失效的开关),其实就是打开页面产生cokeie开始算起,如果你打开页面产生cokeie的时间有1800秒了,假如设置的3600秒失效,再次刷新页面就剩1800秒了

PHP手册上关于setcookie函数的expire参数有这样一个解释:

If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes).

如果设为0 或者忽略该参数, cookie将在session结束时(关闭浏览器时)过期

COOKIE的注意事项

1.setcookie()之前不能有任何的输出,空白和空格也不行(Setcookie()为头信息设置)

2.setcookie()之后在当前页面echo时不会输出,必须刷新或到下一个页面才会输出

3.不同浏览对cookie的处理不同,客户端可以禁用cookie,而且对浏览器的数量有限制.一个

浏览器可以最多创建300个cookie,每个不能超过4kb,每个站点最多设置20个

4.避免过度依赖cookie,因为客户端会禁止掉cookie

什么是session?

1.session从用户访问页面开始,到断开与网站的连接为止,形成一个会话的生命周期.在会

话期间,分配客户唯一的一个sessionID,用来标识当前用户,与其他用户进行区分

2.session会话时,session会分别保存在客户端和服务器端的两个文件,对于客户端:使用临

时的cookie保存(cookie的名称为PHPSESSID)或者通过url字符串的形式传递.服务器端也以文本的形式保存在指定的session目录中

3.session通过id接受每一次访问的请求,从而识别当前用户,跟踪和保持用户的具体资料,

以及session变量,可在session中存储数字或文字资料.比如session_name.这些信息都保存在服务器端

4.sessionID可以作为会话信息保存到数据库中,进行session持久化.这样可以跟踪用户的

登陆次数,在线与否,在线时间

如何销毁session

1、unset($_SESSION['XXX']):用于删除单个session变量

注意:不要使用unset($_SESSION),此函数不可用,会删除全局的$_SESSION销毁

2、$_SESSION=array():删除多个session变量

3、销毁session_destroy():结束当前的会话,并清空会话中的所有资源.该函数不会unset(释放)

和当前session相关的全局变量,也不会删除客户端的session cookie

4、清空session值

session_start();

$_SESSION=array();

session的过期时间

session的过期时间由两方面决定的;

1存储在客户端的$_COOKIE['PHPSESSID']的过期时间(默认cookie名称为PHPSESSID,可通过php.ini中的https://www.sodocs.net/doc/f71441180.html,修改。)

2.存储在服务器端的相对应的session文件(session文件名和上述cookie的值一一对应),默认为1440秒,即24分钟

两者的关系:当执行session_start()的时候,其实是做了两件事:

1,检查客户端发送过来的的所有cookie(当然也包括$_COOKIE['PHPSESSID'], 如果有的话),

根据$_COOKIE['PHPSESSID']的值(这是由apache产生的随机字符串,如0lkbd2se458r600m2m7o1r4ic5)来访问相对应的session文件,这两者是一一对应的关系。当然文件里面的值是经过序列化的

2,如果客户端没有传来$_COOKIE['PHPSESSID'],就会有服务端产生一个随机的$_COOKIE['PHPSESSID']并存储在客户端。

需要理解:

1、在session_start()开启之后,当session数据对应的PHPSESSIONID的cookie已经超时,无法传回到服务器端,此时由于session开启,系统会自动再重新分配一个SESSIONID标识,SESSIONID默认是存储于浏览器端。

2、同时在session_start开启之后,如果之前有存储过session,并且没有过期,则会获取到已经存好的session,如果没有存储过session,则session机制默认也会自动分配一个SESSIONID给浏览器,同时在服务器端生成对应的文件,此时的session是一个过期的会话

如何设置session数据的属性?

设置COOKIE中session-ID这个COOKIE变量属性即可!

方案一,配置php.ini

方案二,在脚本中,开启session之前使用函数进行配置

ini_set('session.cookie_lifetime','3600');

ini_set('sesssion.cookie_domain',' https://www.sodocs.net/doc/f71441180.html,');

@session_start();

采用下面的函数进行设置:

Session_set_cookie_params(有效期,有效路径,有效域,是否仅安全连接传输,是否HTTPONLY) 实际环境中,很少改session的有效期。经常改有效域名。

session_set_cookie_params(0,'/', 'https://www.sodocs.net/doc/f71441180.html,');

Session数据区操作:

重写session的存储机制:

Session数据区默认以文件的形式存储与服务器操作系统临时目录中!

当session数据区过多时,文件形式的存储,操作速度变慢,磁盘的读写开销很大

重写session入数据库:

共6个函数

Session_set_save_handler(开始函数,结束函数,读函数,写函数,删除函数,GC函数);

告知session机制,在需要读写时,使用用户自定义的读写函数完成!

这个函数仅仅是设置告知,不是调用,以上6个函数,在session机制运行到某个时间点时,才会被调用!

垃圾回收操作:sessGC()

垃圾:服务器上过时的session数据区。

垃圾如何判定?

如果一个session数据区已经超过多久没有使用(最后一次写操作)了,就是被视为垃圾数据。

该时间临界点:默认1440s。可以被配置:session.gc_maxlifetime = 1440

判断过期条件:Last_write < 当前时间-1440

垃圾如何删除?

在session_start()过程中,开启session机制过程中:有几率地执行垃圾回收操作。

一旦执行,就会删除所有的过期的垃圾数据区。

默认的概率为1/1000。

可以设置该几率:

可能性:Session.gc_probability

基数(除数):Session.gc_divisor

建议在脚本周期调整,使用函数ini_set(),在开启session机制前完成

实现sessGC():PHP的session机制将最大有效期作为参数,传递过来!

语法细节:

要注意先设置再开启session机制

PHP配置项:session.save_handler改为user:表示用户自定义!

会话技术总结:

Session.save_handler 存储处理器:files|user

Session.save_path 存储地址。

Session.cookie_XXX (lifetime,path,domain,secure,httponly)存储session-ID这个COOKIE 变量的属性

Session.gc_maxlifetime

Session.gc_probability

Session.gc_divisor

Session,COOKIE联系和区别?

联系

都是会话技术。

Session基于COOKIE,session-ID存储于COOKIE中!

区别:

Cookie session

存储位置浏览器端服务器端

安全性低高

大小限制有没有

数据类型字符串除资源外的其它全部

有效期使用长时间存几乎不做持久化

Session如何持久化?[理论]

1、Session-ID要持久化:

2、session_set_cookie_params(3600);

服务器session数据区有效期修改:ini_set(‘session.gc_maxlifetime’, 3600);

浏览器禁用COOKIE,session是否可用?[理论]

COOKIE被禁用,session-Id不能存储和传输。

不可用!

理论上的解决方案:

通过URL,或者POST数据数据向服务器端,每次传输session-ID!

例如下面的配置:php.ini

Session是否仅仅是用COOKIE完成传输session-ID:

https://www.sodocs.net/doc/f71441180.html,e_only_cookie = 1 开启(在session_start之前)

是否通过其他方式自动传输session-ID:

https://www.sodocs.net/doc/f71441180.html,e_trans_sid = 0 开启

然后通过表单的隐藏域向服务器端,每次传输session-ID!即可

session和cookie的额外的一些理解:

1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件都有。集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的Session服务器集群,用来保存用户会话,这个时候Session 信息都是放在内存的,使用一些缓存服务比如Memcached之类的来放Session。

2. 思考一下服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。有人问,如果客户端的浏览器禁用了Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如sid=xxxxx 这样的参数,服务端据此来识别用户。

3. Cookie其实还可以用在一些方便用户的场景下,设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。这也是Cookie名称的由来,给用户的一点甜头。

所以,总结一下:

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

Cookie用法大全

COOKIE用法大全ASP中的Cookie用法:Cookie是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个Web站点会话之间持久地保持数据。Reque st和Response对象都有一组Cookie。Request.cookie集合是一系列Cookie,从客户端与HTTP Request一起发送到Web服务器。反过来,如果你希望把Cookie发送到客户机,就可以使用Response.Cookies. 1、Expires属性该属性可以赋一个日期,过了这个日期Cookie就不能再被使用了。通过给Expires属性赋一个过期的日期,就可以删除Cookie。如:<%Response.cookies("passtime").Expires=DateAdd("m", 1, NOW)%> 这样设置Cookie在一个月后过期。2、Domain属性该属性定义Cooki e要传送的唯一域。如:Cookie只传送给Microsoft的人,则可以使用以下代码。<%R esponse.Cookies("domain").Domain="https://www.sodocs.net/doc/f71441180.html,/"%> 3、ASP 用来写入Cookie即向客户机发送Cookie的语法如下:Response.Cookies("C ookie名").[("键名").属性]=内容如果某个ASP文件要创建一个Cookie,则下面的代码可以放在ASP文件的第一个之前,以避免产生错误. <%Response.Cookie s("CookieName")="NewCookie" %> ...... 4、同样ASP用Re quest对象的Cookies集合来读取Cookie,如:<%Response.write Request.Cooki es("CookieName")%> 下面以一个完整的例子来说明Cookie:<% dim Num Num=Request.Cookies("Visit_num") if Num>0 then Num=Num+1 Response. write "您已是第" & Num & "次访问本站点了。" else Response.write "欢迎您首次访问本站。" Num=1 end if Response.Cookies("Visit_num")=Num %> 在该例子中,首先读取Cookies变量Visit_num,看用户端计算机是否保存有Cookies变量。如果有该变量,则说明用户已经访问过该页面,同时输入出访问次数。如果用户是首次访问该页面,则其计算机内不会有Cookies变量,程序会显示“欢迎”字样,然后将Cookies变量Visit_num存到用户计算机中,以便该用户下一次访问该页面时给出“访问的次数”信息。 5、Cookie字典有时在一个页面中可能需要定义很多个Cookies变量,为了更好地管理它,在Cookies组件中常引入一人的概念“子键”。引用它的语法如下:Request. Cookies("变更名")("子键名")如下面的Cookie创建一个名为"Dictionary"的字典,其中保存了三个键值:<% Response.Cookie("info")("Myname")="jeff" Resp onse.Cookie("info")("Gender")="male" Response.Cookie("info")("Myheight")= "172" %> 事实上客户机上的Cookie字典是以字符串的形式存在:info=Myname

深入理解ServletJSP之Cookie和Session原理

由于H T T P协议的无状态特征,W e b应用中经常使用C o o k i e和S e s s i o n来保存用户在与系统交互过程中的状态数据。下面通过分析H T T P协议对C o o k i e和S e s s i o n的工作原理加以了解。 一、C o o k i e C o o k i e的含义是“服务器送给浏览器的甜点”,即服务器在响应请求时可以将一些数据以“键-值”对的形式通过响应信息保存在客户端。当浏览器再次访问相同的应用时,会将原先的C o o k i e通过请求信息带到服务器端。 下面的S e r v l e t展示了C o o k i e的功能。 ......... p u b l i c v o i d d o G e t(H t t p S e r v l e t R e q u e s t r e q u e s t,H t t p S e r v l e t R e s p o n s e r e s p o n s e) t h r o w s S e r v l e t E x c e p t i o n,I O E x c e p t i o n{ r e s p o n s e.s e t C o n t e n t T y p e("t e x t/h t m l"); P r i n t W r i t e r o u t=r e s p o n s e.g e t W r i t e r(); S t r i n g o p t i o n=r e q u e s t.g e t P a r a m e t e r("o p t i o n"); i f("s h o w".e q u a l s(o p t i o n)){ //获得请求信息中的C o o k i e数据 C o o k i e[]c o o k i e s=r e q u e s t.g e t C o o k i e s(); i f(c o o k i e s!=n u l l){ //找出名称(键)为“c o o l”的C o o k i e f o r(i n t i=0;i"+c o o k i e s[i].g e t N a m e()+":" +c o o k i e s[i].g e t V a l u e()+""); } } } }e l s e i f("a d d".e q u a l s(o p t i o n)){ //创建C o o k i e对象 C o o k i e c o o k i e=n e w C o o k i e("c o o l","y e a h!"); //设置生命周期以秒为单位 c o o k i e.s e t M a x A g e(20); //添加C o o k i e r e s p o n s e.a d d C o o k i e(c o o k i e); }

Kristenscookiecompany案例分析

Kristen’s cookie company案例分析 一、案例背景介绍 本案例主要介绍的是好室友1和好室友2要在学校里开一家饼干公司。该公司根据订单情况,提供定制化的产品。并且,公司的订单必须是完全新鲜的,因此在接到订单之前不能烘烤饼干。Kristen饼干的制作流程很简单,第一个步骤是接到订单,接订单的时间忽略不计;然后是清洗制作上一批产品时,用于混合原材料的碗,接着进行搅拌,清洗和搅拌的过程需要6分钟;将饼干放入烤盘,需要2分钟;接着把饼干放入烤箱并设定时间和温度,这个过程需要1分钟的时间;烤制饼干需要9分钟;饼干烤熟之后,进行5分钟冷却;继而进行包装,需要2分钟;最后收钱需要1分钟。 在这个过程中,好室友1需要做的是清洗和搅拌工作以及把饼干放入烤盘;好室友2需要做的是讲饼干放入烤箱并设定时间和温度,把烤好的饼干进行包装,以及最后的收费工作。 在这个过程中涉及到的成本主要有:原料成本——0.6美元/打;用来包装饼干的盒子成本——0.1美元/打,这种盒子每个只能装1打饼干;好室友1和好室友2的时间成本。 二、案例说明 1、时间以及成本 根据案例,我们对饼干制作流程以及制作过程中的人员分配进行简单归纳,见表1. 表1:各项流程耗时及人员说明 2、流程分析 为了更好的理解Kristen饼干制作时的过程,我们绘制出整个饼干产品生产的流程图。

6分钟/次 2分钟/盘 9分钟/次5分钟/次2分钟/打1分钟/单 图1:饼干制作流程图 3、其他 饼干是完全新鲜的,因此在接到订单之前不能烘烤饼干。 三、案例分析 1、你需要多长时间来处理一个紧急的订单? 为了简化分析,我们首先来考虑一种比较简单的情况,即对问题做出如下基本假设: 假设1:仅分析订单单位均为1打的情况,即我们假设,紧急订单都需要的是1打饼干。 假设2:如果紧急订单到达时有正在处理的订单,则正在处理的订单之后无订单。(即正在处理的订单之后就马上是紧急订单) 假设3:烤箱、烤盘、搅拌器均只有一个。 在分析之前,我们定义一个函数()y i 。()y i 表示完成每一个生产流程所需要的时间。其中,i 表示的是根据图1所表示的生产流程进行到第i 个步骤,取值为1,2,...,7i 。根据案例背景,我们很容易得到()y i 的表达式如下: (1)紧急订单之前,好室友1和好室友2是闲暇的,即不存在排队情况。那么

APPlication,Session和Cookie的区别

APPlication,Session 和Cookie 的区别 方法信息量大小 保存时间应用范围保存位置 Application 任意大小整个应用程序的生命期 所有用户服务器端Session 小量,简单的数据用户活动时间+一段延迟时间(一般为20分钟) 单个用户服务器端Cookie 小量,简单的数据可以根据需要设定 单个用户客户端1.Application 对象 Application 用于保存所有用户的公共的数据信息,如果使用Application 对象,一个需要考虑的问题是任何写操作都要在Application_OnStart 事件(global.asax)中完成.尽管使用Application.Lock 和Applicaiton.Unlock 方法来避免写操作的同步,但是它串行化了对Application 对象的请求,当网站访问量大的时候会产生严重的性能瓶颈.因此最好不要用此对象保存大的数据集合 2.Session 对象 Session 用于保存每个用户的专用信息.她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session 中的信息保存在Web 服务器内容中,保存的数据量可大可小.当Session 超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session 对象使保存用户数据的方法效率很低.对于小量的数据,使用Session 对象保存还是一个不错的选择.使用Session 对象保存信息的代码如下:// 存放信息Session["username"]="zhouhuan";//读取数据string UserName=Session["username"].ToString(); 3.Cookie 对象 Cookie 用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie 失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie 对象的Expires 属性设置为Minvalue,则表示Cookie 永远不会过期.Cookie 存储的数据量很受限制,大多数浏览器支持最大容量为4096,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全

Java基础-关于session的详细解释

Java基础-关于session的详细解释 session, Java, 基础, 解释 一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的 含义是相同的。 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。有时候我们可以看到这样的话“在一个浏览器会话期间,...”,这里的会话一词用的就是其本义,是指从一个浏览器窗口打开到关闭这个期间①。最混乱的是“用户(客户端)在一次会话期间”这样一句话,它可能指用户的一系列动作(一般情况下是同某个具体目的相关的一系列动作,比如从登录到选购商品到结账登出这样一个网上购物的过程,有时候也被称为一个transaction),然而有时候也可能仅仅是指一次连接,也有可能是指含义①,其中的差 别只能靠上下文来推断②。 然而当session一词与网络协议相关联时,它又往往隐含了“面向连接”和/或“保持状态”这样两个含义,“面向连接”指的是在通信双方在通信之前要先建立一个通信的渠道,比如打电话,直到对方接了

电话通信才能开始,与此相对的是写信,在你把信发出去的时候你并不能确认对方的地址是否正确,通信渠道不一定能建立,但对发信人来说,通信已经开始了。“保持状态”则是指通信的一方能够把一系列的消息关联起来,使得消息之间可以互相依赖,比如一个服务员能够认出再次光临的老顾客并且记得上次这个顾客还欠店里一块钱。这一类的例子有“一个TCP s ession”或者“一个POP3 session”③。 而到了web服务器蓬勃发展的时代,session在web开发语境下的语义又有了新的扩展,它的含义是指一类用来在客户端与服务器之间保持状态的解决方案④。有时候session也用来指这种解决方案的存储结构,如“把xxx保存在session里”⑤。由于各种用于web开发的语言在一定程度上都提供了对这种解决方案的支持,所以在某种特定语言的语境下,session也被用来指代该语言的解决方案,比如经常把Java 里提供的javax.servlet.http.HttpSession简称为session⑥。 鉴于这种混乱已不可改变,本文中session一词的运用也会根据上下文有不同的含义,请大家注意分辨。 在本文中,使用中文“浏览器会话期间”来表达含义①,使用“session机制”来表达含义④,使用“session”表达含义⑤,使用 具体的“HttpSession”来表达含义⑥

java web之会话技术cookie+session

会话技术 1.什么是会话: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接、访问多少个资源,直到用户关闭浏览器,整个这个过程我们成为一次会话 2.实际情况: 张三打开浏览器,进入淘宝,买了2样东西;李四打开浏览器,进入淘宝,买了3样东西。当这两位结账时,结账的s e r v l e t如何得到张三和李四买的东西,并为他两分别结账? 3.使用会话保存数据 ?S e s s i o n ?C o o k i e 为什么需要C o o k i e? 情景1.张在访问某个网站的时候,看到了提示你上次登录网站的时间,而且不同用户上次登录时间不同,这个怎么实现 没有会话技术前:u s e r表每次用户登录就更新u s e r表里的时间 I d N a m e P a s s w o r d L o g i n_t i m e v i e w H i s t o r y 001A a A a2012-1-5 5:00:0022,33,2 5 002B b B b2012-3-12 6:00:0012,24,5 6 情景2.访问购物网的时候,能够看到曾经浏览过的商品,当然不同用户浏览过的商品不同 如果登录了,则可以用数据库 但如果没有登录那又怎么办?????? 情景3.保存登录密码及用户名 Cookie技术 1.服务器把每个用户的数据以cookie的形式写给用户各自的浏览器当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去 Servlet有一个Cookie类 Cookie(String name ,String value) 3.Cookie小结: ①Cookie在服务端创建 Cookie cookie = new Cookie(name,value); ②Cookie是保存在浏览器这端 response.addCookie(cookie); ③Cookie的生命周期可以通过cookie.setMaxAge(int second)来设置 Cookie默认生命周期是会话级别(即存储在浏览器的内存中) 如果没有设置setMaxAge(),则该cookie的生命周期当浏览器关闭时就挂了,setMaxAge(0) +response.addCookie(cookie),相当于删除Cookie 此时如果cookie文件内部只有该Cookie则,文件也一并删除;否则只删除该Cookie ④Cookie可以被多个浏览器共享

WINDOW.OPEN各属性及用法详解

一、window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+二、基本语法:window.open(pageURL,name,parameters)其中:pageURL为子窗口路径name为子窗口句柄parameters为窗口参数(各参数用逗号分隔)三、示例:脚本运行后,page.html将在新窗体newwindow中打开,宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。请对照。上例中涉及的为常用的几个参数,除此以外还有很多其他参数,请见四。四、各项参数其中yes/no也可使用1/0;pixel value为具体的数值,单位象素。参数|取值范围|说明alwaysLowered|yes/no|指定窗口隐藏在所有窗口之后alwaysRaised|yes/no|指定窗口悬浮在所有窗口之上depended|yes/no|是否和父窗口同时关闭directories| yes/no|Nav2和3的目录栏是否可见height|pixel value|窗口高度hotkeys|yes/no|在没菜单栏的窗口中设安全退出热键innerHeight| pixel value|窗口中文档的像素高度innerWidth|pixel value|窗口中文档的像素宽度location|yes/no|位置栏是否可见menubar|yes/no|菜单栏是否可见outerHeight|pixel value|设定窗口(包括装饰边框)的像素高度outerWidth|pixel value|设定窗口(包括装饰边框)的像素宽度resizable|yes/no|窗口大小是否可调整screenX|pixel value|窗口距屏幕左边界的像素长度screenY|pixel value|窗口距屏幕上边界的像素长度scrollbars|yes/no|窗口是否可有滚动栏titlebar|yes/no|窗口题目栏是否可见toolbar|yes/no|窗口工具栏是否可见Width|pixel value|窗口的像素宽度z-look|yes/no|窗口被激活后是否浮在其它窗口之上 =================================== ==================【1、最基本的弹出窗口代码】其实代码非常简单:因为着是一段javascripts代码,所以它们应该放在之间。是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。Window.open ('page.html')用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以,只是不要混用。这一段代码可以加入HTML的任意位置,和之间可以,间也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。【2、经过设置后的弹出窗口】下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。