这篇文章将为大家详细讲解有关session基础有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联建站是网站建设技术企业,为成都企业提供专业的网站建设、成都网站设计,网站设计,网站制作,网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制适合企业的网站。10多年品质,值得信赖!
之前讲过cookie,但是cookie是保存在客户端浏览器的,如果敏感信息使用cookie来保存会造成安全隐患,所以cookie在某些场景下是不适合的,此时可以使用session。
session技术也是用于保存用户在请求中的一些重要信息,但是session技术与cookie的不同点在于session是针对用户请求的,在服务端创建一个对象,然后把用户的请求中重要的数据保存在服务端创建的这个对象中。(sesion是保存在服务端中)因此只有用户不关闭浏览器,用户通过当前的个浏览器访问当面网站中任何一个页面,服务器内部始终将使用当前这个session来记录数据,所以可以将session当做一个容器,针对当前用户(浏览器)来存放不同页面上需要共享的数据。
在web项目中,服务器可以为每一个用户浏览器创建一个会话对象(session对象),在默认情况下,一个浏览器是独占一个session对象的,因此在需要保护用户数据时,服务器程序可以把用户数据卸载用户浏览器独占的session中,当用户使用浏览器访问其他程序时,其他程序可以从用户的session中取出该用户的数据。
session是一个域对象,所谓的域可以理解为有边界的容器,既然是容器那么就可以存放东西,这里就是存放数据,既然有边界,就是这里的数据在某一个范围内是有效果。下面比较一下web项目中的三个域对象:
ServletContext:代表的是整个项目,里面存储的数据可以在当前项目的任何一个程序中使用
HttpServletRequest: 代表的是当前这个请求,在转发的时候(因为转发是同一个请求,但是重定向就不是)可以将当前请求中存储的数据转给下一个servlet或者jsp进行处理
HttpSession:代表的是用户(浏览器)对当前服务器的一系列操作时的那个容器,可以在当前每一个用户(浏览器)内部进行数据的共享操作。
登录成功后将登陆的信息放到session中,然后在用户操作其他的页面后,都可以显示用户的信息。
可以通过HttpServletRequest对象来获取session,有两个方法可以获取
request.getSession()
如果sesion不存在,则会创建
如果session已经存在,就会返回当前这个session对象
request.getSession(boolean)
如果session对象存在,则返回当面的sesion对象
session对象不存在,不会创建session,而是返回一个null
参数为true则和getSession()方法的效果是一样的
参数为false
每一个用户都可以有自己的session信息,那么服务器怎么识别每一个用户的session对象呢?其实是因为服务器针对每一个用户都发送了一个key为JSEESSIONID的cookie信息,用户在操作的时候,都会携带这个cookie到服务器,这样服务器才可以识别针对当前的这个JSESSIONID的那个session对象。
服务器在给客户端响应数据的时候,把session对象的jsessionId作为cookie的key值发送给浏览器,这个cookie是会话级别的(临时的),该cookie只可以存在于浏览器运行期间,如果浏览器关闭了,cookie的信息就没有了,当再一次打开浏览器的时候,就不会再服务器获取当前用户的jsessionid信息,无法找到针对当前用户的那个session容器,所以浏览器关闭后session不可用。
关于session基础有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。