JSP内置对象---session

session 对象
  HTTP 协议是一种无状态协议。一个客户向服务器发出请求(request)然后服务器返回响应(respons),连接就被关闭了。在服
 务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一
 客户。因此,必须使用会话记录有关连接的信息。
  从一个客户打开浏览器连接到服务器,到客户关闭浏览器离开这个服务器称做一个会话。
 1.session 对象的Id
  当一个客户首次访问服务器上的一个JSP 页面时,JSP 引擎产生一个secssion 对象,这个session 对象调用相应的方法可以存储客户
 在访问各个页面期间提交的各种信息。这个session 对象被分配了一个String 类型的Id 号,JSP 引擎同时将这个Id 号发送到客户端,
 存放在客户的Cookie 中。这样,session 对象和客户之间就建立起一一对应的关系,即每个客户都对应着一个session 对象(该客户的会话),
 这些session 对象互不相同,具有不同的Id 号码。JSP 引擎为每个客户启动一个线程,也就是说,JSP 为每个线程分配不同的session 对象。
 当客户再访问连接该服务器的其它页面时,或从该服务器连接到其它服务器再回到该服务器时,JSP 引擎不再分配给客户的新session 对象,
 而是使用完全相同的一个,直到客户关闭浏览器后,服务器端该客户的session对象被取消,和客户的会话对应关系消失。当客户重新打开浏览器再
 连接到该服务器时,服务器为该客户再创建一个新的session 对象。
 2.session 对象与URL 重写
  session 对象能和客户建立起一一对应关系依赖于客户的浏览器是否支持Cookie。如果客户端不支持Cookie,那么客户在不同网页之
 间的session 对象可能是互不相同的,因为服务器无法将Id 存放到客户端,就不能建立session 对象和客户的一一对应关系。
 将浏览器的Cookie 设置为禁止后(选择浏览器菜单→工具→Internet 选项→安全→internet 和本地intranet→自定义级别→cooker,将全部选项设
 置成禁止),“同一客户”对应了多个session 对象,这样服务器就无法知道在这些页面上访问的实际上是同一个客户。
  如果客户的浏览器不支持 Cookie,我们可以通过URL 重写来实现session 对象的唯一性。所谓URL 重写,就是当客户从一个页面重
 新连接到一个页面时,通过向这个新的URL 添加参数,把session 对象的Id 传带过去,这样就可以保障客户在该网站各个页面中的session。
 可以使用response 对象调用encodeURL()或encodeRedirectURL()方法实现URL 重写.
 response.encodeURL 除了对地址重新编码外,还将会话id这类与客户相关的信息写到地址中,这样将特定的用户信息又传到新的页面上,
 确保用户是在同一会话中进行页面或servlet的跳转。
 3.session 对象的常用方法:
  (1) public void setAttribute(String key ,Object obj)
   调用该方法将参数Object 指定的对象obj 添加到session 对象中,并为添加的对象指定了一个索引关键字,如果添加的两个对象的关键字相同,
  则先前添加的对象被清除。
  (2) public Object getAttibue(String key)
   获取session 对象含有的关键字是key 的对象。
  (3) public Enumeration getAttributeName()
   调用该方法产生一个枚举对象,该枚举对象使用nextElemets()遍历session 对象所含有的全部对象。
  (4) public long getCreationTime()
   获取session对象创建的时间,单位是毫秒(从1970 年7 月1 日午夜起至该对象创建时刻所走过的毫秒数)。
  (5) public long getLastAccessedTime()
   获取当前session 对象最后一次被操作的时间,单位是毫秒。
  (6) public int getMaxInactiveIterval()
   获取session 对象的生存时间。
  (7) public void setMaxInactiveIterval(int n)
   设置session 对象的生存时间(单位是秒)
  (8) public void removeAttribue(String key)
   从当前session 对象中删除关键字是key 的对象。
  (9) public String getId()
   获取session 对象的编号。
  (10) invalidate()
   使得session 无效。 

原文地址:https://www.cnblogs.com/riasky/p/3481762.html