过滤器Filter

  • SpringBoot框架下使用过滤器Filter
    • 1. 第一种方式:注解的方式@WebFilter,@ServletComponentScan
      • 1.1 创建过滤器
      • 1.2 SpringBoot入口类开启包扫描
      • 1.3 结果分析
    • 2. 第二种方式:配置类组件FilterRegistrationBean
      • 2.1 创建过滤器
      • 2.2 配置类——配置过滤器
      • 2.3 创建控制层
      • 2.4 结果分析

SpringBoot框架下使用过滤器Filter

Java过滤器能够对目标资源的请求和响应进行截取。

过滤器的配置比较简单,直接实现Filter 接口即可,也可以通过@WebFilter注解实现对特定URL拦截,看到Filter 接口中定义了三个方法

  • init() :该方法在容器启动初始化过滤器时被调用,它在 Filter 的整个生命周期只会被调用一次。注意:这个方法必须执行成功,否则过滤器会不起作用。
  • doFilter() :容器中的每一次请求都会调用该方法, FilterChain 用来调用下一个过滤器 Filter。
  • destroy(): 当容器销毁 过滤器实例时调用该方法,一般在方法中销毁或关闭资源,在过滤器 Filter 的整个生命周期也只会被调用一次

1. 第一种方式:注解的方式@WebFilter,@ServletComponentScan

1.1 创建过滤器

定义一个拦截器类实现Filter接口实现doFilter方法(每一次请求都会调用)

src/main/java/com/guo/springboot/filter/MyFilter.java

package com.guo.springboot.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(urlPatterns = "/myfilter")
public class MyFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("------进入过滤器--------");filterChain.doFilter(servletRequest,servletResponse);}
}

1.2 SpringBoot入口类开启包扫描

SpringBoot程序入口类,配置扫描包注解

src/main/java/com/guo/springboot/Application.java

package com.guo.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan(basePackages = "com.guo.springboot.filter")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

1.3 结果分析

这里只是一个URL请求的过滤,没有制作的请求的页面所以这里请求404找不到页面,咱们目的是测试请求的过滤,,看程序。

控制台这里打印出过滤器的逻辑处理结果,很很明显过滤了本次请求

2. 第二种方式:配置类组件FilterRegistrationBean

2.1 创建过滤器

创建过滤器类实现Filter接口,重写doFilter方法

src/main/java/cosm/guo/springboot/filter/MyFilter.java

package com.guo.springboot.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;public class MyFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("------进入过滤器--------");filterChain.doFilter(servletRequest,servletResponse);}
}

2.2 配置类——配置过滤器

配置类——配置过滤器的拦截URL

src/main/java/com/guo/springboot/config/FilterConfig.java

