Session使用步骤与Session原理


Session只能在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。

一、Session使用步骤

(1)获取Session对象

	HttpSession session = request.getSession();

(2)使用HttpSession对象

Httpssion对象 说明
Object getAttribute(String name) 根据键获得Session值
void setAttribute(String naem,Object value) 设置Session的键和值
void removeAttribute(String name) 移除Session

☆Session会话演示

在SessionDemo1中设置Session,在SessionDemo2中获得Session。

package com.ql.session;


import java.io.IOException;

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;

/**
 * 类说明:
 * 		设置Session
 * @author qianliangguo
 */
@WebServlet("/sessionDemo1")
public class SessionDemo1 extends HttpServlet {
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.获取Session
		HttpSession session = request.getSession();
		//2.存储数据
		session.setAttribute("msg", "hello session");
	}
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}
}

package com.ql.session;


import java.io.IOException;

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;

/**
 * 类说明:
 * 		使用Session获取数据
 * @author qianliangguo
 */
@WebServlet("/sessionDemo2")
public class SessionDemo2 extends HttpServlet {
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.获取Session
		HttpSession session = request.getSession();
		//2.获得数据
		Object msg = session.getAttribute("msg");
		System.out.println(msg);
	}
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}
}

二、Session的原理

服务器如何确保在一次会话范围内,多次获取Session对象是同一个?

Session是依赖于Cookie的:而Cookie是由请求头和响应头来实现的。②创建Session对象,并用用SessionID标注:第一次获取Session,没有Cookie,会在内存中创建一个新的Session对象,并标记ID,存入Cookie中发送到浏览器。③通过SessionID匹配:下一次请求时,通过Cookie请求头中的SessionID与服务器中的对象匹配。

在这里插入图片描述

发布了353 篇原创文章 · 获赞 935 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_43691058/article/details/104061283
今日推荐