欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

no Session 博客分类: JavaEE no session

程序员文章站 2024-03-11 14:42:49
...

最近在写框架的时候,采用SSO(单点登录),同时需要使用no session的方式来提高性能。其实就是在所有请求之前把session状态设为失效,这样的话在大用户量的情况下可以减少请求的开支。

 

上面都是题外话:

先看一段对比代码

HttpServletRequest hsr = (HttpServletRequest) request;
		hsr.getSession().invalidate();
		System.out.println(hsr.getSession().getId());
		chain.doFilter(request, response);

HttpServletRequest hsr = (HttpServletRequest) request;
		System.out.println(hsr.getSession().getId());
		chain.doFilter(request, response);

 

7BD84B685916DDFBB602188B6B7B8EBA
7DC83FB878955750330CFCB809D5BFF3
69DF72DC4DBFBAAFFEFACE8AA21C084B
9FB9E9715D27946BEBDDF2D0E4D09860
FD7D4FD3224A7AB3DE5887D7F72EB753

4AEDE9F9739CEC6FB0869B9269B74441
4AEDE9F9739CEC6FB0869B9269B74441
4AEDE9F9739CEC6FB0869B9269B74441
4AEDE9F9739CEC6FB0869B9269B74441
4AEDE9F9739CEC6FB0869B9269B74441

 分别是以上两个代码的结果。从结果可以很清楚的看到,第一种情况的session状态被销毁了,所以每次的请求session的id都是不一样的。

  代码和结果很简单

 

  PS:

session.invalidate()是让当前浏览器的session销毁,也就是一个session被销毁,比如用户登录后注销就用这个,因为注销意味着该用户session中的所有属性均失效。而removeAttribute()可以指定销毁session中的某个属性

相关标签: no session