Session的一些理解
1 什么是session:
我们知道,其实大多数web应用程序都离不开session的使用。session,中文经常翻
译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨
号到挂断电话这中间的一系列过程可以称之为一session。
2 为什么要有session
Session主要是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户
的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在
访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服
务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务
3 有什么
(1)session是一个容器,可以存放会话过程中的任何对象。
(2)session因为请求(request对象)而产生,同一个会话中多个request共享了一session对象,可以直接从请求中
获取到session对象。
(3)同一客户端机器多次请求同一个资源,session一样吗?
一般来说,每次请求都会新创建一个session。
(4)session不会因为浏览器的关闭而删除,session只会通过浏览器的关闭方式去关闭。
(5)session存放在哪里:服务器端的内存中。不过session可以通过特殊的方式做持久化管理。
(6)Session创建的时间是:
一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用
HttpServletRequest.getSession(true)这样的语句时才被创建,但是如果JSP没有显示的使用 <% @page
session="false"%> 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句 HttpSession session =
HttpServletRequest.getSession(true);这也是JSP中隐含的 session对象的来历。
由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它。
(7)Session删除的时间是:
1)Session超时:超时指的是连续一定时间服务器没有收到该Session所对应客户端的请求,并且这个时间超过了
服务器设置的Session超时的最大时间。
2)程序调用HttpSession.invalidate()
3)服务器关闭或服务停止
注意
在使用Session对象时,需要注意以下几点:
1如果客户端浏览器不支持Cookies,Session对象不能发挥作用。
2 Session对象使用方便,不用声明即可使用。
3 Session对象占用服务器内存,应避免包含大量数据的对象,这样可以防止服务器崩溃。
总结:
总的来说说,session机制本身并不复杂,然而其实现和配置上的灵活性却使得具体情
况复杂多变。这要求我们不能把仅仅某一次的经验或者某一个浏览器,服务器的经验当
作普遍适用的经验,而是始终需要具体情况具体分析。
1.要使用session必须初始化session_start();
2.session文件可以放入多个键值对,键不能重复,值可以是基本数据类型,数组和
对象。
3.要取出对象,则要声明一下类的定义信息
4.session文件如果在1440秒(默认,可在php.ini里的session.gc_maxfiletime更
改)不被调用则被系统回收
5.session的key不能是数字,最好是字符串,不然报错