Servlet高级Cookie,Session,Filter,Listener内容讲解
树图思维导图提供 Servlet高级Cookie,Session,Filter,Listener脑图 在线思维导图免费制作,点击“编辑”按钮,可对 Servlet高级Cookie,Session,Filter,Listener脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:c99bae42249f258910e94642f0475a7e
Servlet高级-Cookie,Session,Filter,Listener思维导图模板大纲
应用场景
记住密码,自动登录,浏览记录,购物车
为什么要有这个Cookie
http的请求是无状态的。客户端与服务器在通讯的时候,是无状态的,其实就是客户端在第二次来访的时候 服务器根本就不直到这个客户段之前有没有来访问过, 为了更好的用户体验,更好的交互,就是为了更好的手机用户习惯
cookie的优缺点
优点
1:极高的扩展性和可用性 2:通过良好的编程控制保存在cookie中的sessin对象的大小, 3:通过加密和安全传输技术(SSL),减少cookie被破解的可能性。 4:只在cookie中存放不敏感数据,即使被盗也不会有重大损失。
缺点
1:Cookie数量和长度的限制 ,每个localhost最多只能由20条cookie,每个cookie长度不能超过4kb,否则会被截掉。 2:安全性问题 ,如果cookie被人拦截了,那个人就可以获取所有的session信息 3:有些状态不可能保存在客户端。 为了防止重复提交表单,我们需要在服务器端保存一个计数器,
Cookie怎么用
添加cookie给客户端
Cookie cookie=new Cookie("name","张三“); resp.addCookie(cookie);
出现中文乱码情况
获取客户端带过来的cookie
可以在servlet中使用request对应来获取cookie
清除Cookie
Cookie没有提供delete方法,我们要删除需要设置maxAge 为0 。
其他常用方法
案例实现记住密码功能
1. 用户打开网站后,自动读取Cookie中存储的用户名、密码 2. 如果存在,自动填充到表单中 3. 如果不存在,说明是第一次登录,需要登录后在后台将用户名、密码写入Cookie中,以便下 次登录时自动填充 导入资料中的login.html LoginServlet.java
Cookie总结:
1.服务器给客户端发送过来的一份小数据,并且存放在客户端上。
2.获取cookie request.getCookie();
3.添加cookie response.addCookie(cookie);
4.Cookie有效时间 1.会话Cookie 默认情况下,关闭了浏览器,那么cookie就会消失 这是默认的行为,但是大部分现代的浏览器都不会这么做,比如chrome浏览器, 默认打开时会恢复上次关闭时的状态,所以关闭浏览器cookie并不会失效。 我们 可以设置浏览器打开时不恢复上次状态,改为打开新的标签页即可 2.持久Cookie 通过设置MaxAAge指定存活时间,在存活时间内,都有效,并且会保存在客户端上。 cookie.setMaxAge(0); //设置立即删除 cookie.setMaxAge(100); //100 秒
6.Cookie存储中文可以使用URLEncoder.encode转码后再进行存储
Session概述
会话,在Java中是一种服务端会话技术,Session是基于Cookie的一种会话机制, 区别在于Cookie是将数据存储的客户端, 而Session时将数据存储在服务端 Session本质上也是采用客户端会话技术,只不过交给Cookie存储在客户端的是Session的一个标识, 而数据是存储在服务端的一i个内存对象中的,每次请求通过Cookie将Session的唯一标识传递给服务端, 然后服务端根据唯一标识自动到内存中找到对应的Session的队友,然后再将数据获取出来。
Session使用场景
session经常作为作用域被用来存储当前登录用户的数据,在同一次会话中,可以实现再多个操作中判断用户是否登录
Session的优缺点
1:占用服务器资源: session的优点很多,但是他的缺点,极大的提高服务器成本 2:没有分布式架构,无法支持横向扩展 3:保存下来各种形式的,不方便 4:过多使用导致代码不可读,不可维护 5:session常用来文件存储,性能不好
常用API
得到会话id
String id=session.getId();
存值
session.setAttribute(name,value);
取值
session.getAAttribute(name);
移除值
session.removeAttribute(name);
销毁session
session.invalidate();
设置session的有效期,session默认的有效期是30分钟(不在发送请求,不再进行访问),
session.setMaxInactiveInterval(60*60*12);
Session的创建和销毁
创建
获取Session中的数据
销毁和移除Session中的数据
Filter过滤器概述
过滤器,其实就是对客户端发出来的请求进行过滤。 浏览器发出,然后服务器派servlet处理。 这中间就需要使用过滤,其实过滤器起到的是拦截的作用。 过滤器采用了链式结构,如下图示意:
应用场景Filter
1:对一些敏感词汇进行过滤; 2:统一设置编码; 3:自动登录; .....
如何使用Filter
Filter的生命周期
创建
销毁
示例
使用Filter+Session实现未登录判断,及请求编码设置
Listener概述
Listener意味监听器,用来当发生某种事件以后,通知我们的程序做某种操作,和JS中的事件有点类似。 监听器的内部机制其实就是接口回调。
监听器的分类
3. 监听器的用法