Session

1. Session

1.1 什么是Session

  • Session 是另⼀种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。⽤户使⽤浏览器访问服务器的时候,服务器把⽤户的信息以某种的形式记录在服务器,这就是Session。
  • 如果说Cookie是检查⽤户身上的”通⾏证“来确认⽤户的身份,那么Session就是通过检查服务器上的”客户明细表“来确认⽤户的身份的。Session相当于在服务器中建⽴了⼀份“客户明细表”。
  • 使用原因:Session⽐Cookie使⽤⽅便,Session可以解决Cookie解决不了的事情【Session可以存储对象,Cookie只能存储字符串

1.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是否为新的】

1.3 Session作为域对象

Session作为⼀种记录浏览器状态的机制,只要Session对象没有被销毁,Servlet之间就可以通过Session对象实现通讯

  • 在 Servlet1 中设置 Session 属性。
//得到Session对象
HttpSession httpSession = request.getSession();
//设置Session属性
httpSession.setAttribute("name","邹小胖");
  • 在 Servlet2 中获取到 Session 存进去的属性。
//得到Session对象
HttpSession httpSession = request.getSession();
String value = (String)httpSession.getAttribute("name");
response.getWriter().write(value);

在这里插入图片描述

1.4 Session 的生命周期和有效期

  • Session在⽤户第⼀次访问服务器Servlet,jsp等动态资源就会被⾃动创建,Session对象保存在内存⾥,这也就为什么上⾯的例⼦可以直接使⽤request对象获取得到Session对象。如果访问HTML,IMAGE等静态资源Session不会被创建。

  • Session⽣成后,只要⽤户继续访问,服务器就会更新Session的最后访问时间,⽆论是否对Session进⾏读写,服务器都会认为Session活跃了⼀次

  • 由于会有越来越多的⽤户访问服务器,因此Session也会越来越多。为了防⽌内存溢出,服务器会把⻓时间没有活跃的Session从内存中删除,这个时间也就是Session的超时时间。

  • Session的超时时间默认是30分钟,有三种⽅式可以对Session的超时时间进⾏修改。

三种方式:

  1. tomcat/conf/web.xml⽂件中设置,时间值为20分钟,所有的WEB应⽤都有效
<session-config>
 	<session-timeout>20</session-timeout>
</session-config>
  1. 单个的web.xml⽂件中设置,对单个web应⽤有效,如果有冲突,以⾃⼰的web应⽤为准
<session-config>
 	<session-timeout>20</session-timeout>
</<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值