1 过滤器概述
oa项目还有什么缺陷?
目前oa项目的功能不多,Servlet也不多,但若功能很多,假如还有EmpServlet、OrderServlet等等,每一个Servlet都是处理自己相关的业务。但它们有相同的地方,在执行之前都要判断用户是否登录了,如果用户登录可以继续操作,如果没有需要登录。这段处理是固定的,大家都一样,怎么解决这个问题??可以使用Filter过滤器。
Filter过滤器是什么,有什么用,执行原理是什么?
- Filter是过滤器
- 可以在Servlet这个目标程序执行之前添加代码,也可以在执行之后添加代码,之前之后都可以过滤
- 一般情况下都是在过滤器当中编写公共代码。
一个过滤器怎么写?
第一步:编写一个Java类实现一个接口:jakarta.servlet.Filter。并且实现这个接口中的所有方法。
- init方法:在Filter对象第一次被创建之后调用,并且只调用一次
- doFilter方法:只要用户发送一次请求,则执行一次,发送N此执行N次,在这个方法中编写过滤规则。
- destroy方法:在Filter对象被释放/销毁之前调用,并且只调用一次。
第二步:在web.xml文件对FIlter进行配置,和Servlet类似,或者使用注解进行配置。
注意:
- Servlet对象默认情况下,在服务器启动的时候是不会创建对象的。
- Filter对象默认情况下,在服务器启动的时候会创建对象
- Servlet是单例的
小小演示一波:
随便写两个Servlet,然后写个Filter,Filter如下:
package com.itzw.javaweb.servlet