关闭

【小技巧】一个判断session是否过期的小技巧

标签: sessionnullstring联想
735人阅读 评论(0) 收藏 举报

前一段时间有好几个问题,提到怎么判断session是否过期。
接触jspo已经很久了,但是还真没有想过这个问题,当时也就没有找到一个满意的答案给人家。
当时,我提到一个方法,就是实现HttpSessionListener接口,然后在sessionDestroyed()方法中执行一些操作,表示session要过期了,因为这个方法是session.invalidate()之前监听器调用的方法。这个判断的方法显然不能让人满意。
我当时问了些人,但是也没有得到一个准确的答案。
正好偶然间看到,request.getSeesion(boolean)方法,一下子让我恍然大悟。这个方法里面传了一个boolean值,这个值如果是true,那么如果当前的request的session不可用,那么就创建新的会话,如果存在就返回当前的会话。如果参数是false,那么在request的当前会话不存在的时候就返回null。
这样我们就可以很容易的联想到这个所谓的request的当前会话是否存在和session过期的联系,所以我们就可以“近似地”认为session不存在就是session过期了,那么我们就可以很容易地判断session是否过期了。方法如下:
if(request.getSession(false)==null)
   System.out.println("Session has been invalidated!");
else
   System.out.println("Session is active!");

可能大家注意到我上面有一个“近似地”字眼,也就是说存在特别情况。
这个特殊情况就是第一次请求还没有创建会话的时候,那么用这个方法返回的仍然是null,原因我想大家应该是显然的。

以上是个人拙见,希望大家指正。



if(request.getSession(false)==null){
   sessin = request.getSession(true);
}




俺师傅一年前就用了,不过他去大公司了555555555555555
俺也没看明白,今看老兄一贴,茅塞顿开
真实“看一贴长一智谢谢啊”
private boolean checkSession(HttpServletRequest request,
HttpServletResponse response) {
HttpSession session = request.getSession(false);
String requestURI = request.getRequestURI();
String contextPath = request.getContextPath();

requestURI = requestURI.substring(contextPath.length());

if(requestURI.equals("/") ||
requestURI.equals("/login.jsp") ||
 requestURI.equals("/login.do")||
 requestURI.equals(this.errorPage))
return true;

if(session != null
&& session.getAttribute(this.objName) != null
&& session.getAttribute("year") != null)
return true;
else
return false;
}

 

0
0
查看评论

一个判断session是否过期的小技巧

       前一段时间有好几个问题,提到怎么判断session是否过期。       接触jsp已经很久了,但是还真没有想过这个问题,当时也就没有找到一个满意的答案给人家。当时,...
  • JustForFly
  • JustForFly
  • 2007-08-02 09:34
  • 770

一个判断session是否过期的小技巧

前一段时间有好几个问题,提到怎么判断session是否过期。接触jspo已经很久了,但是还真没有想过这个问题,当时也就没有找到一个满意的答案给人家。当时,我提到一个方法,就是实现HttpSessionListener接口,然后在sessionDestroyed()方法中执行一些操作,表示sessio...
  • lcllcl987
  • lcllcl987
  • 2005-02-25 09:28
  • 2996

判断一个session是否过期

怎么判断session是否过期。1、实现HttpSessionListener接口,然后在sessionDestroyed()方法中执行一些操作,表示session要过期了,因为这个方法是session.invalidate()之前监听器调用的方法。这个判断的方法显然不能让人满意。2、request...
  • liu251
  • liu251
  • 2009-01-21 15:48
  • 8665

一个判断session是否过期的小技巧_Java

前一段时间有好几个问题,提到怎么判断session是否过期。     接触jsp已经很久了,但是还真没有想过这个问题,当时也就没有找到一个满意的答案给人家。     当时,我提到一个方法,就是实现HttpSessionListener接口,然后在s...
  • konglongaa
  • konglongaa
  • 2016-06-17 09:07
  • 3494

Linux小技巧收集

 原贴地址:http://blog.chinaunix.net/u/26011/showart.php?id=364841
  • chinalinuxzend
  • chinalinuxzend
  • 2007-08-28 12:53
  • 8267

一个快速排序的小例子

function quickSort($array) {        if( !isset( $array[1] ) ) return $array;     $mid       &#...
  • u011598153
  • u011598153
  • 2016-01-27 17:44
  • 155

判断用户session 是否过期,如果过期,让用户重新登录

1、在web.xml配置: WmsFilter com.kszn.wms.filter.WmsFilter true WmsFilter /mgr/*/*基于请求路径过滤*/ 2、对应过滤器代码: public class WmsFilter implements Filter { //...
  • wjp520120
  • wjp520120
  • 2017-03-29 15:59
  • 2086

mysql使用小技巧

1、MySQL中有许多很实用的函数,好好利用它们可以省去很多时间:group_concat() 将取到的值用逗号连接,可以这么用:select group_concat(distinct id) from tablename;得到的结果类似为: 1,2,3,4,5unix_timestamp(), ...
  • lu_wei_wei
  • lu_wei_wei
  • 2016-05-03 10:34
  • 2585

linux中的一些小技巧

1. ibus拼音设置 在新装好的ubuntu中,开机之后会提示是否更新语言包,确认安装,安装好后打开终端(快捷键:Ctrl+Alt+T),输入ibus-setup,会出现设置界面: 切换到input method,勾选Customize active input methods,然后把piny...
  • Andrewseu
  • Andrewseu
  • 2016-01-15 18:37
  • 628

Ajax通讯时,检查Session是否过期

场景:ajax通讯模式下,客户端校验Session是否过期。 实现:这里用到一个拦截器,检查Session中的用户是否存在 public class LoginFilter extends AbstractInterceptor{ private static final long ...
  • ItJavawfc
  • ItJavawfc
  • 2015-03-13 11:21
  • 1680
    个人资料
    • 访问:54361次
    • 积分:676
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:2篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论