package com.guo.springboot.config;import com.guo.springboot.filter.MyFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration   //定义此类为配置类
public class FilterConfig {@Beanpublic FilterRegistrationBean myFilterRegistrationBean(){//注册过滤器FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new MyFilter());//添加过滤路径filterRegistrationBean.addUrlPatterns("/user/*");return filterRegistrationBean;}
}

2.3 创建控制层

控制层

src/main/java/com/guo/springboot/controller/UserController.java

package com.guo.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class UserController {@RequestMapping("/user/detail")public @ResponseBody String userDetail(){return "UserDetail";}@RequestMapping("/center")public @ResponseBody String center(){return "center";}
}

2.4 结果分析

过滤器配置的过滤路径是/user/*,这里的请求路径是/user/detail,这里成功被过滤了

SpringBoot框架下使用过滤器Filter相关推荐

  1. springboot框架下利用websocket实现即时通讯

    springboot框架下利用websocket实现即时通讯(文章末尾有git项目打包文件,直接下载使用即可) 用websocket实现简单的在线聊天,先画个时序图,直观感受下流程 SystemCon ...

  2. SpringBoot框架下使用Servlet

    SpringBoot框架下使用Servlet 创建一个Servlet继承HttpServlet 在web.xml配置文件中使用servlet servlet-mapping 1. 第一种方式:注解的方 ...

  3. springboot框架下的实时消息推送

    功能实现:在得到新数据后以最快的速度推送到前台.(springboot框架) 0.修改pom文件 加入需要的jar包 <dependency><groupId>org.spri ...

  4. springBoot配置多个过滤器filter的执行顺序

    1.自定义过滤器 过滤器类实现 javax.servlet.Filter.然后添加注解 @WebFilter(filterName="过滤器名称" urlPatterns=&quo ...

  5. Java爬虫 springboot框架下 新浪微博爬虫

    这个题目,讲真,我也奇怪,我为什么写个爬虫需要用到这种大型框架,最开始,刚开始接触爬虫的时候,我写的爬虫,只要能获得我想要的数据,那就是成功的,完美的,没有bug的,哪怕他慢,哪怕操作繁琐且复杂,只要 ...

  6. SpringBoot之JPA框架下如何使用JTA——分布式事务解决方案

    以前,笔者写过一篇博客,支付宝DTS方案,当然,只是仅仅是简单讨论了下分布式事务的解决方案.PS:笔者看了下相关评论,发现由于太简单,被不少人Diss了一通. 最近,笔者在自己的工程上,试图一次性解决 ...

  7. 基于JAVA(Springboot框架)助农商城平台系统设计与实现 毕业设计开题报告

      本科生毕业论文 基于JAVA(Springboot框架)助农商城平台 开题报告 学    院: 专    业: 计算机科学与技术 年    级: 学生姓名: 指导教师:   XXXX大学本科生毕业 ...

  8. SpringBoot框架,使用Log4j2+Lombok引入日志的方法

    日志分为不同的级别,我比较常用的就是:debug,info,error. 对于一个系统来说,日志是很重要的部分,日志可以帮助我们快速查找系统相关异常,可以帮助开发人员调试程序,可以监控系统程序运行情况 ...

  9. SpringBoot中AOP实现落地——Filter(过滤器)、Intercepter(拦截器)、Aspect(Spring AOP)

    文章目录 一.一切要从Servlet说起 1.1什么是Servlet 1.2为什么需要Servlet 1.3Servlet如何响应用户请求 1.4Servlet与Tomcat处理请求的流程 1.5Se ...

  10. 关于将struts2框架下,使自定义过滤器对部分的action(一个action或多个action)请求忽略的方法

    关于将struts2框架下,使自定义过滤器对部分的action请求忽略的方法 首先需要了解一个方法 request.getServletPath() 他将返回一个当前请求的路径的醉详细名称 例如对路径 ...

最新文章

  1. linux stdin STDIN_FILENO 区别
  2. angularjs 中的scope继承关系——(2)
  3. 模块化编程AMDCommonJS
  4. 微信遇到特殊服务器,解决微信网页授权,出现errcode:40163,errmsg:codebeenused,看似微信访问了2次这个回调接口的问题...
  5. [激励机制]浅谈内部竞争——如何让你的员工玩命干活?
  6. 4月电脑分辨率TOP10 :仅亚军1920*1080占比上涨
  7. Java 并发编程之 Atomic 类
  8. 事后分析报告(M2阶段)
  9. 若依前后端不分离项目上传文件或图片不能显示出来?
  10. atol、atoll、atof函数
  11. 《layui宇宙版教程》:分页组件laypage
  12. 多媒体计算机辅助英语教学,多媒体计算机辅助英语教学
  13. string容器模拟实现及使用——C++
  14. tree是不是动词_tree是什么意思!
  15. cada0图纸框_CAD的图框应该怎么画-百度经验
  16. wblinv matlab,求助,matlab如何根据已知分布求分位点
  17. tiktok运营学习怎么样
  18. 老师利用计算机分析学生的考试成绩属于(),解析计算机考试成绩的数据分析理论...
  19. net::ERR_CONNECTION_TIMED_OUT 网络连接超时
  20. c语言中的中pred函数作用,C++ partition()和stable_partition()函数详解

热门文章

  1. MacBook如何安装双系统?
  2. 联想微型计算机装Win10,联想小新 潮5000重装win10系统教程
  3. 怎么查看linux系统硬盘,查看Linux磁盘空间的八大方法
  4. 晶振对微型计算机的作用,单片机中晶振电路的作用及其常见参数
  5. 小红花代表什么_送你一朵小红花讲述的是什么样的故事 剧情全介绍
  6. 手机文件上传服务器,如何上传文件到服务器 上传文件到服务器方法
  7. 计算机睡眠和休眠的区别win10,win10睡眠和休眠有何不同_win10休眠和睡眠的区别...
  8. 自制Tableau数据看板示例
  9. Presto查询出现error executing query异常
  10. android如何设置自适应大小的背景图片,Android 背景图片自适应方案