Session快速入门(共享数据)及原理、与cookie区别

1. 概念:

服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端而cookie是保存在浏览器的)的对象中。HttpSession

2. 快速入门:

  1. 获取HttpSession对象:
    HttpSession session = request.getSession();
  2. 使用HttpSession对象:
    Object getAttribute(String name)
    void setAttribute(String name, Object value)
    void removeAttribute(String name)

新建两个servlet:在这里插入图片描述
Servletsessiondemo1:

package cn.itcast.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;

/**
 * @author QLBF
 * @version 1.0
 * @date 2020/11/25 11:03
 */
@WebServlet("/Servletsessiondemo1")
public class Servletsessiondemo1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //使用session共享数据

        //1.获取session
        HttpSession session = request.getSession();
        //2.存储数据
        session.setAttribute("msg1","hello Session!");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

Servletsessiondemo2:

package cn.itcast.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;

/**
 * @author QLBF
 * @version 1.0
 * @date 2020/11/25 11:03
 */
@WebServlet("/Servletsessiondemo2")
public class Servletsessiondemo2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //使用session获取数据

        //1.获取session
        HttpSession session = request.getSession();
        //2.获取数据
        Object msg1 = session.getAttribute("msg1");
        System.out.println(msg1);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

先输入:
在这里插入图片描述
再输入:
在这里插入图片描述
控制台输出:
在这里插入图片描述
Servletsessiondemo2成功获取数据

3. 原理

  • Session的实现是依赖于Cookie的。在这里插入图片描述

4.与cookie的区别

session与Cookie的区别:

  1. session存储数据在服务器端,Cookie在客户端
  2. session没有数据大小限制,Cookie有
  3. session数据安全,Cookie相对于不安全

cookie:浏览器访问A资源,A资源里面会发送一个cookie并相应给浏览器,当浏览器再访问B资源时,会携带cookie头过去,那么B资源就可以用request来获取这个cookie了。

session:当浏览器访问A资源时,A资源会创建一个session,并设定了值。当浏览器访问B资源时,可以直接获取A资源的值。(其实也是通过cookie实现的,但写代码的步骤就是这样

Session一般和重定向(因为是两次请求)一起用,请求转发自己弄就行不需要session。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值