<%@ 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!