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<String> 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中配置
<session-config>
<session-timeout>20</session-timeout>
</session-config>
- 在项目中的web.xml中设置
<session-config>
<session-timeout>20</session-timeout>
</session-config>
- 通过setMaxInactiveInterval()
4.Cookie和session比较
1.有效期不同。session周期指的是不活动的时间。比如我们设置了10S,在10S内如果session没有活跃,就失效。但是如果在9S的时候使用session则重新计算,重启,关闭服务器,或者重新加载web应用session也会失效。cookie的生命周期则是按累计的时间来算
2.Cookie存储在客户端,session在服务端
3.对服务器的负担比较。如果并发量过大,session会大量消耗内存,一般推荐使用cookie
先到这,以后更新项目上的应用~
网友评论