win7网站服务器制作软件,百度用户服务中心,做网站需要什么手续资料,网站开发相关知识session在web开发中是一个非常重要的概念#xff0c;这个概念很抽象#xff0c;很难定义#xff0c;也是最让人迷惑的一个名词#xff0c;也是最多被滥用的名字之一#xff0c;在不同的场合#xff0c;session一次的含义也很不相同。这里只探讨HTTP Session。为了说明问题…session在web开发中是一个非常重要的概念这个概念很抽象很难定义也是最让人迷惑的一个名词也是最多被滥用的名字之一在不同的场合session一次的含义也很不相同。这里只探讨HTTP Session。为了说明问题这里基于Java Servlet理解Session的概念与原理这里所说Servlet已经涵盖了JSP技术因为JSP最终也会被编译为Servlet两者有着相同的本质。在Java中HTTP的Session对象用javax.servlet.http.HttpSession来表示。1、概念
Session代表服务器与浏览器的一次会话过程这个过程是连续的也可以时断时续的。在Servlet中session指的是HttpSession类的对象这个概念到此结束了也许会很模糊但只有看完本文才能真正有个深刻理解。2、Session创建的时间是 一个常见的误解是以为session在有客户端访问时就被创建然而事实是直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建注意如果JSP没有显示的使用 % page sessionfalse% 关闭session则JSP文件在编译成Servlet时将会自动加上这样一条语句 HttpSession session HttpServletRequest.getSession(true);这也是JSP中隐含的 session对象的来历。由于session会消耗内存资源因此如果不打算使用session应该在所有的JSP中关闭它。引申1、访问*.html的静态资源因为不会被编译为Servlet也就不涉及session的问题。2、当JSP页面没有显式禁止session的时候在打开浏览器第一次请求该jsp的时候服务器会自动为其创建一个session并赋予其一个sessionID发送给客户端的浏览器。以后客户端接着请求本应用中其他资源的时候会自动在请求头上添加Cookie:JSESSIONID客户端第一次拿到的session ID 这样服务器端在接到请求时候就会收到session ID并根据ID在内存中找到之前创建的session对象提供给请求使用。这也是session使用的基本原理----搞不懂这个就永远不明白session的原理。下面是两次请求同一个jsp请求头信息通过图可以清晰发现第二次请求的时候已经添加session ID的信息。 3、Session删除的时间是1Session超时超时指的是连续一定时间服务器没有收到该Session所对应客户端的请求并且这个时间超过了服务器设置的Session超时的最大时间。2程序调用HttpSession.invalidate()3服务器关闭或服务停止4、session存放在哪里服务器端的内存中。不过session可以通过特殊的方式做持久化管理。5、session的id是从哪里来的sessionID是如何使用的当客户端第一次请求session对象时候服务器会为客户端创建一个session并将通过特殊算法算出一个session的ID用来标识该session对象当浏览器下次session继续有效时请求别的资源的时候浏览器会偷偷地将sessionID放置到请求头中服务器接收到请求后就得到该请求的sessionID服务器找到该id的session返还给请求者Servlet使用。一个会话只能有一个session对象对session来说是只认id不认人。6、session会因为浏览器的关闭而删除吗不会session只会通过上面提到的方式去关闭。7、同一客户端机器多次请求同一个资源session一样吗同一客户端机器一般来说每次请求都会新创建一个session。其实这个也不一定的总结下对于多标签的浏览器比如360浏览器来说在一个浏览器窗口中多个标签同时访问一个页面session是一个。对于多个浏览器窗口之间同时或者相隔很短时间访问一个页面session是多个的和浏览器的进程有关。对于一个同一个浏览器窗口直接录入url访问同一应用的不同资源session是一样的。8、session是一个容器可以存放会话过程中的任何对象。9、session因为请求request对象而产生同一个会话中多个request共享了一session对象可以直接从请求中获取到session对象。10、其实session的创建和使用总在服务端而浏览器从来都没得到过session对象。但浏览器可以请求Servletjsp也是Servlet来获取session的信息。客户端浏览器真正紧紧拿到的是session ID而这个对于浏览器操作的人来说是不可见的并且用户也无需关心自己处于哪个会话过程中。