当前位置: 首页 > news >正文

springMVC拦截器,拦截器拦截策略设置

目录

1、MyInterceptor1

2、UserController

3、MvcConfig,拦截器4种拦截方法策略


做请求的校验,如果校验没有通过,直接返回,原来下面的处理,就不用处理了
将request进行拦截校验
将response进行拦截校验

preHandle 在请求处理之前调用

postHandler 是在回应以后

afterCompletion 是在最后调用

1、MyInterceptor1

package cn.tedu._06interceptor.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 MyInterceptor1 implements HandlerInterceptor {/*** 一般做权限校验** retrun 是否放行,false则直接结束,请求结束* */@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("MyInterceptor1 第一个拦截器拦截 1、preHandle");return true;
//        return HandlerInterceptor.super.preHandle(request, response, handler);}/*** 可以做敏感词过滤* ModelAndView 模型数据* */@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);System.out.println("MyInterceptor1 第一个拦截器拦截 2、postHandle");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);System.out.println("MyInterceptor1 第一个拦截器拦截 3、afterCompletion");}
}

2、UserController

package cn.tedu._06interceptor.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping(value = "/v1/users/")
public class UserController {@GetMapping("login")public String login() {return "登录成功";}@GetMapping("reg")public String reg() {return "注册成功";}
}

3、MvcConfig,拦截器4种拦截方法策略

package cn.tedu._06interceptor.config;import cn.tedu._06interceptor.interceptor.MyInterceptor1;
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 MvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {
//        注册拦截器:
//        1、策略1,拦截所有请求
//        registry.addInterceptor(new MyInterceptor1());//        2、策略2:拦截指定请求,比如:拦截登录请求
//        执行登录接口的时候,会打印拦截器日志
//        registry.addInterceptor(new MyInterceptor1())
//                .addPathPatterns("/v1/users/login");//        3、策略3:拦截指定多个请求,比如拦截用户模块请求
//        registry.addInterceptor(new MyInterceptor1())
//                .addPathPatterns("/v1/users/**");//        4、策略4:拦截用户模块中,除了登录功能以外的所有请求,registry.addInterceptor(new MyInterceptor1()).addPathPatterns("/v1/users/**").excludePathPatterns("/v1/users/login");}
}

相关文章:

  • 【动手学深度学习】系列
  • ShenNiusModularity项目源码学习(27:ShenNius.Admin.Mvc项目分析-12)
  • ABC 355
  • DeepSeek的走红,会不会带动芯片市场新一轮增长?
  • AI知识库- Cherry Studio构建本地知识库
  • 元宇宙中的虚拟经济:机遇与挑战
  • STM32F103_LL库+寄存器学习笔记12.2 - 串口DMA高效收发实战2:进一步提高串口接收的效率
  • C++ 空间配置器
  • 【周输入】517周阅读推荐-1
  • 数组的概述
  • 大模型(3)——RAG(Retrieval-Augmented Generation,检索增强生成)
  • JAVA基础——数组与二维数组
  • 基于Python批量删除文件和批量增加文件
  • Linux 下 rsync 工具详解与实用指南
  • 数据库 1.0.1
  • 如何使用通义灵码提高前端开发效率
  • FastDatasets新功能,让模型学会“思考”!
  • 文件操作和IO-2 使用Java操作文件
  • 如何使用VH6501进行CAN采样点测试
  • 【办公类-18-04】(Python)“验血单信息”批量生成打印(学校、班级、姓名、性别)
  • 人民日报:莫让“假自杀”淹没“真求助”
  • 印度空军为“阵风”战机换装国产导弹,以增强作战能力推动国防自主
  • 对话作家吉井忍:“滚石”般的生活,让我看到多种人生可能
  • 杨国荣︱以经验说事:思想史研究中一种需要反思的现象
  • 广东茂名高州市山体滑坡已致3死1失联,搜救仍在继续
  • 不赚“快钱”的佳沛:蒋时杰解密新西兰国果如何在中国“慢养”出43亿生意