no Session

阅读更多

最近在写框架的时候,采用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)