栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb--快速入门Filter过滤器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb--快速入门Filter过滤器

Filter
  • 一、Filter 过滤
    • 1. Filter什么是过滤器
    • 2. Filter的初体验
      • 2.1 编写AdminFilter实现接口
      • 2.2在xml中配置访问路径
      • 2.3 打断点debug部署服务进行测试
    • 3. Filter的生命周期
    • 4. FilterConfig类
    • 5. FilterChain 过滤器链
    • 6. Filter的拦截路径
      • 精确匹配
      • 目录匹配
      • 后缀名匹配

一、Filter 过滤 1. Filter什么是过滤器

1、Filter过滤器它是JavaWeb的三大组件之一

三大组件分别是: Servlet 程序、Listener监听器、Filter过滤器

2、Filter过滤器它是JavaEE 的规范。也就是接口

3、Filter过滤器它的作用是:拦截请求,过滤响应

拦截请求常见的应用场景有:

​ 1、权限检查
​ 2、日记操作
​ 3、事务管理
​ ……等等

2. Filter的初体验

用户登录之后都会把用户登录的信息保存到Session域中。所以要检查用户是否登录,可以判断Session中是否包含有用户登录的信息即可!!!

<%--
  Created by IntelliJ IDEA.
  User: Jack
  Date: 2022/1/3
  Time: 9:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title



<%
    Object user = session.getAttribute("user");

    if (user == null){
        request.getRequestDispatcher("/login.jsp").forward(request,response);
        return;
    }
%>





完整的体验

2.1 编写AdminFilter实现接口
package com.caq.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class AdminFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        HttpSession session = httpServletRequest.getSession();
        Object user = session.getAttribute("user");
        //如果等于null,说明没有登录
        if (user == null) {
            servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest, servletResponse);
            return;
        } else {
            //让程序继续往下访问用户的目标资源
            filterChain.doFilter(servletRequest,servletResponse);
        }
    }

    @Override
    public void destroy() {

    }
}
2.2在xml中配置访问路径


    

    
        AdminFilter
        com.caq.filter.AdminFilter
    


    
        AdminFilter



        /admin/*
    

    
        RegistServlet
        com.caq.servlet.RegistServlet
    
    
        RegistServlet
        /registServlet
    



    
        KaptchaServlet
        com.google.code.kaptcha.servlet.KaptchaServlet
    
    
        KaptchaServlet
        /kaptcha.jpg
    








2.3 打断点debug部署服务进行测试

可以看到首先经过的是filter过滤器

进行放行才会出现a.jsp的页面

3. Filter的生命周期

Filter的生命周期包含几个方法

​ 1、构造器方法

​ 2、init初始化方法
​ 第1,2步,在 web工程启动的时候执行( Filter已经创建)

​ 3、doFilter过滤方法

​ 第3步,每次拦截到请求,就会执行

​ 4、destroy销毁

​ 第4步,停止 web工程的时候,就会执行(停止web工程,也会销毁Filter过滤器)

4. FilterConfig类

FilterConfig 类见名知义,它是Filter过滤器的配置文件类。

Tomcat每次创建Filter 的时候,也会同时创建一个FilterConfig类,这里包含了Filter配置文件的配置信息。

FilterConfig 类的作用是获取filter 过滤器的配置内容

​ 1、获取Filter的名称filter-name 的内容

​ 2、获取在 Filter 中配置的init-param初始化参数

​ 3、获取ServletContext对象

5. FilterChain 过滤器链

FilterChain 就是过滤器链(多个过滤器如何一起工作)

6. Filter的拦截路径 精确匹配
/target.jsp

表示请求地址必须为:http://ip:port/工程路径/target.jsp

目录匹配
/admin/*

表示请求地址必须为:http://ip:port/工程路径/admin/*

后缀名匹配
*.html
表示请求地址必须是.html结尾才会拦截到

*.do
表示请求地址必须以.do结尾才会拦截到

*.action
表示请求地址必须以.action结尾才会拦截到

Filter过滤器只关心请求地址是否匹配不关心资源是否存在

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/694219.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号