【详解】Cookie与Session(用法、特点、规范)用Cookie完成网页访问次数,用session完成在线人数

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%

    String path = request.getContextPath();

    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()

    + path + "/";

%>

<!DOCTYPE html>

<html>

<head>

<base href="<%=basePath%>">

<meta charset="UTF-8">

<title>标题</title>

</head>

<body>

当前在线人数:${applicationScope.Stimes }

<a href="logout.do">退出</a>

</body>

</html>

前言:

    在了解Cookie与Session之前,我们首先要知道他们为什么会存在。

    存在理由:Web应用程序都是基于Http协议开发的,而Http协议是无状态的短连接协议,即依次请求、一次相应之后就会断开连接,而同一个用户的下一次请求就需要重新建立连接。但是有的时候我们需要判断多个请求是否为同一个用户发出的,比如用户多次选购商品,我们需要将用户多次请求所涉及到的数据进行保存下来,把这多次请求当做是一个整体来看待,然后将多次交互间设计到的数据保存起来,实现状态管理。

    那么,cookie与session就是用来做状态管理的。什么是状态管理呢?状态即浏览器与服务器之间所产生的数据,管理即对数据的操作。那么状态管理就是bato把同一个用户与服务器之间的多次交互看待成一个整体,将多次产生的数据保存起来。

    状态管理的lian两种方式即Cookie与Session.

    Cookie为客户端管理技术------数据保存于浏览器;Session为服务器端管理技术------把数据保存于服务器.

Cookie:

      Cookie实现原理:

1.浏览器客户端第一次向服务器发起请求时,服务器返回响应数据给浏览器,并且在响应数据包中以Set-Cookie消息头的形式携带数据返回给浏览器 Set-Cookie:name=songhao

2.浏览器接收到响应数据包之后,解析出数据包中携带的cookie信息,保存在浏览器上(浏览器自己完成)

3.浏览器在后续每一次向服务器发送请求时,都会在请求数据包中以Cookie消息头的形式与数据一起发送个服务器.Cookie:name=songhao (Request Headers)

4.服务器端接收到请求数据包后,解析出请求数据包中Cookie信息.

【例1】用Cookie完成一个网页访问次数的需求。

根据实现原理:首先访问时会带入一个request请求,并且相应到浏览器,并以Set-Cookie消息头存入

(一)用户第一次访问获取Cookie对象

// 编写servlet访问存入coolie对象
package com.hekaikai666.Servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AddCookie
 */
@WebServlet("/addCookie.do")
// 注解的作用.
public class AddCookie extends HttpServlet {
    protected void service(HttpServletRequest request, HttpServletResponse response)
	    throws ServletException, IOException {
	System.out.println("Servlet开启");
	// 创建一个Cookie对象
	Cookie cookie = new Cookie("name", "张三");
	Cookie cookie2 = new Cookie("msg", "木有小JJ");
	Cookie cookie3 = new Cookie("times", "10");
	// 将Cookie添加到相应数据包中带回去
	response.addCookie(cookie);
	response.addCookie(cookie2);
	response.addCookie(cookie3);
	
	response.getWriter().println("Add Cookie OK!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值