会话、过滤器、监听器

会话

什么是会话:连接建立后,多次的交互

Cookie

什么是Cookie

  • Cookie是在浏览器与服务器端交互时,由服务器在响应头中,存储的一小段数据,响应给客户端
  • 浏览器在接收到响应头时,有Cookie,就保存在客户端
  • 而后续每次对该服务器的访问,都会携带Cookie过去

如何创建Cookie并响应给客户端

1.创建Cookie对象

        Cookie cookie = new Cookie("username","azhen");

2.将Cookie对象放在response里。

        response.addCookie(cookie);

  • 创建的Cookie必须在创建的同时指定存储的name和value。
  • cookie的数据只能是String类型。简单数据
  • 服务器端借助响应头Set-cookie告知浏览器cookie的保存
  • 浏览器存储后,访问同一个项目,会携带该Cookie在请求头中,发送给服务器
  • Cookie的默认生命周期是:浏览器会话关闭销毁(内存存储)

获取请求的cookie: getCookie()

因为客户端可以保存多个Cookie,在请求时,会携带所有当前项目的cookie

服务器是通过request请求对象获取所有的Cookie

Cookie的小问题:数据格式单一,只能存字符串。数据大小有限制:8k。保存在客户端,早期容易被修改

Session

什么是Session

  • 客户端与服务端交互时,会在当前连接建立一个Session对象(会话),同一个session范围内的多次请求域响应视为相同会话。
  • 在同一个Session中,客户端可以访问不同的资源,而共享同一个Session里的数据。
  • Session是保存在服务器端的技术。是根据请求来进行创建的。是服务器拆改年间的,借助Cookie存储在客户端一份,服务端保存一份。

创建Session

1.获取session

        HttpSession session = request.getSession();

2.输出session的id

        session.getId()

共享数据(作用域对象)

同一次会话,会有多次不同的请求和不同的资源,session可以存,取,删除数据。

session.setAttribute(" "," ");

getAttribute("  ");

session的时效性

  • 默认时效性:浏览器关闭即销毁
  • 设置有效时间
  • 强制立即时效

Session的存储机制

  • Session的存储要借助Cookie
  • 第一次访问,服务器会根据请求报文,为其创建session对象。后续访问,直接获取即可。前程操作的是Cookie。
  • session立即时效了:服务器先销毁session,客户端再次访问时,会携带旧的cookie里的session到服务器,服务器判断当前请求的新session和cookie里的session不一致,则会将新session放到cookie里响应给客户端存储新的。

三大域对象

  • 请求域对象:request
  • 会话域对象:session
  • 应用域对象:application(ServletContext)
  • 区别:都可以共享数据,共享数据的范围有区别:请求域对象,是一个request对象有效。转发有效,重定向无效。 会话域对象,是一个session对象有效。转发有效,重定向有效。  应用域对象,是一个Servletcontext对象有效。服务器重启,重新部署,关闭失效。

过滤器

  • 过滤器技术属于Servlet范畴,专注于Servlet的请求和响应
  • 过滤器要优于要过滤的Servlet执行
  • 执行节点: 请求时执行一次,响应式执行一次
  • 解决问题:多个Servlet的共性重复代码,前置性的对请求做一些操作,后置性的对响应做一些操作

过滤器的实现

创建一个目标Servlet

创建一个类,实现filter接口,重写dofilter方法

配置web.xml

Filter的生命周期

servlet的声明周期:第一次接收请求时,Servlet创建对象,执行init方法,执行service方法,最后服务器停止执行destory

过滤器链

多少个过滤器都要记住一个原则:已经执行的过滤器,一定会执行响应的过滤

根据业务的需要,选择放行不放行

执行顺序及注解实现: 默认顺序由web.xml中的filter-mapping标签的先后顺序决定

监听器

监听某个对象或某个对象的行为触发了,就会触发一些额外操作。

session对象钝化和活化

钝化:将session对象序列化存储在本地磁盘中。

活化:将本地磁盘的session对象序列化回内存中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值