注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

逍遥子 曰:

得失失得 何必患得患失 舍得得舍 不妨不舍不得

 
 
 

日志

 
 

session系列[转]  

2012-05-14 21:21:29|  分类: JSP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
通过session传递值
需要导入的包:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
将值放入session:
HttpSession session = request.getSession();
session.setAttribute(USER_NAME,userName);
取出session中的值:
HttpSession session=request.getSession();
String username=(String)session.getAttribute(USER_NAME);
一个判断session是否过期的小技巧

前一段时间有好几个问题,提到怎么判断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!");

HttpRequest对象有两种形式的getSession方法调用:
一个是getSession(),
另一个是getSession(boolean isNew)

这样的,前者会检测当前时候有session存在,如果不存在则创建一个,如果存在就返回当前的。
getSession()相当于getSession(true),

参数为true时,若存在会话则返回该会话,否则新建一个会话。
参数为false时,若存在会话则返回该会话,否则应该返回一个NULL

这是文档:

getSession   
   public    HttpSession    getSession(boolean    create)Returns    the    current    HttpSession    associated    with    this    request    or,    if    if    there    is    no    current    session    and    create    is    true,    returns    a    new    session.     
   If    create    is    false    and    the    request    has    no    valid    HttpSession,    this    method    returns    null.     
    
   To    make    sure    the    session    is    properly    maintained,    you    must    call    this    method    before    the    response    is    committed.    If    the    container    is    using    cookies    to    maintain    session    integrity    and    is    asked    to    create    a    new    session    when    the    response    is    committed,    an    IllegalStateException    is    thrown.   
    
   Parameters:   
   true    -    to    create    a    new    session    for    this    request    if    necessary;    false    to    return    null    if    there's    no    current    session   
   Returns:   
   the    HttpSession    associated    with    this    request    or    null    if    create    is    false    and    the    request    has    no    valid    session
  评论这张
 
阅读(772)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018