版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a592381841/article/details/85226816
一、前言:
HTTP是无状态的。因此在默认状态下,服务器是不知道一个Http请求是否是来自第一次访问的项目。
因而有如下四种方法可以保持http的状态
- URL重写
- 隐藏域
- cookie
- httpsession对象
二、cookie
2-1:不足之处
用户可以通过设置他的浏览器来拒绝接受cookie
cookie中不能存中文
2-2:概述
- 客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客 户端浏览器颁发一个Cookie。
- 客户端浏览器会把Cookie保存起来。
- 当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务 器。
- 服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
2-3使用方法
2-3-1原始的方法
通过response发送set-cookie,用request获得cookie请求头
2-3-2 便捷方法
使用response的addcookie()方法向浏览器保存cookie
使用response的getcookies()方法获得浏览器归还的cookie
2-4:cookie属性
- name和value 键值对
- maxAge:cookie的最大生命周期时间,cookie保留的时间(秒为单位)
- maxAge>0 cookie保存有效时长;cookie保存在客户机的硬盘
- maxAge=0, cookie保存在内存
- maxAge<0 cookie不保存,马上删除
- PATH(cookie路径)
- 由服务器创建cookie时,设置。
- 当客户端访问服务器的路径,需归还cookie给服务器是由Path决定。
- 当浏览器访问服务器,若路径包含某个cookie路径,则归还cookie
- path的默认值是当前访问路径的父路径。
三、HTTPSession
HTTPSession底层依赖cookie或者URL重写
会话:一个用户对服务器的多次连贯性请求,用户多次请求之间未关闭浏览器
会话范围:是某个用户从首次访问服务器开始直到用户关闭浏览器。
服务器会为每个客户端创建一个session对象,session好比客户在服务器端的账户,被服务器保存在一个Map中(session缓存)
在web.xml中配置session的最大不活动时间;
<session-config>
<session-time>30</session-time>
</session-config>
3-1获得session对象
- Servlet中
- HTTPSession session = request.getsession();
- HTTPSession session = request.getsession(true); //同1一样
- HTTPSession session = request.getsession(false); //若session缓存中无该session。则返回null
- JSP中无需创建直接用session。(JSP九大内置对象之一)
3-2相关方法
- void setAttribute(String name,Object value);
- Object getAttribute(String name);
- void removeAttribute(String name); //前三个都是域操作
- String getId() //获得sessionID
- int getMaxInactiveInterval() //获得最大不活动时间
- void invalidate() //使得session失效,并创建新的session和sessionID
- boolean isnew() //查看该session是否刚创建,(创建后,服务器无响应客户端sessionID)