springboot配置拦截器

** ## - [ ] springboot配置拦截器 **

想拿高薪吗?想摆脱那些生瓜们写的稀烂的项目吗?,从写日记开始。积累就是高薪,进步就是高薪。你还在等什么?让我们一起来学习springboot吧!
在学习springboot框架时候,不可避免的需要学习拦截器还有过滤器。很多小伙伴不知道这两个东西什么场景下使用。我简单的介绍一下。

  1. 拦截器:Interceptor 在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。比如日志,安全等。例如在写微信公众号项目的时候,用户每次打开公众号都判断用户是否已经登录,而且用户在进入公众号内的大部分操作,都需要绑定到这个用户。那么在这些场景下就可以用到拦截器。

  2. 过滤器:Filter是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

先看一下项目工程目录
在这里插入图片描述

好了我来看代码:

  1. 先把拦截器配置代码看一下
    package com.springbootMybatis.common.interceptor;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    /**
  • 拦截器配置
  • @Author:
  • @Description:
  • @Date:Create in 17:35 2018/3/12
  • @Modified By:
    /
    @Configuration
    public class WebAppConfig extends WebMvcConfigurerAdapter {
    /
    *
    • 注册 拦截器
      */
      @Override
      public void addInterceptors(InterceptorRegistry registry) {
      // 设置拦截的路径、不拦截的路径、优先级等等
      registry.addInterceptor(new SessionInterceptor())
      .addPathPatterns("/**");
      }
      }
      addPatjPatterns(String patterns)方法中写的拦截路径,excludePathPatterns(String patterns)方法是非拦截路径。
  1. 写拦截工具类 SessionInterceptor.java,对拦截的地址进行自定义操作

package com.springbootMybatis.common.interceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;
/**

  • 拦截器

  • @Author:

  • @Description:

  • @Date:Create in 17:02 2018/3/12

  • @Modified By:
    */
    public class SessionInterceptor implements HandlerInterceptor {
    //日志
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    Map<String, Object> map = new HashMap();

    //进入拦截器后再次进行拦截
    private static final String[] IGNORE_URI = {"/login"};

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    System.out.println(“开始请求地址拦截”);
    HttpSession session = request.getSession(false);
    boolean flag = false;
    String url = (request.getRequestURL() + “?” + request.getQueryString())
    .toString();
    System.out.println(">>>1:" + url);
    this.logger.info(“请求,url{}:”,url);
    for (String s : IGNORE_URI) {
    if (url.contains(s)) {
    flag = true;
    break;
    }
    }
    this.logger.info("url>>>2: " + url);
    //
    if (!flag) {
    if ((request.getHeader(“x-requested-with”) != null)
    && (request.getHeader(“x-requested-with”)
    .equalsIgnoreCase(“XMLHttpRequest”))) {
    this.logger.info(“ajax – 进入—>>>”);
    this.map.put(“rs_code”, Integer.valueOf(1005));
    response.getWriter().write(JSON.toJSONString(this.map));
    } else {
    this.logger.info(“不是ajax – 进入—>>>”);
    response.sendRedirect(“http://www.baidu.com”);//填写重定向的地址,可以本项目的接口地址:http://localhost/demo/test,也可以是第三方地址:http://www.baidu.com
    }
    }
    this.logger.info(“最终 111flag==” + flag + “进图判断获取用户信息”);
    return flag;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    System.out.println(“返回视图或String之前的处理”);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    System.out.println(“返回视图或String之前的处理”);
    }
    }

自定义的代码讲解我就不说了,自己建个项目,debug跑一下,一步一步看就知道啦!
老弟是新手,进来的老铁点个赞,如果哪里写的不好的也请老铁指出来!
下一章 :springboot 配置Servlet+过滤器

源码:https://github.com/PythonDjangoWeb/springbootMybatis.git

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值