spring mvc拦截器 需求:在controller层的方法上,使用自定义注解的方式 不拦截指定请求

2023-05-16

原来是在controller类上实现此需求
缺点:只能是整个controller类下的方法全部放开拦截,不能放开其中某个方法,颗粒度太高。
现实现在方法上增加注解,更加细颗粒度。

1.首先是自定义的Annocation

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface ExcludeInterceptor {

}

2.创建spring mvc 的拦截器

<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.hao.xu.lang.interceptor.InterceptorOne">
            </bean>
        </mvc:interceptor>
</mvc:interceptors>
package com.hao.xu.lang.interceptor;

import com.hao.xu.lang.annotation.ExcludeInterceptor;
import java.util.Objects;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class InterceptorOne implements HandlerInterceptor {
	@Override
	public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {

		//获取到目标方法对象
		HandlerMethod method = (HandlerMethod) o;
		//取到方法上的注解
		ExcludeInterceptor methodAnnotation = method.getMethodAnnotation(ExcludeInterceptor.class);
		if (Objects.isNull(methodAnnotation)) {
			//无此注解的一律拦截
			httpServletResponse.sendRedirect("http://localhost:8080/html/interceptor.html");
			return false;
		}

		System.out.println("Interceptor_preHandle_One");
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

		System.out.println("Interceptor_postHandle_One");
	}

	@Override
	public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

		System.out.println("Interceptor_afterCompletion_One");
	}
}

3.测试controller

@RestController
public class HelloController {

	@RequestMapping(value = "/hi")
	public String hello(HttpSession session) {

		System.out.println("hi");
		return "hi";
	}

	@RequestMapping(value = "/hello")
	@ExcludeInterceptor
	public String hello2(HttpSession session) {

		System.out.println("hello");
		return "hello";
	}

}

