• SpringBoot 拦截器


    SpringBoot 拦截器

    web拦截器作用有权限控制,日志记录等等。SpringBoot 提供 HandlerInterceptor方便我们开发;

    我们定义一个自定义拦截器 实现HandlerInterceptor接口,实现三个方法,preHandle是 请求处理之前调用,postHandle是请求处理之后并且视图渲染之前调用,afterCompletion请求结束之后并且视图渲染之后调用;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package com.java1234.interceptor;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
     
    /**
     * 自定义拦截器
     * @author Administrator
     *
     */
    public class MyInterceptor implements HandlerInterceptor{
     
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            System.out.println("========MyInterceptor preHandle 请求处理之前调用=================");
            return true;
        }
     
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
            System.out.println("========MyInterceptor postHandle 请求处理之后并且视图渲染之前调用=================");
        }
     
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
            System.out.println("========MyInterceptor afterCompletion 请求结束之后并且视图渲染之后调用=================");
        }
     
    }

    我们再定义一个类继承WebMvcConfigurerAdapter,重写addInterceptors,我们把自定义拦截器添加到拦截器链中去。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    package com.java1234.config;
     
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
     
    import com.java1234.interceptor.MyInterceptor;
     
    @Configuration
    public class MyWebAppConfigurer extends WebMvcConfigurerAdapter{
     
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**"); // 添加拦截器 以及 拦截器规则
            super.addInterceptors(registry);
        }
     
         
    }

    简单搞个控制器类测试下;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    package com.java1234.action;
     
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
     
    /**
     * 用户Controller
     * @author Administrator
     *
     */
    @Controller
    @RequestMapping(value = "/user")
    public class UserController {
     
        @ResponseBody
        @RequestMapping(value = "/login")
        public String login(){
            System.out.println("login");
            return "测试拦截器";
        }
    }

    项目配置文件配置下:

    1
    2
    3
    server:
      port: 80
      context-path: /

    启动项目,运行 http://localhost/user/login

    执行结果如下:

    ========MyInterceptor preHandle 请求处理之前调用=================

    login

    ========MyInterceptor postHandle 请求处理之后并且视图渲染之前调用=================

    ========MyInterceptor afterCompletion 请求结束之后并且视图渲染之后调用=================

    测试代码:

    链接:https://pan.baidu.com/s/1iFDk37zpoAZcR5dbancAXw 密码:xi0s

    mysql
  • 相关阅读:
    云图说 | GPU共享型AI容器,让AI开发更普及
    手把手带你写Node.JS版本小游戏
    一个银行客户经理的“变形记”
    大厂运维必备技能:PB级数据仓库性能调优
    软件工程开发之道:了解能力和复杂度是前提
    大数据管理:构建数据自己的“独门独院”
    结构体与共用体05 零基础入门学习C语言57
    结构体与共用体04 零基础入门学习C语言56
    PE格式详细讲解1 系统篇01|解密系列
    初步认识PE格式 基础篇06|解密系列
  • 原文地址:https://www.cnblogs.com/excellent-vb/p/9418026.html
Copyright © 2020-2023  润新知