cookie和session的相关使用
一. 什么是会话
- 用户开一个浏览器,访问某一个web站点,在这个站点点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一次会话。
- 客户端与服务端的多次请求和响应的一个过程称之为一次会话,一次会话可以有多次请求。
二. Cookie使用
创建cookie
1
2
3
4
5
6
7
8
public void addCookie(HttpServletResponse resp) {
//创建cookie对象
final Cookie cookie = new Cookie("name", "coderyeah");
//响应给客户端浏览器
resp.addCookie(cookie);
}获取cookie
1
2
3
4
5
6
7
8
9
10
public void getCookie(HttpServletRequest req) throws UnsupportedEncodingException {
//获取所有cookie数组
final Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
//解码 对于中文需要编码和解码
System.out.println(cookie.getName() + " : " + URLDecoder.decode(cookie.getValue(), "UTF-8"));//解码
}
}修改cookie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void modifyCookie(HttpServletResponse resp) throws UnsupportedEncodingException {
//因为K-V键唯一可以通过覆盖的方式修改cookie
//编码
final String encode = URLEncoder.encode("喜羊羊", "UTF-8");
final Cookie cookie = new Cookie("name", encode);
//设置cookie有效期 单位秒
//1.正数:代表多少秒
//2.0:就代表删除
//3.负数:关闭浏览器时cookie失效
cookie.setMaxAge(60 * 60 * 24 * 7);//一周
//设置cookie作用域
cookie.setPath("/");//根目录 整个服务器起作用
resp.addCookie(cookie);
}删除cookie
1
cookie.setMaxAge(0);
三. cookie优缺点
- 缺点:
- 不安全,cookie存在客户端;
- 操作中文麻烦,需要编码和解码;
- cookie不能操作对象,只能操作字符串;
- cookie大小限制在4kb之内;
- 一台服务器在一个客户端最多保存20个Cookie;
- 一个浏览器最多可以保存300个Cookie。
- 优点:
- 提升用户体验感;
- 可以设置保存很长的时间,降低服务器的压力。
四. session
session原理
session理解
(1) Session是把数据保存到服务器端;
(2) Session底层依然使用Cookie。
创建session
HttpSession session = req.getSession();
(1) 如果有session,那么直接拿到session;
(2) 如果没有session,创建一个session,再拿到这个session;
session的
api
- 设置值:
session.setAttribute(String key, Object obj);
- 获取指定的数据:
req.getSession().getAttribute(String key);
- 移除指定数据:根据一个key删除session中的一条记录,
req.getSession().removeAttribute("name");
- 销毁整个Session对象:
req.getSession().invalidate();
- 设置值:
session的生命周期
出生:创建Session对象;
销毁:销毁session对象。
① 调用session对象的invalidate()方法:登出/注销
② 过期时间结束【从不操作开始算起】:最大非活动间隔
(1) 代码方式:
session.setMaxInactiveInterval(int s)
(2) web.xml方式:
,单位是分钟 1
2
3
4全局session时间 默认30分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>(3) 默认是30分钟,在Tomcat的web.xml查看
session优缺点
- 优点:
- 由于session是将数据保存在服务器端,安全性高相对较高;
- 大小相对于Cookie来说大得多;
- 数据类型没有限制;
- 缺点:
- 数据量太大,会影响服务器的性能
- 优点:
五. 用户登录主要功能代码案例
1 |
|
1 | $(function () {//页面加载事件 |
评论