关于Cookie和session的一些理解

  • 以前基本上没有完整写过登录注册页面。所已对session和Cookie的使用只有一知半解。今天项目正好想实现关闭浏览器不用重新登录的功能,就稍微查看了一下相关内容。有一些新的体会,把它给记录下来。

  • 先说一下我对这两者的使用的一些理解。

    • Cookie 数据保存在客户端,可以用来记住用户登录状态。
    • Session数据保存在服务端,每次重开浏览器或者清空session后访问服务器会重新生成session。所有不建议设置太久。
    • 如果没有设置cookie的话,浏览器关闭后,sessionId消失后需要重新登录。

查看了一下自己项目的代码,发现没有设置cookie。而且之前的session设置的特别长,达到了30天。突然想想估计内存里面有很多没有用的session占用了资源。于是想着重启一下tomcat来清空session。没想到重启后,发现登录状态没有消失。
目瞪口呆
第一反应是session持久化了。但是看了下代码和数据库。都没有持久化的相关内容。我就奇了个怪的。
两眼放空
突然想到应该是tomcat搞得鬼,于是查了一下相关资料。果然是tomcat默认开启了持久化。

配置:

Tomcat默认是已经启用持久化配置,若要禁用持久化功能,则只需要在节点里配置

1
2
3
4
<Manager pathname="" />;
持久化配置可进行全局配置和针对某一站点进行配置。全局配置需要在cof文件夹context.xml的
<Context>节点中配置<Manager>,若要针对某一站点配置则需要在cof文件夹server.xml的<Host><Context>
节点中添加<Manager>配置。

1 StandardManager
StandardManager是默认的Session Manager。它的实现机制为:当Tomcat服务器关闭或重启,或者Web应用被重新加载时,会对在内存中的HttpSession对象进行持久化, 并把它们保存到文件系统中,默认的文件为<CATALINA_HOME>/work/Catalina/{hostname本地一般都是localhost}/{war包名}/SESSIONS.ser。

1
2
<Manager className=”org.apache.catalina.session.StandardManager” 
debug=”0” maxInactiveInterval=”-1″ />

注:如果突然终止该服务器,则所有会话都将丧失,因为StandardManager没有机会实现存盘处理。

2 PersistentManager
PersistentManager能够把Session对象保存到Session Store中,它提供了比 StandardManager更为灵活的Session管理功能,它具有以下功能:
对内存中的HttpSession对象进行持久化,把它们保存到Session Store中。
具有容错功能,可以及时把Session备份到Session Store中,当Tomcat服务器意外关闭后再重启时,可以从Session Store中恢复Session对象。
可以灵活控制在内存中的Session数目,将部分Session转移到Session Store中。
通过使用Store,将内存中的session备份到文件或数据库中。当备份一个session对象时,该session对象会被复制到存储器中,而原对象仍然留在内存中。因此如果服务器崩溃,就可以从存储器中获取活动的session对象。当session被换出时,他会被移动到存储器中,因为当前活动的session对象超过了上限值,或者session对象闲置了过长时间。换出session节省内存空间。
Tomcat实现持久化Session Store的接口为org.apache.Catalina.store,目前提供了两个实现这一接口的类,即 org.apache.Catalina.FileStore和org.apache.Catalina.JDBCStore。


分享一下今天看到的笑话

有一次走错教室。。。。。。超尴尬 从后门进去 我一看一张张陌生的脸都在注视着我 还好我冰雪聪明 从他们教室中间过道走过去 左看看 右看看 从垃圾角停了2 3秒 然后从前门出去。。。。。。这时候班长跟着我出来 一直重复的说 别扣分别扣分。。


天秀
陈独秀
蒂花之秀
造化钟神秀
拼命三郎石秀
维多利亚内衣秀
吾何时能及汝之秀
同福客栈李秀莲的秀
我滴龟龟你怎么这么秀
一顾倾人城叹你眉清目秀
蓦然回首没想到你如此内秀
社会主义接班人就数你最优秀
无论多少言语表达不了你秀
腾讯旗下黄钻绿钻QQ秀
老太太都不服服你太秀
李云龙老婆秀芹的秀
求求你了不要再秀
米兰国际时装秀
湖南台真人秀
中国梦想秀
山清水秀
年代秀
刘秀

戏少