首页 > 其他分享 >[Spring]过滤器

[Spring]过滤器

时间:2024-09-22 14:23:48浏览次数:1  
标签:Spring void annotation Filter 过滤器 import public

image

过滤器Filter作为Java三大器之一,在Java Web的使用中有很高的地位。所谓过滤器,就是实现了javax.servlet.Filter接口的服务器端程序。
Filter有如下几个用处:

  • 在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest。
  • 根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据。
  • 在HttpServletResponse到达客户端之前,拦截HttpServletResponse。
  • 根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。

Filter有如下几个方法:

  • void init(FilterConfig filterConfig) 用于完成过滤器的初始化。
  • void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) 实现过滤功能,该方法对每个请求增加额外的处理。
  • void destroy() 用于过滤器销毁前,完成某些资源的回收。

通过@WebFilter实现

通过@WebFilter和@ServletComponentScan可实现Filter。其中,@WebFilter标注在实现Filter接口的过滤器类,并标注相应参数;@ServletComponentScan标注在SpringBoot启动类,标注后Servlet、Filter(过滤器)、Listener(监听器)可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册,无需其他代码!

具体示例代码如下:

TestFilter.java

package com.example.demo.filter;

import org.springframework.core.annotation.Order;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import java.io.IOException;

/**
 * @description:
 * @time: 2021/8/3 16:12
 */
@WebFilter(initParams = {@WebInitParam(name="testFilter",value = "/test")})
@Order(1)
public class TestFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
        System.out.println("-----Filter初始化完成-----");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
                         FilterChain filterChain) throws IOException, ServletException {
        System.out.println("-----调用服务前执行代码-----");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("-----调用服务后执行代码-----");
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
        System.out.println("Filter已销毁");
    }
}

TestController.java

package com.example.demo.controller;

import com.example.demo.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * @description:
 * @time: 2021/8/3 16:04
 */
@RestController
public class TestController {

    @Autowired
    TestService testService;

    @RequestMapping(value = "/test",method = RequestMethod.GET)
    public Object test(){
        testService.printTest();
        return "test";
    }

}

Demo1Application.java

package com.example.demo;

@SpringBootApplication
@ServletComponentScan
public class Demo1Application {
    public static void main(String[] args) {
        SpringApplication.run(Demo1Application.class, args);
    }
}

标签:Spring,void,annotation,Filter,过滤器,import,public
From: https://www.cnblogs.com/DCFV/p/18425226

相关文章

  • Spring Boot技术栈:蜗牛兼职网案例
    第2章相关技术2.1B/S架构B/S结构的特点也非常多,例如在很多浏览器中都可以做出信号请求。并且可以适当的减轻用户的工作量,通过对客户端安装或者是配置少量的运行软件就能够逐步减少用户的工作量,这些功能的操作主要是由服务器来进行控制的,由于该软件的技术不断成熟,最主要的......
  • [Spring]拦截器
    Interceptor介绍拦截器(Interceptor)同Filter过滤器一样,它俩都是面向切面编程——AOP的具体实现(AOP切面编程只是一种编程思想而已)。你可以使用Interceptor来执行某些任务,例如在Controller处理请求之前编写日志,添加或更新配置......在Spring中,当请求发送到Controller......
  • Filter 过滤器和 Listener 监听器
    2、开发步骤3、过滤器执行流程4、过滤器生命周期5、过滤器配置问题6、过滤器链(配置多个过滤器)二、Listener监听器1、ServletContextListener接口2、开发步骤一、Filter过滤器============1、概述当访问服务器资源时,Filter过滤器可以将请求拦截下来,完成一些特殊的......
  • 美食探索家:Spring Boot校园美食分享网络
    第四章系统实现4.1前台首页功能模块校园周边美食探索及分享平台,在系统首页可以查看首页、美食鉴赏、我的好友、个人中心、后台管理等内容,如图4-1所示。图4-1前台首页功能界面图用户登录、用户注册,在用户注册页面可以填写用户名、姓名、手机、邮箱、身份证等详细内容进......
  • springAOP和spring事务
    AOP1.简介Aop面向切面编程:在开发中我们不能直接对已经设计好的代码进行修改(开放-封闭原则,对扩展开放,对修改封闭),解耦AOP的底层实现为动态代理*Target(目标对象):代理的目标对象*Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类*Joinpoint(连接点):所谓连接点是指那些......
  • 美食雷达:Spring Boot校园美食探索工具
    第二章系统分析2.1可行性分析可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面,分别是技术、经济和社会三方面的可行性。我会从这三个方面对网上校园周边美食探索及分享平台进行详细的分析。2.1.1技术可行性该系......
  • 【编程底层原理】彻底搞懂Spring是如何利用三级缓存来解决循环依赖问题的(一级缓存为
    一、整体推导思路为了彻底搞懂Spring是如何利用三级缓存来解决循环依赖问题的,要么去找三级缓存的设计者了解其设计的初衷,要么利用反推法来进行倒推(即一级缓存为啥不行,二级缓存为啥也不合适)。为了让大家能有一个更清晰的理解脉路,下面将先从反推法来介绍下一级缓存为啥不......
  • SpringBoot集成Sa-Token权限认证的学习
    一、前言Sa-Token是一个轻量级Java权限认证框架,主要解决登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权等一系列权限相关问题。它的API设计简单,易于上手,同时功能强大,能够满足多种复杂的权限认证需求。二、基本使用1.引入依赖<dependency> <groupId>cn.dev3......
  • 毕业设计|springboot产业园区智慧公寓管理系统-|免费|代码讲解
    收藏点赞不迷路 关注作者有好处编号:springboot547springboot产业园区智慧公寓管理系统-开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis工具:IDEA/Ecilpse、Navicat、Maven1.万字文档展示(部分)2.系统图片展示第5章系统详细设计这个环节需要使用前面的设......
  • 毕业设计|springboot人事管理系统论文-|免费|代码讲解
    收藏点赞不迷路 关注作者有好处编号:springboot350springboot人事管理系统论文-开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis工具:IDEA/Ecilpse、Navicat、Maven1.万字文档展示(部分)2.系统图片展示......