Servlet(七)HttpSession对象

Session

简介

  • Session对象是Javax.servlet.http.HttpSession实例对象,不存在父接口,是一个纯粹的接口,session本身就属于Http协议范畴(request,reponse是有父接口的)
  • 对于服务器而言,每一个连接到它的客户端都是一个session,servlet容器使用此窗口创建http客户端和http服务器之间的会话。
  • 会话保留一个时间段,(可以接收多个 请求)
  • session一次会话,客户端、服务端都能感受到。
  • 但是若重新开一个浏览器,则无法获得之前的session,每一个session都保存在当前浏览器中,所以session底层是依赖 Cookie的,默认只在当前浏览器中有效。

如何获取Session

  • 1:获取Session对象(获取ssesssion 或者 创建session)
    • req.getSession(); 
      
    • 表示,当session对象存在时,获取对象,不存在时,表示创建对象
    • session表示一次会话,会话中可以保留时间段
    package Servlet_demo;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    
    /**
    * Session对象
    *
    * 1:获取Session对象(获取ssesssion 或者 创建session)
    *     req.getSession();
    *
    * 2: 常用方法
    */
    
    @WebServlet("/ser08")
    public class Servlet08  extends HttpServlet {
       @Override
       protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           HttpSession session = req.getSession();
           //获取会话标识符
           System.out.println(session.getId());
    
           //获取会话开始时间
           System.out.println("session 开始时间"+session.getCreationTime());
           //获取结束时间
           System.out.println("session 结束时间"+session.getLastAccessedTime());
           // 是否是新的会话(新的session对象)
           System.out.println("是否是新的对象"+session.isNew());
    
    
       }
    }
    
    
    在这里插入图片描述
  • false 是因为 默认打开了index.jsp 此时已创建好session,再跳转到对应页面输出时,已经不是第一次了,所以false

Session 标识符

  • session 是为了标识一次会话,此次会话应该有一个唯一的标志,就是sessionID
  • 当有请求到达服务器时,若用到session,服务器会查看是否从客户端传回一个名为JSESSIONID的cookie(浏览器cookie’中含有JSESSIONID),没有,则会创建一个新的对象;没有JSESSIONID的cookie则认为是新的一个会话,并把新的session传回给浏览器(客户端)。
  • 所以session对象底层依赖cookie

Session域对象

  • Session 表示一次会话,一次会话中数据是可以共享的,通过setAtrribute(name,value)向域对象中存数据,通过getAtrribute(name)从域对象中获取数据,remove(name)从域对象中移除数据
  • 对比
    request 作用域session作用域
    只在一次请求中有效在一次会话中有效,包含多次请求
    只在请求转发(一次跳转)有效在请求转发与重定向跳转(重定向是两次请求转发)都有效

Session对象的销毁

  • 默认时间销毁,30分钟
    • 修改默认时间方法:在tomcat 中conf目录下web.xml 进行修改
        <!-- You can set the default session timeout (in minutes) for all newly   -->
    	 <!-- created sessions by modifying the value below.                       -->
       
       <session-config>
           <session-timeout>30</session-timeout>
       </session-config>
       ```
    
  • 自己设定到期时间(设定最大不活动时间 单位秒)
    • 程序中设定,session.setMaxInactiveInterval(15)// 15秒
  • 关闭浏览器(session底层依赖cookie,cookie关闭浏览器失效)
  • 关闭服务器(服务器关闭,session销毁)
  • 手动销毁(session.invalidate()直接销毁)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值