Tomcat中Session钝化与活化实现步骤

本文详细解释了如何通过Servlet在Tomcat中实现session的钝化与活化过程,包括创建session、数据存储与获取,以及服务器启动时session文件的序列化与反序列化。通过实际操作演示了session文件的生成与删除,展示了session持久化的关键步骤。

原理:为了保证客户端不关闭,服务器关闭后,两次获取的session是同一个,tomcat内部自动完成以下工作:

        1.session的钝化:在服务器正常关闭之前,将session对象系列化到硬盘上,在tomcat的目录下的work目录中,会生成SESSIONS.ser文件

        2.session的活化:在服务器启动后,将session文件转化为内存中的session对象即可。读取work目录中的session对象,并删除

实现方式:

1.首先编写servlet两个类

        第一个servlet用于创建session对象并向session对象中保存数据:hello session !

@WebServlet(name = "SessionServlet01", value = "/SessionServlet01")
public class SessionServlet01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建session对象
        HttpSession session = request.getSession();
        //存储数据
        session.setAttribute("msg","hello session !");
    }
}

        第二个servlet类用于获取session中的 :hello session !

@WebServlet(name = "SessionServlet02", value = "/SessionServlet02")
public class SessionServlet02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取session对象
        HttpSession session = request.getSession();
        //获取数据
        Object msg = session.getAttribute("msg");
        System.out.println(msg);
    }
}

2.首先将IDEA所在的项目目录下的target——>wed开头的目录复制到tomcat安装目录——>webapps目录下即可

        目标目录:

         目的地:

 3.接下来到apache-tomcat-8.5.31\bin下运行startup.bat文件启动tomcat服务器

 正常启动会出现一个黑窗口,若不能启动请查看:Tomcat启动startup.bat一闪而过问题

4.启动正常之后使用浏览器访问tomcat中部署的web项目,就是刚刚复制的web-1.0-SNAPSHOT目录下的servlet的虚拟路径::8080/web-1.0-SNAPSHOT/SessionServlet01,然后在访问一下SessionServlet02

 这时黑窗口就会打印:hello session !

到这里说明我们的环境已经搭建成功了,接下就是了解tomcat是如何实现session的钝化与活化 

5.进入apache-tomcat-8.5.31\work\Catalina\localhost\web-1.0-SNAPSHOT这个文件你会发现现在什么都没有

 6.此时运行apache-tomcat-8.5.31\bin下的shutdown.bat文件正常关闭tomcat服务器,这是正常关闭

 关闭后我们会发现之前这个web-1.0-SNAPSHOT目录下什么都没有,现在自动生成了sessions.ser文件,这就是session对象序列化后的文件保存在服务器本地中了

7.接下点击 startup.bat 重新启动tomcat服务器时,sessions.ser文件被删掉了,此时我们再次访问SessionServlet02会发现,黑窗口中还是可以打印 :hello sessio !说明tomcat在启动时读取了该文件,进行了反序列化,我依然可以获取到数据

 这就是tomcat对session对象实现钝化与活化的一个过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值