Cookie和Session注意事项
文章目录
之前在学习Cookie只注重如何使用,现在重新仔细的看一下Cookie的介绍,发现有很多东西都没阅读仔细,特留下此篇
1.Cookie
1.小小概念
-
Cookie并不是保存在服务器,而是在客户端
-
服务器向客户端发送Cookie时会增加
Set-Cookie
响应头字段Set-Cookie: user=xlu;Path=/;
-
Cookie的构造方法只有一个
public Cookie(String name,String value);
-
Cookie一旦创建就无法更改
name
-
Cookie默认会在浏览器关掉的时候清除
Max-Age
默认为-1
-
Cookie的
domain
属性默认为但钱主机名domain
属性值不区分大小写
-
Cookie的
path
属性默认只对所属目录及子目录有效- 要对整个目录需要设置为
/
- 要对整个目录需要设置为
2.部分相关API
1. Cookie
方法 | 功能 | 备注 |
---|---|---|
void setPath(String url) | 设置Cookie存活时间 | 0:立即删除;正整数:保存在本地磁盘中;负整数:浏览器关机就删; |
void setPath(String url) | 设置Cookie作用域 | |
void String getName() | 返回Cookie的名称 | 需要注意的是没有setName() 这个方法 |
void setValue() | 设置Cookie的值 | - |
2.HttpServlet Response
方法 | 功能 | 备注 |
---|---|---|
void addCookie(Cookie cookie) | 添加一个Cookie 相应回去 | - |
2.Session
1.小小概念
-
Session
由浏Servlet
容器创建 -
每一个
Session
对象都有对应的id
,由自动容器分配 -
一般情况:
Session
是通过Cookie
技术来传递id
属性 -
Session
是一般基于Cookie
技术实现,如果Cookie
被禁用,还可以使用URL重写
来实现 -
Tomcat
中Session
默认的超时时间为30
分钟- 在web项目的
web.xml
文件中更改时间
<!-- 在web.xml中加入配置,更改时间 --> <session-config> <session-timeout>30</session-timeout> </session-config>
- 在
Tomcat
目录下的conf/web.xml
<session-config> <session-timeout>30</session-timeout> </session-config>
- 调用
Session
的ap
// 单位为秒,-1为永不过期 session.setMaxInactiveInterval(30*60);
- 在web项目的
2.部分APi
1.HttpSession
方法 | 功能 | 备注 |
---|---|---|
String getId() | 得到Session 的Id | |
long getLastAccessedTime() | 得到上一次与Session 有相关请求的时间 | |
void invalidate() | 强制使Session 无效 | |
ServletContext getServletContext() | 得到当前上下文对象 | |
void setAttribite(String name,Object value) | 设置一个属性 | |
Object getAttribite() | 得到指定属性 | 一般需要强转 |
void removeAttribute(String name) | 删除指定属性 | |
void setMaxInactiveInterval(int interval) | 设置两次访问之间的最大间隔,也就是超时时间 | 设置为-1 是永久 |
2.HttpServletRequest
方法 | 功能 | 备注 |
---|---|---|
HttpSession getSession() | 获取Session 对象 | - |