HttpSession理解学习

1.HttpSession

1). HttpSession:在服务器端保持HTTP状态的方案。和其对应的是Cookie

2). 产生HttpSession对象的过程:当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求是否包含一个session标识(即sessionID),如果已经包含一个sessionId则说明已经创建了一个session,服务器就按照sessionID把这个session检索出来使用,如果检索不到,可能会新建一个,这种情况可能出现再服务器端已经删除了该用户对应的session对象,但用户人为地在请求的url后面附加上一个jession的参数)。如果客户端请求不包含sessionid,则为此客户创建一个Session并且生成一个与此session相关联的sessionid,这个sessionid将在本次响应中返回给客户端保存。

3)使用Cookie来跟踪Session:session通过sessionid是以cookie或url重写为基础的,默认使用cookie来实现,系统会创建一个名为JESSIONID的输出cookie,这称之为session cookie,session cookie是存储于浏览器内存中的,并不是写到硬盘上,

 

2.HttpSession的生命周期:
    1).什么时候创建: 
        1.是否浏览器访问服务端的任何一个jsp或servlet,服务器都会创建一个Session对象呢
        答:不一定,
        a、若当前的jsp是客户端访问的当前web应用的第一个资源,且jsp的page指定的session属性值为false,
        则服务器不会创建session对象
        b、若当前的jsp不是客户端访问的当前web应用的第一个资源,且其他页面已经创建了HttpSession对象,则当前页面返回
        一个HttpSession对象,而不会创建一个新的HttpSession对象
        c、对于servlet:若servlet是客户端访问的第一个web应用的资源,则只有调用了request。getSession()或request.getSession(true)
        
    2).session="false" 表示:当前jsp页面禁用session隐含变量,但是可以自己显式定义HttpSession对象
    
    3).什么时候销毁: 
      a.直接调用HttpSession的invalidate()方法
      b.服务器卸载了当前web应用
      c.超出HttpSession的过期时间,session的最大存活时间(默认是30分钟,1800秒),可以自己设置    
          局部:    session.setMaxInactiveInterval(30);//设置session的最大存活时间
          全局:tomcat服务器中的 web.xml,单位:分钟
          <session-config>
              <session-timeout>30</session-timeout>
          </session-config>
    
    4).并不是关浏览器就销毁了session

3.session API

1).cookie中设置session 参数

//创建一个cookie
Cookie cookie=new Cookie("JESSIONID",session.getId());
//设置cookie的最大时间
cookie.setMaxAge(20);
//添加cookie
response.addCookie(cookie);

2)

//获取sessionID
 session.getId(); 
//判断session是否是新创建的
 session.isNew() 
//获取session的最大存活时间
 session.getMaxInactiveInterval()
//获取session创建时间
 session.getCreationTime() 
//获取上次访问该session的时间
 session.getLastAccessedTime() 
//session添加参数
 session.setAttribute("username", request.getParameter("username"));
//获取session中参数
 session.getAttribute("username")
//session失效
 session.invalidate();

                                                                                                                                                                                                                             

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值