Springboot项目使用拦截器方法详解

发布时间:2020-09-19 07:37:15 作者:大专栏
来源:脚本之家 阅读:128

1. 创建一个拦截器并实现HandlerInterceptor接口

package com.leiyuan.bs.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 MyHandlerInterceptor implements HandlerInterceptor {
  /**
   * 拦截(Controller方法调用之前)
   *
   * @param request request
   * @param response response
   * @param o    o
   * @return 通过与否
   * @throws Exception 异常处理
   */
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object
      o) throws Exception {
    // TODO 我这里是通过用户是否登陆进行拦截,我的用户信息存储在session中,名称为userSession,大家可以自行实现
    if (request.getSession().getAttribute("userSession") == null) {
      // 拦截至登陆页面
      request.getRequestDispatcher("/user/toLogin").forward(request, response);
      // false为不通过
      return false;
    }
    // true为通过
    return true;
  }

  // 此方法为处理请求之后调用(调用过controller方法之后,跳转视图之前)
  @Override
  public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o,
              ModelAndView modelAndView) throws Exception {

  }

  // 此方法为整个请求结束之后进行调用
  @Override
  public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
                Object o, Exception e) throws Exception {

  }
}

2. 创建一个配置类MyHandlerInterceptorConfig并继承WebMvcConfigurerAdapter类重写addInterceptors(InterceptorRegistry registry)方法

package com.leiyuan.bs;

import com.leiyuan.bs.interceptor.MyHandlerInterceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
// 拦截器配置类
@Component
public class MyHandlerInterceptorConfig extends WebMvcConfigurerAdapter {
  @Override
  public void addInterceptors(InterceptorRegistry registry) {
  	/**
     * 这里的addPathPatterns("/**")为配置需要拦截的方法“/**”代表所有,而后excludePathPatterns("/user/toLogin")等方法为排除哪些方法不进行		 拦截
     */
    registry.addInterceptor(new MyHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/toLogin").excludePathPatterns
        ("/user/login").excludePathPatterns("/user/toNewUser").excludePathPatterns("/user/newUser");
    super.addInterceptors(registry);
  }
}

3. 启动项目即可看到效果了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。

推荐阅读:
  1. 如何使用SpringBoot拦截器
  2. SpringBoot拦截器Filter的使用方法详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring boot 项目

上一篇:不到20行代码用Python做一个智能聊天机器人

下一篇:C++如何过滤出字符串的中文(GBK、UTF-8)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》