我们知道,其实大多数web应用程序都离不开session的使用。session,中文经常翻
译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨
号到挂断电话这中间的一系列过程可以称之为一session。
Session主要是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户
的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在
访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服
务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务
(2)session因为请求(request对象)而产生,同一个会话中多个request共享了一session对象,可以直接从请求中
获取到session对象。
一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用
HttpServletRequest.getSession(true)这样的语句时才被创建,但是如果JSP没有显示的使用 <% @page
session="false"%> 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句 HttpSession session =
HttpServletRequest.getSession(true);这也是JSP中隐含的 session对象的来历。
由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它。
1)Session超时:超时指的是连续一定时间服务器没有收到该Session所对应客户端的请求,并且这个时间超过了
服务器设置的Session超时的最大时间。
2)程序调用HttpSession.invalidate()
3)服务器关闭或服务停止
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不能是数字,最好是字符串,不然报错