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方法初始化

SpringBoot 过滤器与 * 实例演示

 接着访问可以看到页面输出

SpringBoot 过滤器与 * 实例演示

 控制台打印出 * 中的语句

SpringBoot 过滤器与 * 实例演示

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 运行访问,查看效果

SpringBoot 过滤器与 * 实例演示

控制台输出如下

SpringBoot 过滤器与 * 实例演示

来源:https://blog.csdn.net/layonly/article/details/121390506

标签:SpringBoot,过滤器, ,
0
投稿

猜你喜欢

  • Java中十进制和十六进制的相互转换方法

    2022-04-21 11:54:06
  • Java设计模式之命令模式(Command模式)介绍

    2021-12-02 01:01:02
  • C#实现微信分账功能的完整步骤

    2022-10-24 17:43:46
  • Android 使用 SharedPreferences 保存少量数据的实现代码

    2023-07-03 01:00:11
  • Android 应用中插入广告的实例

    2023-02-15 22:41:34
  • 解决Java提示正在尝试分配更低的访问权限问题

    2023-11-04 09:31:08
  • 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
  • java队列实现方法(顺序队列,链式队列,循环队列)

    2023-06-24 01:43:17
  • springboot整合mybatis实现简单的一对多级联查询功能

    2023-11-07 13:30:22
  • 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
  • Java实现添加条形码到PDF表格的方法详解

    2023-04-26 12:37:25
  • SpringBoot集成kaptcha验证码

    2023-06-26 03:56:17
  • Java Web项目部署在Tomcat运行出错与解决方法示例

    2023-07-18 02:50:47
  • 浅析Spring工厂的反射和配置文件

    2023-06-22 20:52:23
  • 实现java简单的线程池

    2023-08-09 06:05:15
  • Java实现打字游戏

    2021-11-02 16:46:56
  • asp之家 软件编程 m.aspxhome.com