Session的理解

在登陆时,request.getSession().setAttribute("userName", "lixinjie"),request.getSession().setAttribute("nickName", "李大胖")等。
在程序中如果要使用的话,是这样的request.getSession().getAttribute("nickName")等。
在登出时,是这样的request.getSession().removeAttribute("userName"),request.getSession().removeAttribute("nickName")等,终于知道用remove了。

 

1.Session是由tomcat(Servlet容器)创建的,驻留在内存里,每个Session都有一个唯一的Id标识,叫做session id。当用户登陆时,这个session id会被服务器写到cookie里传回客户端。
下次这个客户端再发起请求时就会把这个cookie带上,tomcat从cookie里解析出session id,然后去自己的所有session里找,如果找到session说明他已经登陆过了,反之则没有,要求他去登陆。

2.Servlet已经涵盖了JSP技术,因为JSP最终也会被编译为Servlet,两者有着相同的本质。

3.Session创建的时间是: 一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建,注意如果JSP没有显示的使用 <% @page session="false"%> 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句 HttpSession session = HttpServletRequest.getSession(true);这也是JSP中隐含的 session对象的来历。 由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它。   4.Session删除的时间是: 1)Session超时:超时指的是连续一定时间服务器没有收到该Session所对应客户端的请求,并且这个时间超过了服务器设置的Session超时的最大时间。 2)程序调用HttpSession.invalidate() 3)服务器关闭或服务停止   5.session存放在哪里:服务器端的内存中。不过session可以通过特殊的方式做持久化管理。   6.session的id是从哪里来的,sessionID是如何使用的:当客户端第一次请求session对象时候,服务器会为客户端创建一个session,并将通过特殊算法算出一个session的ID,用来标识该session对象,当浏览器下次(session继续有效时)请求别的资源的时候,浏览器会偷偷地将sessionID放置到请求头中,服务器接收到请求后就得到该请求的sessionID,服务器找到该id的session返还给请求者(Servlet)使用。一个会话只能有一个session对象,
上一篇:mongodb4.0支持事务


下一篇:使用CSS实现网站整体灰色显示