SpringBoot框架下使用过滤器Filter
过滤器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相关推荐
- springboot框架下利用websocket实现即时通讯
springboot框架下利用websocket实现即时通讯(文章末尾有git项目打包文件,直接下载使用即可) 用websocket实现简单的在线聊天,先画个时序图,直观感受下流程 SystemCon ...
- SpringBoot框架下使用Servlet
SpringBoot框架下使用Servlet 创建一个Servlet继承HttpServlet 在web.xml配置文件中使用servlet servlet-mapping 1. 第一种方式:注解的方 ...
- springboot框架下的实时消息推送
功能实现:在得到新数据后以最快的速度推送到前台.(springboot框架) 0.修改pom文件 加入需要的jar包 <dependency><groupId>org.spri ...
- springBoot配置多个过滤器filter的执行顺序
1.自定义过滤器 过滤器类实现 javax.servlet.Filter.然后添加注解 @WebFilter(filterName="过滤器名称" urlPatterns=&quo ...
- Java爬虫 springboot框架下 新浪微博爬虫
这个题目,讲真,我也奇怪,我为什么写个爬虫需要用到这种大型框架,最开始,刚开始接触爬虫的时候,我写的爬虫,只要能获得我想要的数据,那就是成功的,完美的,没有bug的,哪怕他慢,哪怕操作繁琐且复杂,只要 ...
- SpringBoot之JPA框架下如何使用JTA——分布式事务解决方案
以前,笔者写过一篇博客,支付宝DTS方案,当然,只是仅仅是简单讨论了下分布式事务的解决方案.PS:笔者看了下相关评论,发现由于太简单,被不少人Diss了一通. 最近,笔者在自己的工程上,试图一次性解决 ...
- 基于JAVA(Springboot框架)助农商城平台系统设计与实现 毕业设计开题报告
本科生毕业论文 基于JAVA(Springboot框架)助农商城平台 开题报告 学 院: 专 业: 计算机科学与技术 年 级: 学生姓名: 指导教师: XXXX大学本科生毕业 ...
- SpringBoot框架,使用Log4j2+Lombok引入日志的方法
日志分为不同的级别,我比较常用的就是:debug,info,error. 对于一个系统来说,日志是很重要的部分,日志可以帮助我们快速查找系统相关异常,可以帮助开发人员调试程序,可以监控系统程序运行情况 ...
- SpringBoot中AOP实现落地——Filter(过滤器)、Intercepter(拦截器)、Aspect(Spring AOP)
文章目录 一.一切要从Servlet说起 1.1什么是Servlet 1.2为什么需要Servlet 1.3Servlet如何响应用户请求 1.4Servlet与Tomcat处理请求的流程 1.5Se ...
- 关于将struts2框架下,使自定义过滤器对部分的action(一个action或多个action)请求忽略的方法
关于将struts2框架下,使自定义过滤器对部分的action请求忽略的方法 首先需要了解一个方法 request.getServletPath() 他将返回一个当前请求的路径的醉详细名称 例如对路径 ...
最新文章
- linux stdin STDIN_FILENO 区别
- angularjs 中的scope继承关系——(2)
- 模块化编程AMDCommonJS
- 微信遇到特殊服务器,解决微信网页授权,出现errcode:40163,errmsg:codebeenused,看似微信访问了2次这个回调接口的问题...
- [激励机制]浅谈内部竞争——如何让你的员工玩命干活?
- 4月电脑分辨率TOP10 :仅亚军1920*1080占比上涨
- Java 并发编程之 Atomic 类
- 事后分析报告(M2阶段)
- 若依前后端不分离项目上传文件或图片不能显示出来?
- atol、atoll、atof函数
- 《layui宇宙版教程》:分页组件laypage
- 多媒体计算机辅助英语教学,多媒体计算机辅助英语教学
- string容器模拟实现及使用——C++
- tree是不是动词_tree是什么意思!
- cada0图纸框_CAD的图框应该怎么画-百度经验
- wblinv matlab,求助,matlab如何根据已知分布求分位点
- tiktok运营学习怎么样
- 老师利用计算机分析学生的考试成绩属于(),解析计算机考试成绩的数据分析理论...
- net::ERR_CONNECTION_TIMED_OUT 网络连接超时
- c语言中的中pred函数作用,C++ partition()和stable_partition()函数详解
热门文章
- MacBook如何安装双系统?
- 联想微型计算机装Win10,联想小新 潮5000重装win10系统教程
- 怎么查看linux系统硬盘,查看Linux磁盘空间的八大方法
- 晶振对微型计算机的作用,单片机中晶振电路的作用及其常见参数
- 小红花代表什么_送你一朵小红花讲述的是什么样的故事 剧情全介绍
- 手机文件上传服务器,如何上传文件到服务器 上传文件到服务器方法
- 计算机睡眠和休眠的区别win10,win10睡眠和休眠有何不同_win10休眠和睡眠的区别...
- 自制Tableau数据看板示例
- Presto查询出现error executing query异常
- android如何设置自适应大小的背景图片,Android 背景图片自适应方案