理解session

用途数据库

  1. Session能够记录用户的登陆与行为数据,即记录下用户目前访问服务器上的那些内容,状态是什么,而考虑到这些数据用户修改的随意性很大,并无必要直接存储在数据库中。
  2. 在用户执行刷新操做时,即再次访问服务器时,能够直接根据Session,打开用户上次访问时网页的状态(如用户输入的表单内容等等),为用户带来更优的体验,提供个性化服务。
  3. 用户的session信息很是关键,它记录了用户在进入页面、查看结果、点击结果以及后继的操做(好比翻页、加购物车等)。只有经过session信息才能把用户的行为联系起来,构建出完整的模型,所以从海量数据中把每个用户全部session的操做都完整地挖掘出来很是重要。
Session其实就是会话变量的保存地,只要是能使用变量的地方,都能使用 Sesion 变量。好比能够用来 计数、存储临时信息、甚至还能够存储DataTable,只要你的服务器的内存足够大就行。 简单通俗的讲session就是象一个临时的容器 来存放这些临时的东西 从你登录开始就保存在session里 固然你能够本身设置它的有效时间和页面 举个简单的例子 咱们作一个购书的JSP网站 顾客买书的时候会挑选出一些书 可是在付钱以前还能够修改,因此不能存到数据库 就能够先保存在session里 等到确认了之后再放入数据库...

定义浏览器

在WEB开发中,服务器能够为每一个用户浏览器建立一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认状况下)。所以,在须要保存用户数据时,服务器程序能够把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序能够从用户的session中取出该用户的数据,为用户服务。 须要注意:新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在连接上右击,在弹出的快捷菜单中选择"在新窗口中打开"时,子窗口即可以访问父窗口的Session。 须要注意:只有访问JSP、Servlet等程序时才会建立Session,只访问HTML、IMAGE等静态资源并不会建立Session

这里主要讨论cookie和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地址重写。cookie

URL地址重写session

URL重写就是首先得到一个进入的URL请求而后把它从新写成网站能够处理的另外一个URL的过程。举个例子来讲,若是经过浏览器进来的URL是“UserProfile.aspx?ID=1”那么它能够被重写成 “UserProfile/1.aspx”,这样的URL,这样的网址能够更好的被网站所阅读。网站

如何经过URL地址重写实现session的id传输url

URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器可以解析重写后的URL获取Session的id。这样即便客户端不支持Cookie,也可使用Session来记录用户状态。code

HttpServletResponse类提供了encodeURL(String url)实现URL地址重写,该方法会自动判断客户端是否支持Cookie。若是客户端支持Cookie,会将URL原封不动地输出来。若是客户端不支持Cookie,则会将用户Session的id重写到URL中。对象

session和cookie的有效时长

  • session的有效时长

服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。具体根据服务器设置,通常在二三十分钟左右。内存

  • cookie的有效时长

cookie的内容主要包括:名字,值,过时时间,路径和域。路径与域一块儿构成cookie的做用范围。

经过过时时间能够设置cookie的有效时长

相关文章
相关标签/搜索