欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java笔记之Web前端 :Cookie 和Session

程序员文章站 2022-03-11 16:21:25
...

1. 什么是会话技术

它指的是一个客户端(浏览器) 与Web服务器之间连续发生的一系列请求和响应的过程。例如在网站上购物的完整流程就是一个会话。

1.1会话场景例子

在打电话过程中,通话双方会有通话内容,同样,在客户端与服务器端交互的过程中,也会产生一些数据。例如,用
户甲和乙分别登录了购物网站,甲购买了一个Nokia手机,乙购买了一个Ipad,当这两个用户结账时,Web服务器需
要对用户甲和乙的信息分别进行保存。

1.2HttpServletRequest对象和ServletContext对象 为什么不适合?

HttpServletRequest对象和ServletContext对象
都可以对数据进行保存,但是这两个对象都不可行,具体原因如下:
(1)客户端请求Web服务器时,针对每次HTTP请求,Web服务器都会创建一个HttpServletRequest对象,该对象
只能保存本次请求所传递的数据。由于购买和结账是两个不同的请求,因此,在发送结账请求时,之前购买请求中的
数据将会丢失。(一次会话之前的请求数据会丢失)
(2)使用ServletContext对象保存数据时,由于同一个Web应用共享的是同一个ServletContext对象,因此,当用
户在发送结账请求时,由于无法区分哪些商品是哪个用户所购买的,而会将该购物网站中所有用户购买的商品进行结 (不同请求数据会共享)
算,这显然也是不可行的。
(3)为了保存会话过程中产生的数据,在Servlet技术中,提供了两个用于保存会话数据的对象,分别是Cookie和
Session。关于Cookie和Session的相关知识 。
Java笔记之Web前端 :Cookie 和Session

1.3Servlet 的会话技术

Servlet 的会话技术主要有两种:Cookie和Session

1.3.1 Cookie

1.3.1.1 概念

浏览器端的会话技术,它通过在浏览器中记录一些服务器传递过来的数据,解决会话从什么时候开始,到什么时候结
束。 (浏览器端)

1.3.1.2 常用API

Cookie:
Cookie(String name, String value) 创建cookie对象
String getName() 获取cookie的名称
String getValue() 获取cookie的值
void setPath(String uri) 设置cookie的路径——浏览器根据这个路径判断那些cookie要发送给服
务器
HttpServletResponse:
void addCookie(Cookie cookie) 将cookie发送给浏览器
HttpServletRequest:
Cookie[] getCookies() 获取浏览器发送的cookie

1.3.1.3 API使用

代码

CookieServlet1:
Cookie:
Cookie(String name, String value) 创建cookie对象
String getName() 获取cookie的名称
String getValue() 获取cookie的值
void setPath(String uri) 设置cookie的路径——浏览器根据这个路径判断那些cookie要发送给服
务器
HttpServletResponse:
void addCookie(Cookie cookie) 将cookie发送给浏览器
HttpServletRequest:
Cookie[] getCookies() 获取浏览器发送的cookie
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
CookieServlet2:
package cn.itcast.web;
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;
import java.io.IOException;
@WebServlet(name = "CookieServlet1",urlPatterns = "/cookie1")
public class CookieServlet1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
} p
rotected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
//创建cookie
Cookie cookie = new Cookie("username","tom");
//设置cookie的路径——浏览器根据这个路径判断那些cookie要发送给服务器
cookie.setPath("/day");
//将cookie发送给浏览器
response.addCookie(cookie);
}
}

什么是有效期?
Cookie的存活时间 Cookie的默认有效期:一次会话期间