当前位置: 首页 > article >正文

如何使用Filter(过滤器一)

目录

二、生命周期

二、使用步骤


一、什么是过滤器

Filter(过滤器):是JavaWeb三大组件之一,Servlet2.3规范中加入的接口。是面向切面编程思想的应用实现,用AOP的思想来统一处理一类事情。

什么是AOP(面向切面编程)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/u011529483/article/details/141865235?spm=1001.2014.3001.5501

Filter(过滤器)能做什么?访问权限控制、模块访问时段控制等。

二、生命周期

初始化:程序启动时进行实例初始化,初始化到内存中,单例存在直到销毁时灭亡。调用方法init()

功能处理:你需要实现的功能在这里进行逻辑处理。调用方法doFilter()

实例销毁:关闭容器(tomcat)时进行销毁。调用方法destroy()

二、使用步骤

1. 创建javaweb项目

创建一个可运行项目。

(我的示例项目记Spring HTTP Invoker远程调用的使用(一)基于Url映射方式,DispatcherServlet统一处理实现-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/u011529483/article/details/141678510?spm=1001.2014.3001.5501沿用)文章中的项目。

2. 创建过滤器Filter

创建了名为AwFilter的过滤器,并实现Filter接口:

package com.wqbr.showebsite.wfilter;

import javax.servlet.*;
import java.io.IOException;

/**
 * @author lv
 * @date 2024年9月5日
 *
 */
public class AwFilter implements Filter {

    /**
     * 初始化方法,初始化Filter实例,当 Web容器(tomcat)启动时调用
     * @param config
     * @throws ServletException
     */
    @Override
    public void init(FilterConfig config) throws ServletException {
        System.out.println("AwFilter .... init初始化...  ...");
    }

    /**
     * 销毁实例,关闭容器停止服务时调用
     */
    @Override
    public void destroy() {
        System.out.println("AwFilter .... destroy销毁。。。。。。");
    }

    /**
     * 业务处理,拦截要执行的请求,对请求和响应进行逻辑处理
     * @param request
     * @param response
     * @param chain
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        System.out.println("AwFilter .... doFilter业务逻辑处理* * * * * *");
        chain.doFilter(request, response);
    }
}

3. 配置Filter,项目启动才能运行Filter

<!--配置自定义过滤器-->
<filter>
  <filter-name>AwFilter</filter-name>
  <filter-class>com.wqbr.showebsite.wfilter.AwFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>AwFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <!--  https://blog.csdn.net/qyb19970829/article/details/110100544 配置时注意关于spring容器加载顺序的问题,
   applicationContext.xml,spring-security.xml,springmvc.xml 即这几个配置文件加载顺序
   -->
  <!--字符编码过滤器一定要放在前面,在web.xml中配置Spring提供的过滤器类-->
  <filter>
    <filter-name>encodingFilter</filter-name> <!--encodingFilter 这个命名不要修改-->
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--配置自定义过滤器-->
  <filter>
    <filter-name>AwFilter</filter-name>
    <filter-class>com.wqbr.showebsite.wfilter.AwFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>AwFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--配置Spring的监听器,启动spring容器-->
  <!--配置加载类路径的配置文件,注意加载顺序-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      classpath:spring/applicationContext.xml
      classpath:spring/applicationContext-clients.xml
    </param-value>
  </context-param>
  <display-name>Archetype Created Web Application</display-name>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!--配置前端控制器,对浏览器发送的请求进行统一处理-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--加载springmvc.xml配置文件的位置和名称,配置的是Spring配置-->
    <init-param>
      <!--contextConfigLocation:上下文配置路径,固定值-->
      <param-name>contextConfigLocation</param-name>
      <!--classpath:类路径,指的是Java和resources文件夹-->
      <!--springmvc.xml:指的是配置文件的名称:需要配置springmvc.xml,在下面。
      spring默认配置文件为applicationContext.xml。当中配置spring创建容器时要扫描的包 已经整合到springmvc.xml中-->
      <param-value>
        classpath:spring/springmvc.xml
      </param-value>
    </init-param>
    <!--配置启动加载-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <!--开启项目时打开的页面-->
    <welcome-file-list>
      <welcome-file>/login.jsp</welcome-file>
    </welcome-file-list>

  <!--设置session超时,单位分钟 默认30分钟-->
  <!--  <session-config>-->
  <!--    <session-timeout>2</session-timeout>-->
  <!--  </session-config>-->

</web-app>

4. 启动项目

控制台显示如下,执行了init初始化方法,然后进入doFilter方法。说明Filter成功运行了,并体现了生命周期各方法的执行。


本文已说明了如何使用Filter。好了


http://www.kler.cn/a/298785.html

相关文章:

  • PH热榜 | 2024-12-26
  • Docker 默认安装位置迁移
  • mac_录屏
  • Qt使用QZipWriter和QZipReader来解压、压缩文件
  • oracle linux8.10+ oracle 23ai安装
  • 数字IC后端设计实现十大精华主题分享
  • discuz论坛3.4 截图粘贴图片发帖后显示不正常问题
  • Java 利用ASM读取变量值(Field value)问题研究
  • 2024级新生数组字符串专题题解
  • Docker 容器技术在简化 MySQL 主从复制部署与优化
  • 快速入门游戏领域,开发游戏需要哪些技术?
  • Lua垃圾回收机制
  • 跨境网红营销SOP流程1.0丨出海笔记
  • 博科测试IPO上市关注:创新驱动发展,加速技术成果转化
  • 使用datax从mysql导入数据到taosdb中
  • Vue框架学习笔记-9
  • Android12——Launcher3文件夹布局修改调整
  • 鸿蒙HarmonyOS应用开发者高级认证重点知识详解
  • 2024国赛数学建模C题论文:基于优化模型的农作物的种植策略
  • 根据NVeloDocx Word模板引擎生成Word(一)
  • 【C++】容器list常用接口详解
  • vue3 嵌套iframe 通讯
  • Docker 安装FileBeat、Elasticsearch及Kibana详细步骤
  • 基于Pinia和Compute的持久化localStorage登录态管理Vuejs 源码教学
  • 服务网关工作原理,如何获取用户真实IP?
  • Android Radio2.0——公告监听设置(四)