目录
1. 定义
服务器无法识别每一次HTTP请求的出处(不知道来自哪个终端),它只会接受到一个请求信号,所以就存在一个问题:将用户的响应发送给其他人,必须有一种技术来让服务器知道请求来自哪,这就是会话技术。
会话:就是客户端和服务器之间发生的一系列连续的请求和响应的过程,打开浏览器进行操作到关闭浏览器的过程。
会话状态:指服务器和浏览器在会话过程种产生的状态信息,借助于会话状态,服务器能够把属于同一次会话的一系列请求和响应关联起来。
实现会话有两种方式:
- session
- cookie
2. Session
2.1 sessionID
属于同一次会话的请求都有一个相同的标识符,sessionID
测试代码
<%@ 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>
<%
String sessionID = session.getId();
%>
<%=sessionID%>
</body>
</html>
结果展示
不同sessionID的原因:
- 同一浏览器关闭后再打开,就算作不同的会话
- 用不同的浏览器打开
2.2 session常用方法
String getID()
获取sessionID
void setMaxINactiveInterval(int interval)
设置session的失效时间,单位为秒
int getMaxInactiveInterval()
获取当前session的失效时间
void invalidata()
设置session立即失效
void setAttribute(String key,Object value)
通过键值对的形式来存储数据
Object getAttribute(String key)
通过键获取对应的数据
void removeAttribute(String key)
通过键删除对应的数据
3. Cookie
Cookie是服务端在HTTP响应中附带传给浏览器的一个小文本文件,一旦浏览器保存了某个Cookie,在之后的请求和响应过程中,会将此Cookie来回传递,这样就可以通过Cookie这个载体完成客户端和服务端的数据交互。
Cookie
- 创建cookie
Cookie cookie = new Cookie("name","zhangsan");
response.addCookie(cookie);
- 读取Cookie
Cookie[] cookies = request.getCookies();
for(Cookie cookie:cookies)
{
out.write(cookie.toString());
}
Cookie[] cookies = request.getCookies();
for(Cookie cookie:cookies)
{
out.write(cookie.getName()+":"+cookie.getValue()