Javaweb - 会话跟踪技术 - session详细介绍、session与cookie的区别用法

Session基本使用

请添加图片描述

案例练习

创建servlet

package com.taotao.web.session;

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;

/**
 * create by 刘鸿涛
 * 2022/4/2 15:06
 */
@SuppressWarnings({"all"})
@WebServlet("/demo1")
public class SessionDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //存储到Session中
        //1.获取Session对象
        HttpSession session = req.getSession();
        //2.存储数据
        session.setAttribute("username","liuhongtao");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

package com.taotao.web.session;

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;

/**
 * create by 刘鸿涛
 * 2022/4/2 15:06
 */
@SuppressWarnings({"all"})
@WebServlet("/demo2")
public class SessionDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取数据,从session中

        //1.获取session对象
        HttpSession session = req.getSession();
        //2.获取数据
        Object username = session.getAttribute("username");
        System.out.println(username);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

测试运行

先访问demo1,再访问demo2

请添加图片描述

Session原理

请添加图片描述

案例演示

更改servlet,输出session地址值

package com.taotao.web.session;

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;

/**
 * create by 刘鸿涛
 * 2022/4/2 15:06
 */
@SuppressWarnings({"all"})
@WebServlet("/demo1")
public class SessionDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //存储到Session中
        //1.获取Session对象
        HttpSession session = req.getSession();
        System.out.println(session);

        //2.存储数据
        session.setAttribute("username","liuhongtao");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

package com.taotao.web.session;

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;

/**
 * create by 刘鸿涛
 * 2022/4/2 15:06
 */
@SuppressWarnings({"all"})
@WebServlet("/demo2")
public class SessionDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取数据,从session中

        //1.获取session对象
        HttpSession session = req.getSession();
        System.out.println(session);

        //2.获取数据
        Object username = session.getAttribute("username");
        System.out.println(username);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

测试运行

先访问demo1,再访问demo2

请添加图片描述

结论:session地址值完全一样

主要JESSIONID

请添加图片描述

Session使用细节

Session钝化、活化

请添加图片描述

安全运行

请添加图片描述

访问demo1后关闭服务器

安全停止

ctrl + c

请添加图片描述

再次安全运行

请添加图片描述

访问demo2

请添加图片描述

Session销毁:

请添加图片描述

演示更改Session销毁时间

更改web.xml文件
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >


<web-app>
  <session-config>
    <session-timeout>
<!--      默认30分钟,这里配置了100分钟后销毁-->
      100
    </session-timeout>
  </session-config>
</web-app>

演示直接销毁Session

更改sevletdemo2
package com.taotao.web.session;

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;

/**
 * create by 刘鸿涛
 * 2022/4/2 15:06
 */
@SuppressWarnings({"all"})
@WebServlet("/demo2")
public class SessionDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取数据,从session中

        //1.获取session对象
        HttpSession session = req.getSession();
        System.out.println(session);
        //销毁
        session.invalidate();

        //2.获取数据
        Object username = session.getAttribute("username");
        System.out.println(username);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

测试运行

访问demo1,再访问demo2

请添加图片描述

会话跟踪技术小结

cookie和session的区别

请添加图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼鬼骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值