如何使用SpringBoot拦截器

这篇文章主要为大家展示了如何使用SpringBoot拦截器,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

创新互联公司是一家集网站建设,市中企业网站建设,市中品牌网站建设,网站定制,市中网站建设报价,网络营销,网络优化,市中网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

拦截器简介

拦截器通常通过动态代理的方式来执行。

拦截器的生命周期由IoC容器管理,可以通过注入等方式来获取其他Bean的实例,使用更方便。

拦截器配置使用方式

实现拦截器接口:

import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

private class AuthenticationInterceptor implements HandlerInterceptor {
	// 在请求处理之前进行调用(Controller方法调用之前)
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException{
  	System.out.println(request.getRequestURL());
  	User user = (User)request.getSession().getAttribute("USER");
    if(user != null){
    	return true;
    }else {
    	System.out.println("no login...");
    	// request.getRequestDispatcher("/index.html").forward(request, response);
    	response.sendRedirect(request.getContextPath()+"login.html");
    	return false;
    }
    return false;
  }
  
  // 在请求处理之后视图被渲染之前进行调用(Controller方法调用之后)
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
    System.out.println("postHandle...");
  }

	// 在请求结束之后、也就是视图被渲染之后进行调用(主要是用于进行资源清理工作)
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    System.out.println("afterCompletion...");
  }
}

将拦截器加入到配置中:

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

@Configuration
public class WebSecurityConfig implements WebMvcConfigurer{
  @Override
  public void addInterceptors(InterceptorRegistry registry){
    registry.addInterceptor(new AuthenticationInterceptor())
    		//所有路径都被拦截
    		.addPathPatterns("/**")
    		//添加不拦截的路径
    		.excludePathPatterns("/userLogin", "/css/**", "/images/**", "/js/**", "/login.html");
    registry.addInterceptor(new OtherInterceptor())
        .addPathPatterns("/**");
  }
}

备注:

由于 preHandle、postHandle、afterCompletion 是不同的方法,如果在这些方法之间使用共享变量来储存值,会存在线程安全问题。而使用过滤器实现则不存在此问题。

以上就是关于如何使用SpringBoot拦截器的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。


网页题目:如何使用SpringBoot拦截器
分享URL:http://bzwzjz.com/article/jpepde.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站制作 重庆网站建设 成都网站建设 成都商城网站制作 网站建设开发 高端定制网站设计 手机网站建设 成都网站制作 成都响应式网站建设公司 商城网站建设 响应式网站设计 手机网站制作设计 定制网站设计 营销型网站建设 定制网站建设 梓潼网站设计 成都响应式网站建设 成都网站设计 成都网站制作 成都网站设计 网站建设 成都网站建设