Cookie Session 拦截器(Filter)

1、Cookie

1.1什么是Cookie

  • Cookie是在浏览器访问Web服务器的某个资源时,由Web服务器在HTTP响应消息头中附带传送给浏览器的一小段数据

  • 一旦Web浏览器保存了某个Cookie,那么它在以后每次访问该Web服务器时,都应在HTTP请求头中将这个Cookie回传给Web服务器。

  • 一个Cookie主要由标识该信息的名称(name)和值(value)组成
    image

1.2使用流程

在服务器中创建Cookie
Cookie cookie = new Cookie(key,value);
设置cookie的编码格式

点击查看代码
copy
Cookie cookie = new Cookie( URLEncoder.encode("姓名","UTF-8"), URLEncoder.encode("张三","UTF-8"));
设置Cookie的生命周期
  • setMaxAge
  • 大于0,存在指定的秒
  • 等于0,直接删除
  • 小于0,一般是-1 ,保存至浏览器关闭

设置cookie的存储路径
setPath
cookie设置路径,其实就是设置cookie的读取范围

2、Session

2.1Session使用

Session作用域:拥有存储数据的空间,作用范围是一次会话有效

  • 一次会话是使用同一浏览器发送的多次请求。一旦浏览器关闭,则结束会话
  • 可以将数据存入Session中,在一次会话的任意位置进行获取
  • 可传递任何数据(基本数据类型、对象、集合、数组)

2.2Session的使用流程

session是服务器端自动创建的,通过request对象获取
HttpSession session=request.getSession();
Session保存数据,setAttribute(属性名,Object)保存数据到session中
session.setAttribute("key",value);//以键值对形式存储在session作用域中。
Session失效
session.setMaxInactiveInterval(60*60);//设置session最大有效期为一小时 session.invalidate();//手工销毁

2.3session域与请求域request的区别

  • request是一次请求有效,只有一次请求转发内数据可以获得
  • session是一次会话内有效,无论请求转发还是重定向都是可以获得数据的

3、过滤器(Filter)

image

3.1实现过程

  • 编写Java类实现Filter接口

  • 在doFilter方法中编写拦截逻辑

  • 设置拦截路径

3.2拦截目标设置()

在自定义的Filter类上使用注解@WebFilter(value=“/过滤目标资源”)

3.3过滤器优先级

在一个Web应用中,可以开发编写多个Filter,这些Filter组合起来称之为一个Filter链。
优先级:

  • 如果为注解的话,是按照类全名称的字符串顺序决定作用顺序

  • 如果web.xml,按照 filter-mapping注册顺序,从上往下

  • web.xml配置高于注解方式

  • 如果注解和web.xml同时配置,会创建多个过滤器对象,造成过滤多次。

3.4拦截放行

Chain.doFilter(request, response);

注意事项

如果是在一个页面产生请求转发的指令,而拦截器未对该页面进行拦截,则会跳过拦截器,因为这是一次请求,只发生在服务器内部。如果使用重定向则可以成功拦截。

posted @   卡卡罗特kk  阅读(184)  评论(0编辑  收藏  举报
相关博文:
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
展开