SpringBoot拦截器的配置和使用

SpringBoot拦截器的配置和使用

1.建立拦截器的类(Interceptor)需要实现接口 handlerInterceptot

项目结构:
在这里插入图片描述

package com.web.interceptor;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }

    //拦截器拦截登录这一块 需要用下面的代码 prehandle 
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //获取请求的url
        String url = request.getRequestURI();
        //判断用户是否已登录
        if (request.getSession().getAttribute("empid") != null) {
            return true;
        }else{
            //用户未登录,拦击其请求并将其转发到用户登录页面
            System.out.println("未登录");
            response.sendRedirect("back");
            return false;
        }


    }
}

2.建立完Interceptor之后并不是完成了需要进行配置(config)即inerceptorconfig 需要实现 WebMvcConfigurer接口实现代码如下

package com.web.config;

import com.web.interceptor.LoginInterceptor;
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 InterceptorConfig implements WebMvcConfigurer {

    //要拦截user下的所有访问请求,必须用户登录后才可访问,
    // 但是这样拦截的路径中有一些是不需要用户登录也可访问的
    String [] addPathPatterns = {
       		 //拦截路径
            "/**"
    };
    //要排除的路径,排除的路径说明不需要用户登录也可访问
    String [] excludePathPatterns = {
        //即你在controller @requestmapping("/地址")
            "/com/out","/com/error/controller","/back"
    };
    
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns(addPathPatterns).excludePathPatterns(excludePathPatterns);
    }

}

以上两个类配置完了就可以完成拦截功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值