4.测试
现在访问 http://localhost:8080/hi.do 被拦截重定向到了error界面
在这里插入图片描述
再访问 http://localhost:8080/hello.do
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring mvc拦截器 需求:在controller层的方法上,使用自定义注解的方式 不拦截指定请求 的相关文章

  • U盘系统、格式化等问题的解决办法

    一 U盘快速格式化与正常格式化区别 1 快速格式化时间非常短 基本上瞬间完成 xff0c 如果硬盘有坏道 xff0c 不会出现任何提示 正常格式化时间非常的长 1 2 3小时不等 xff0c 但会在格式化的时候全面检测硬盘 xff0c 如果
  • python经典书籍推荐-7本经典的Python书籍,你都读过了么?

    许多程序员都认为Python是最适合作为入门的编程语言 xff0c 而有的程序员却认为Python是你应该学的最后一门编程语言 xff0c 无论如何 xff0c 毋庸置疑Python是一门非常流行的编程语言 xff0c 根据TIOBE In
  • python画轨迹曲线-matplotlib绘制随机行走轨迹图

    coding utf 8 author 61 39 pythonwu 39 date 61 34 2018 6 15 16 09 34 from random import choice randint import matplotlib
  • python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...

    游戏编程一直都是编程之中的一大热点 xff0c 这也是由于游戏本身的火热造成的结果 xff0c 所以每年都有很多人在关注着游戏编程 介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家 xff0c 希望对想要了解和学习游戏编程的朋友能够有
  • 用python画关系网络图-使用Python的networkx绘制精美网络图教程

    最近因为数学建模3天速成Python 然后做了一道网络的题 xff0c 要画网络图 在网上找了一些 xff0c 发现都是一些很基础的丑陋红点图 xff0c 并且关于网络的一些算法也没有讲 xff0c 于是自己进http networkx g
  • reactor和proactor模式

    首先就第一篇 Reactor模式 xff0c 或者叫反应器模式 做一下笔记 xff1a 刚开店做生意 xff0c 老板为了给顾客一个美好的印象 xff0c 给顾客最好的服务 xff0c 一对一 随着经营的生意越来越好 xff0c 顾客多了
  • 进程间通信的方式——信号、管道、消息队列、共享内存

    进程间通信的方式 信号 管道 消息队列 共享内存 多进程 xff1a 首先 xff0c 先来讲一下fork之后 xff0c 发生了什么事情 由fork创建的新进程被称为子进程 xff08 child process xff09 该函数被调用
  • 利用netstat查看http为短连接还是长连接?

    最近 xff0c 公司在做Redis替换memcached的项目 xff0c 那mc可以设置是长连接 xff0c 那组件中的Redis到底用的是长连接还是短连接呢 xff1f 大牛军哥只给我一个命令 xff1a netstat anp gr
  • 系统总体结构设计

    系统总体结构设计 系统设计工作应该自顶向下地进行 首先设计总体结构 xff0c 然后再逐层深入 xff0c 直至进行每一个模块的设计 总体设计主要是指在系统分析的基础上 xff0c 对整个系统的划分 xff08 子系统 xff09 机器设备
  • 业务层 、服务层、数据层、表现层

    表现层 xff1a 它一方面为用户提供了交互的工具 xff0c 另一方面也为显示和提交数据实现了一定的逻辑 xff08 页面展示和各种交互包括提交 xff09 业务逻辑层 xff1a 包含了系统所需要的所有功能上的算法和计算过程 xff0c
  • Java FTPClient上传图片

    首先要使用common net的包 xff1a FTP服务器搭建过程 xff1a https mp csdn net postedit 88722082 package com taotao test ftp import java io
  • 直播疑难杂症排查(7)— 黑屏、花屏、闪屏问题

    本文是 直播疑难杂症排查 系列的第七篇文章 xff0c 我们来重点看看直播中常见的各种黑屏 花屏 闪屏问题 首先我们要明白 xff0c 黑屏 花屏 闪屏等问题 xff0c 可能是推流端的问题 xff0c 也可能是播放器的问题 xff0c 遇
  • 视频编码:H.264编码

    本文参考毕厚杰老师 新一代视频压缩编码标准 H 264 AVC 一书以及雷霄骅博客 视音频编解码技术零基础学习方法 整理 1 概念部分 xff1a H 264编码 xff1a 视频编解码技术有两套标准 xff0c 国际电联 xff08 IT
  • war包方式部署solo博客

    solo xff0c 一款小而美的博客系统 xff0c GitHub xff1a https github com b3log solo 环境和文件准备 服务器 xff1a 用的阿里云服务器 xff0c 系统是 CentOS 7 3 64
  • 游戏服务器之网关实现

    网关需要与客户端保证连接 这里网关使用Netty4来做为网络通信框架 它也是目前在Java游戏服务器开发中 xff0c 长连接使用最多的框架 1 xff0c 管理与客户端的连接 客户端连接到网关之后 xff0c 并且验证过之后 xff0c
  • zeromq源码分析笔记之准备

    zeromq这个库主要用于进程通信 xff0c 包括本地进程 网络通信 xff0c 涉及到一些基础知识 xff0c 主要包括管道通信 xff0c socket编程的内容 xff0c 反应器模式 xff08 使用IO多路复用实现 xff09
  • MySQL灵魂十连

    1 SQL语句执行流程 MySQL大体上可分为Server层和存储引擎层 两部分 Server层 xff1a 连接器 xff1a TCP握手后服务器来验证登陆用户身份 xff0c A用户创建连接后 xff0c 管理员对A用户权限修改了也不会
  • 前端面试知识点

    本专题按照以下几个方便进行整理 xff1a HTTP amp amp 浏览器HTML amp amp CSSJS TS ES6VueReact构建工具 amp amp 工程化性能优化 适合初次全面复习的同学 xff0c 查缺补漏 xff0c
  • 使用matplotlib绘制动画

    使用matplotlib绘制动画的步骤 本文采用moviewriter来绘制 xff0c 避免采用matplotlib animition的动画绘制方法 xff0c 将动画简化为图片一帧一帧播放 使用总共三步 xff0c 如下代码所示 补充
  • CUDA与cuDNN

    1 什么是CUDA CUDA ComputeUnified Device Architecture xff0c 是显卡厂商NVIDIA推出的运算平台 CUDA是一种由NVIDIA推出的通用并行计算架构 xff0c 该架构使GPU能够解决复杂

