Servlet:第五篇【seesion】

1.session的基本概念

session是另外一种会话技术。不同的是Cookie是保存在浏览器里,session是保存在服务器中。用户在使用浏览器的时候,服务器把用户的信息以某种形式记录在服务器上。相比较于Cookie,session使用上更方便也更灵活,Cookie只能保存字符串,session可以保存对象!

2.session常用API

  • long getCreationTime();【获取Session被创建时间】
  • String getId();【获取Session的id】
  • long getLastAccessedTime();【返回Session最后活跃的时间】
  • ServletContext getServletContext();【获取ServletContext对象】
  • void setMaxInactiveInterval(int var1);【设置Session超时时间】
  • int getMaxInactiveInterval();【获取Session超时时间】
  • Object getAttribute(String var1);【获取Session属性】
  • Enumeration getAttributeNames();【获取Session所有的属性名】
  • void setAttribute(String var1, Object var2);【设置Session属性】
  • void removeAttribute(String var1);【移除Session属性】
  • void invalidate();【销毁该Session】
  • boolean isNew();【该Session是否为新的】

session域对象

session作为域对象只要没被销毁就可以在servlet之间实现通讯。

//初始化session对象
 HttpSession session = request.getSession();
//设置session属性
session.setAttribute("name","Test");

获得上面设置的值

//初始化session对象
 HttpSession session = request.getSession();
String value = (String)session.getAttribute("name");

什么时候用session?
一般我们我们要存进用户级别的数据就用session,只要浏览器不关闭,希望数据还在就用session。

3.session生命周期和有效期

1.session在用户第一次访问服务器的servlet,jsp等动态资源的时候就会被创建且保存在服务器的内存中(如果访问HTML,IMAGE等静态资源的话不会创建)
2.session生成后,用户继续访问,无论是否对session进行读写,服务器都会认为session活跃了一次
3.为了防止内存溢出,服务器会把长时间没有活跃的session从内存中删除,这个时间也就是session的超时时间
4.session默认的超时时间是30分钟,有以下三种方式修改时间:

  • 在Tomcat/conf/web.xml中配置

    20

  • 在项目中的web.xml中设置

    20

  • 通过setMaxInactiveInterval()

4.Cookie和session比较

1.有效期不同。session周期指的是不活动的时间。比如我们设置了10S,在10S内如果session没有活跃,就失效。但是如果在9S的时候使用session则重新计算,重启,关闭服务器,或者重新加载web应用session也会失效。cookie的生命周期则是按累计的时间来算
2.Cookie存储在客户端,session在服务端
3.对服务器的负担比较。如果并发量过大,session会大量消耗内存,一般推荐使用cookie


先到这,以后更新项目上的应用~

你可能感兴趣的:(Servlet:第五篇【seesion】)