SpringBoot 过滤器与 * 实例演示
作者:宇智波波奶茶 时间:2021-08-26 08:33:23
SpringBoot中的过滤器 * 操作与springmvc中的几乎一样所以这里也不过多介绍了,下面举两个简单的栗子演示一下
1、过滤器
1 创建过滤器类LoginFilter,实现servlet包下的Filter接口(包不要导错),加入注解WebFilter
package com.example.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter(urlPatterns = "/filter/*")
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化 * ");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("LoginFilter");
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
//放行
filterChain.doFilter(request,response);
}
@Override
public void destroy() {
System.out.println(" * 销毁");
}
}
2 创建测试类LoginCotroller
package com.example.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/filter")
public class FilterController {
@RequestMapping("/login")
public String login(){
System.out.println("登录");
return "login";
}
}
3 在启动类上加注解
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan
//Servlet、Filter、Listener可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
4 启动测试,启动的时候可以看到Filter调用init方法初始化
接着访问可以看到页面输出
控制台打印出 * 中的语句
2、 *
1 创建自定义 *
package com.example.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor {
//进入controller方法之前调用的
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
return true;//true表示放行 false表示不放行
}
//调用完controller之后,视图渲染层之前
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
//页面跳转之后,整个流程执行之后,一般用于资源的清理
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
2 创建 * 配置类,注意要加上配置类的注解
package com.example.config;
import com.example.interceptor.MyInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyInterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//设置 * 并指定拦截路径
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/interceptor/*");
//registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");//拦截所有
//registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/test");//指定不拦截
//添加自定义 *
WebMvcConfigurer.super.addInterceptors(registry);
}
}
3 创建LoginController测试类
package com.example.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/interceptor")
public class InterceptorController {
@RequestMapping("login")
public String login(){
System.out.println("Interceptor-Login");
return "login";
}
}
4 运行访问,查看效果
控制台输出如下
来源:https://blog.csdn.net/layonly/article/details/121390506
标签:SpringBoot,过滤器, ,
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java中十进制和十六进制的相互转换方法
2022-04-21 11:54:06
Java设计模式之命令模式(Command模式)介绍
2021-12-02 01:01:02
C#实现微信分账功能的完整步骤
2022-10-24 17:43:46
![](https://img.aspxhome.com/file/2023/2/81132_0s.png)
Android 使用 SharedPreferences 保存少量数据的实现代码
2023-07-03 01:00:11
![](https://img.aspxhome.com/file/2023/4/83534_0s.png)
Android 应用中插入广告的实例
2023-02-15 22:41:34
解决Java提示正在尝试分配更低的访问权限问题
2023-11-04 09:31:08
![](https://img.aspxhome.com/file/2023/9/58539_0s.png)
Spring5中的WebClient使用方法详解
2023-08-05 14:50:24
npoi2.0将datatable对象转换为excel2007示例
2021-07-15 12:47:30
基于ElasticSearch Analyzer的使用规则详解
2023-09-28 14:41:04
![](https://img.aspxhome.com/file/2023/8/63698_0s.png)
java队列实现方法(顺序队列,链式队列,循环队列)
2023-06-24 01:43:17
springboot整合mybatis实现简单的一对多级联查询功能
2023-11-07 13:30:22
![](https://img.aspxhome.com/file/2023/5/72415_0s.png)
linux(center OS7)安装JDK、tomcat、mysql 搭建java web项目运行环境
2022-07-04 07:02:37
JavaWeb实现文件上传与下载的方法
2023-12-23 04:42:56
Java中关于二叉树层序遍历深入了解
2023-07-26 07:06:09
![](https://img.aspxhome.com/file/2023/6/61076_0s.png)
Java实现添加条形码到PDF表格的方法详解
2023-04-26 12:37:25
![](https://img.aspxhome.com/file/2023/3/70343_0s.png)
SpringBoot集成kaptcha验证码
2023-06-26 03:56:17
![](https://img.aspxhome.com/file/2023/3/69703_0s.jpg)
Java Web项目部署在Tomcat运行出错与解决方法示例
2023-07-18 02:50:47
![](https://img.aspxhome.com/file/2023/2/57622_0s.png)
浅析Spring工厂的反射和配置文件
2023-06-22 20:52:23
![](https://img.aspxhome.com/file/2023/4/77964_0s.jpg)
实现java简单的线程池
2023-08-09 06:05:15
![](https://img.aspxhome.com/file/2023/5/58065_0s.png)
Java实现打字游戏
2021-11-02 16:46:56
![](https://img.aspxhome.com/file/2023/4/71594_0s.jpg)