1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > springboot项目中利用@WebFilter注解和@Bean配置类两种方式实现Filter过滤器

springboot项目中利用@WebFilter注解和@Bean配置类两种方式实现Filter过滤器

时间:2021-06-13 00:55:59

相关推荐

springboot项目中利用@WebFilter注解和@Bean配置类两种方式实现Filter过滤器

过滤器(Filter)

过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理。通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理

springboot项目中实现过滤器的两种方式:

1.注解 @WebFilter

2.配置类

本项目目标:过滤器对于前端模拟登录的请求,判断其name参数是user或者admin,则登陆成功。

第一种:注解 @WebFilter实现过滤器

项目结构如图:(先不关注MyFilterConfig类,这是配置类,下面第二种实现方式会用到)

启动类:TestFilterApplication控制层:MyController(两个模拟登录接口)过滤器:MyFilter

1.1、准备工作:创建启动类,配置文件,引如依赖

依赖就一个:spring-boot-starter-web,里面包含了filter的包,不需要单独引入了

filter在tomcat的包里:

依赖spring-boot-starter-web

<!--web的起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

1.2、控制层:MyController.class

模拟登录:

package com.tzq.testFilter.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/*** @Author tangzhiqian* @CreateTime /6/9 13:40*/@RestController@RequestMapping("/login")public class MyController {@GetMapping("/user")public String userLogin(String name){return name+"登陸成功!!!";}@GetMapping("/admin")public String adminLogin(String name){return name+"登陸成功!!!";}}

1.3、新建过滤器Filter类

主要是 利用注解来实现:

@WebFilter(urlPatterns = “/login/*”, filterName = “MyTestFilter”)

package com.tzq.testFilter.filter;import org.ponent;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import java.io.IOException;/*** @Author tangzhiqian* @CreateTime /6/9 13:29*/@WebFilter(urlPatterns = "/login/*", filterName = "MyTestFilter")@Componentpublic class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;String name = request.getParameter("name");if ("user".equals(name) || "admin".equals(name)) {System.out.println("登錄成功!!!");filterChain.doFilter(servletRequest, servletResponse);} else {System.out.println("登錄失敗");}}}

Filter解释:

到这里,过滤器就建好了

1.4、运行

运行:http://localhost:8076/login/admin?name=admin

运行:http://localhost:8076/login/admin?name=aaa

name参数为admin,登录成功!参数为aaa,空白,登录失败!

第二种:配置类实现过滤器

使用配置类的时候,我把注解@WebFilter注释掉!

新建配置类:MyFilterConfig.class

package com.tzq.testFilter.filter;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.ArrayList;import java.util.List;/*** @Author tangzhiqian* @CreateTime /6/9 15:25*/@Configurationpublic class MyFilterConfig {@BeanFilterRegistrationBean myFilterRegistration() {//创建配置bean对象,并指定->过滤器FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter());List<String> urlPatterns = new ArrayList<>();urlPatterns.add("/login/*");//添加需要过滤的urlregistration.setUrlPatterns(urlPatterns);return registration;}}

MyFilterConfig代码解析:

经测试,同样可以实现过滤器!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。