定义
在WEB开拓中,做事器可以为每个用户浏览器创建一个会话工具(session工具),把稳:一个浏览器独占一个session工具(默认情形下)。因此,在须要保存用户数据时,做事器程序可以把用户数据写到用户浏览器独占的session中,当用户利用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户做事。 须要把稳:新开的浏览器窗口会天生新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在链接上右击,在弹出的快捷菜单中选择"在新窗口中打开"时,子窗口便可以访问父窗口的Session。 须要把稳:只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session
Session和cookie的差异与联系详细来说cookie机制采取的是在客户端保持状态的方案,而session机制采取的是在做事器端保持状态的方案。两者存储的都是用户登录信息,操作行为等等的数据。
cookie是把用户的数据写在用户本地浏览器上, 其他网站也可以扫描利用你的cookie,随意马虎透露自己网站用户的隐私,而且一样平常浏览器对单个网站站点有cookie数量与大小的限定。Session是把用户的数据写在用户的独占session上,存储在做事器上,一样平常只将session的id存储在cookie中。但将数据存储在做事器对做事器的本钱会高。session是由做事器创建的,开拓职员可以在做事器上通过request工具的getsession方法得到session一样平常情形,登录信息等主要信息存储在session中,其他信息存储在cookie中session的实现事理
做事器会为每一个访问做事器的用户创建一个session工具,并且把session工具的id保存在本地cookie上,只要用户再次访问做事器时,带着session的id,做事器就会匹配用户在做事器上的session,根据session中的数据,还原用户上次的浏览状态或供应其他人性化做事。
浏览器禁用cookie后如何实现session如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?例如,绝大多数的手机浏览器都不支持Cookie。Java Web供应了另一种办理方案:URL地址重写。
URL地址重写
URL重写便是首先得到一个进入的URL要求然后把它重新写成网站可以处理的另一个URL的过程。举个例子来说,如果通过浏览器进来的URL是“UserProfile.aspx?ID=1”那么它可以被重写成 “UserProfile/1.aspx”,这样的URL,这样的网址可以更好的被网站所阅读。
如何通过URL地址重写实现session的id传输URL地址重写的事理是将该用户Session的id信息重写到URL地址中。做事器能够解析重写后的URL获取Session的id。这样纵然客户端不支持Cookie,也可以利用Session来记录用户状态。
HttpServletResponse类供应了encodeURL(String url)实现URL地址重写,该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中。
session和cookie的有效时长session的有效时长做事器会把永劫光没有活动的Session从做事器内存中打消,此时Session便失落效。详细根据做事器设置,一样平常在二三十分钟旁边。
cookie的有效时长cookie的内容紧张包括:名字,值,过期韶光,路径和域。路径与域一起构成cookie的浸染范围。
通过过期韶光可以设置cookie的有效时长
若不设置过期韶光: 表示这个cookie的生命周期为浏览器回话期间,关闭访问做事器的浏览器窗口,cookie就消逝了。一样平常称为回话cookie,保存在内存中 若设置了过期韶光:则cookie会存储在硬盘上,直到超过有效韶光。