随机推荐

  • JAVAFX 简易项目构建从0到1全流程

    1 安装JDK 2 安装SceneBuilder 可集成到eclipse等IDE中 3 在IDE中新建Java Project项目 并按设计的架构设计建立代码架构 例如 xff1a 4 新建要搭建的界面fxml文件 xff0c 用Scene
  • Pandas DataFrame

    http pandas pydata org pandas docs stable api html dataframe 构造函数 方法描述DataFrame data index columns dtype copy 构造数据框 属性和数
  • Android Settings定制

    android frameworks base packages SettingsLib 7 0重构Settings后多出来的部分 android frameworks base packages SettingsProvider sett
  • GNOME图形界面的基本操作

    成功登录进入CentOS系统之后 xff0c 我们首先看到的桌面就是GNOME图形界面 xff0c 下面来看一下相关的基本操作 个性化设置 1 xff0c 设置屏幕分辨率 进入菜单 2 xff0c 更换桌面背景 进入下面菜单 选择一张背景图
  • 连接服务器VNC

    1 xff0c 启动vnc vncserver 2 xff0c 提示输入密码 3 xff0c Would you like to enter a view only password y n 选择n 4 xff0c 会生成一个端口号 5 更
  • Android基础知识(七):Activity互调之间的生命周期变化与onNewIntent()触发机制

    Android基础知识 xff08 七 xff09 xff1a Activity互调之间的生命周期变化与onNewIntent 触发机制 一 Activity切换的生命周期 前面Android基础知识 xff08 五 xff09 xff1a
  • 二叉树节点和度的关系及特点

    写在前边的话 xff1a 你的支持是我写作的动力 xff0c 有帮助到你的话麻烦点赞 加收藏 呦 感激不尽 xff01 如有错误也请留言指正 目录 一 完全二叉树 节点总数的特点 二 二叉树 度的特点 1 n0与n2的关系 2 节点总数和度
  • 平衡二叉树的最大深度和最少节点数

    写在前边的话 xff1a 你的支持是我写作的动力 xff0c 有帮助到你的话麻烦点赞加收藏呦 感激不尽 xff01 如有错误也请留言指正 考研数据结构练习 xff0c 欢迎订阅我的专辑 考研数据结构题型分类讲解练习 目录 一 知识点 二 例
  • dataturks解析

    34 34 34 根据大json写小json 34 34 34 with open 39 pay json 39 as f datas 61 f readlines for data in datas data 61 data strip
  • STM32串口之环形队列接收数据

    原文链接 xff1a STM32串口之环形队列接收数据 码代码的应该学数据结构都学过队列 环形队列是队列的一种特殊形式 xff0c 应用挺广泛的 因为有太多文章关于这方面的内容 xff0c 理论知识可以看别人的 xff0c 下面写得挺好的
  • Linux使用ssh远程登陆

    什么是SSH xff1f 简单说 xff0c SSH是一种网络协议 xff0c 用于计算机之间的加密登录 如果一个用户从本地计算机 xff0c 使用SSH协议登录另一台远程计算机 xff0c 我们就可以认为 xff0c 这种登录是安全的 x
  • 使用Vscode 编译 开发 调试 STM32单片机 VScode+openocd+STM32CubeMX+GDB

    Vscode 编译 开发 调试 STM32单片机 为什么记录这篇文章环境准备软件及工具下载软件安装 VScode功能搭建使用STM32CubeMX生成带有makefile的工程配置VScode工程 使用vscode 开发 xff0c 编译
  • 出错信息“module or group tools is not avaliable”

    出错信息 module or group tools is not avaliable 使用yum安装软件时 xff0c 有时会出现这个问题 xff0c 可能是需要安装的软件来自第三方 解决办法 yum install epel relea
  • ubuntu 自动登录/图形界面启动流程

    ubuntu 自动登录 图形界面启动流程 启动流程配置greeter和desktop自动登录配置自动登录后进入的desktop总结 这两天在Jetson nano 上想做一个跳过用户界面直接自动登录到桌面的功能 本来很简单的在System
  • Ubuntu update-alternatives 安装/管理多版本 Python3及PIP3

    Ubuntu update alternatives 安装 管理多版本 Python3及PIP3 前言安装python安装对应版本pipupdate alternatives 切换python3 环境 前言 在ubuntu系统上 xff0c
  • 实用的Visual Studio Code插件

    1 vscode color highlight 颜色代码高亮插件 xff08 sublime text也有 xff09 2 vscode Open in Browser 右键在浏览器打开 xff08 sublime text也有 xff0
  • LWIP 双IP实现

    LwIP是Light Weight 轻型 IP协议 xff0c 有无操作系统的支持都可以运行 LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用 xff0c 它只需十几KB的RAM和40K左右的ROM就可以运行 xff
  • Seata解析-seata部署启动初体验

    本文基于seata 1 3 0版本 seata是由阿里巴巴开源的分布式事务框架 xff0c 用于在分布式环境中保持事务一致性 它提供了四种事务模式 xff1a AT TCC SAGA 和 XA 事务模式 xff0c 默认是AT模式 Seat
  • 功能案例----java实现语音播报功能

    功能案例 java实现语音播报功能 根据自己最近的写的项目 xff0c 总结整理了关于java语音播报功能的方法 xff0c 可分为两种形式 一种是通过自己写出一个语音播报方法的工具类 xff0c 然后从前端获取文本数据 xff0c 最后跳
  • spring mvc拦截器 需求:在controller层的方法上,使用自定义注解的方式 不拦截指定请求

    原来是在controller类上实现此需求 缺点 xff1a 只能是整个controller类下的方法全部放开拦截 xff0c 不能放开其中某个方法 xff0c 颗粒度太高 现实现在方法上增加注解 xff0c 更加细颗粒度 1 首先是自定义