http协议,会话管理

http协议

http协议:超文本连接协议

http协议有两个特性:

  • 请求----响应式(服务器被动请求)。服务器只有在客户端发起请求时才与之建立链接
    doGet(HttpServlertRequest, HttpServletResponse)
  • 无记忆性----短链接。服务器无法记住客户端是谁。

会话管理(Session)

为了解决http协议存在的问题,引入了会话管理

服务器能处理不同的request请求,对每个用户保持一个会话。每个会话是独立安全的。

  • 保持记录
  • 时效性:30min
  • 会话隔离(会话之间相互独立,互不干扰)

会话管理的实现

客户端A和服务器的第一次交互:

  1. 客户端A发起请求到服务器,比如需要一张图片
  2. 服务器收到请求,产生一个HttpSession对象(有一个唯一的ID值)
  3. 服务器存储这个HttpSession对象,在服务器中分配一定的空间
  4. 服务器产生一个cookie对象,将JSESSIONID存入cookie,并发送给客户端(浏览器),存储在浏览器。

客户端A和服务器的第n次交互:

  1. 客户端A发起请求到服务器,携带cookie对象的JSESSIONID
  2. 服务器检查到客户端A的JSESSIONID,不产生HttpSession对象
  3. 从现有的HttpSession对象中查找此ID。如果ID存在,指定session操作。 如果ID不存在,可能产生一个新的session

例子

@WebServlet("/session.action")
public class SessionServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");

		HttpSession session = request.getSession();// 获取Session对象
//		session.setMaxInactiveInterval(60);// 设置存活时间60s,如果不设置,默认为30min
		session.setAttribute("key", "我是session的值");// 在Session对象里放入键值对

		System.out.println(session.getId());

		Cookie cookie = new Cookie("hello", "cookie");// 创建Cookie对象,并存入键值对

		response.addCookie(cookie);// 往页面里写入cookie

		response.sendRedirect("session.jsp");// 重定向
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>我的session:${sessionScope.key}</h1>
</body>
</html>

在这里插入图片描述往页面上写入cookie,就会在浏览器把一些信息记录下来。比如上网点击一件衣服,会向后台传递一些信息,后台就会把这些信息存入cookie里面。在下次打开浏览器的时候可能就会推荐到这件衣服。一些杀毒软件,为了用户隐私有时会建议清除浏览器的cookie,

cookie:浏览器

  • 存在于浏览器

  • 存活时间: 浏览器关闭

  • 存文本

  • 数据量比较小

  • 存JSessionID

  • 不安全

HttpSession:服务器

  • 存于服务器

  • 存活时间: 30

  • 存对象

  • 数据量(不建议大数据)

  • 产生SessionID

  • 安全

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值