IDEA项目搭建十一——添加拦截器及启动事件

Posted taiyonghai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA项目搭建十一——添加拦截器及启动事件相关的知识,希望对你有一定的参考价值。

程序启动时如果需要添加某些初始化代码可以使用以下事件处理

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

/**
 * 程序初始化事件
 */
@Component
public class ApplicationEventListener implements ApplicationListener {
    @Override
    public void onApplicationEvent(ApplicationEvent event) {
//        if (event instanceof ApplicationEnvironmentPreparedEvent) {
//            // 初始化环境变量
//        }else if(event instanceof ApplicationPreparedEvent){
//            // 初始化完成
//        }else if (event instanceof ContextRefreshedEvent) {
//            // 应用刷新
//        }else if (event instanceof ApplicationReadyEvent) {
//            // 应用已启动完成
//        }else if (event instanceof ContextStartedEvent) {
//            // 应用启动,需要在代码动态添加监听器才可捕获
//        }else if (event instanceof ContextStoppedEvent) {
//            // 应用停止
//        }else if (event instanceof ContextClosedEvent) {
//            // 应用关闭
//        }else {}
    }
}

过滤用户登录状态验证时普遍使用拦截器或过滤器spring boot 2.0使用以下方式

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 请求拦截器
 * 参考资料:https://www.cnblogs.com/holly8/p/6178828.html
 * 普遍继承HandlerInterceptorAdapter抽象类,其中多提供了一个异步拦截方法afterConcurrentHandlingStarted(),我们用不到所以直接实现基础接口
 * 调用顺序:preHandler(可多个) -> Controller -> postHandler(可多个) -> model渲染-> afterCompletion(可多个)
 */
public class RequestInterceptor implements HandlerInterceptor {

    /**
     * Action执行前调用
     * @return
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        System.out.println("调用拦截器");
        return true;//此处必须返回true使该请求继续向下执行,false则中断请求
    }

    /**
     * Action执行后,View渲染前调用
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {

    }

    /**
     * View渲染后调用,整个流程执行结束调用
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {

    }
}
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 配置类
 * WebMvcConfigurerAdapter已被废弃,官方推荐改用WebMvcConfigurer
 */
@Configuration
public class MyInterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //将拦截器注入进程序,可同时注入多个拦截器
        registry.addInterceptor(new RequestInterceptor()).addPathPatterns("/**");
    }
}

 

以上是关于IDEA项目搭建十一——添加拦截器及启动事件的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot+Vue前后端分离项目的搭建及简单开发(这次保证看明白~)

idea解决tomcat插件启动项目问题

flask 项目搭建及配置分享

IDEA 配置 Tomcat 及 JRebel 热部署

在 idea 下搭建的第一个MyBatis项目及增删改查用法

IDEA 使用Maven搭建一个JavaWeb工程