Filter
1、Filter,什么是过滤器?
| 1、Filter过滤器是JavaWeb的三大组件之一,三大组件分别是:Servlet程序、Listener监听器、Filter过滤器 |
| 2、Filter过滤器它是JavaEE的规范,也就是接口 |
| 3、Filter过滤器它的作用数:拦截请求、过滤响应。 |
| 4、拦截请求常见的应用场景有: |
| *权限检查 |
| *日记操作 |
| *事务管理 |
| *……等等 |
2、Filter的初体验
1、要求在你的web工程下,有一个admin目录下的所有资源(html页面、jpg图片、jsp文件、等等)都必须是用户登录之后才允许访问。
![image-20220601084706089]()
| @Override |
| public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { |
| HttpSession session = ((HttpServletRequest) servletRequest).getSession(); |
| Object user = session.getAttribute("user"); |
| if (user != null) { |
| servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest, servletResponse); |
| servletResponse.getWriter().write("请先登录!"); |
| return; |
| }else{ |
| |
| filterChain.doFilter(servletRequest, servletResponse); |
| } |
| } |
2、Filter过滤器的使用步骤:
| 1、编写一个类去实现filter接口 |
| 2、实现过滤方法doFilter() |
| 3、到web.xml中配置Filter的拦截路径 |
| |
3、Filter的生命周期
| Filter的生命周期包含几个方法 |
| 1、构造器方法 |
| 2、int初始化方法 |
| 第一二步,在web工程启动的时候执行(Filter已经创建) |
| 3、doFilter过滤方法 |
| 第三步,每次拦截到请求,就会执行 |
| 4、destroy销毁 |
| 第四步,停止web工程的时候,就会执行(停止web工程,也会销毁Filter过滤器) |
4、FilterConfig类
| 1、FilterConfig类见名知义,它是Filter过滤器的配置文件类 |
| 2、Tomcat每次创建Filter的时候也会同时创建一个FilterConfig类,这里包含了Filter配置文件的配置信息。 |
| 3、FIlterConfig类的作用使获取Filter过滤器的配置内容 |
| *获取Filter的名称filter-name的内容 |
| *获取在filter中配置的int-param初始化参数 |
| *获取ServletContext对象 |
| @Override |
| public void init(FilterConfig filterConfig) throws ServletException { |
| System.out.println("2、Filter初始化方法init()"); |
| |
| |
| System.out.println("filter-name:" + filterConfig.getFilterName()); |
| |
| |
| System.out.println("初始化参数username的值是:" + filterConfig.getInitParameter("username")); |
| System.out.println("初始化参数password的值是:" + filterConfig.getInitParameter("password")); |
| |
| System.out.println("ServletContext对象的值是:" + filterConfig.getServletContext()); |
| } |
5、FilterChain过滤器链
| Filter 过滤器 |
| Chain 链,链条 |
| FilterChain 就是过滤器链(多个过滤器如何一起工作) |



6、Filter的拦截路径
1、精确匹配
| <url-pattern>/target.jsp</url-pattern> |
2、目录匹配
| <url-pattern>/admin/*</url-pattern> |
3、后缀名匹配
| <url-pattern>*.html</url-pattern> |
Filter过滤器它只关心请求的地址是否匹配,不关心请求资源是否存在。
本文作者:_xiaolin
本文链接:https://www.cnblogs.com/SilverStar/p/17415178.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步