首页 > 其他分享 >SpringMVC拦截器

SpringMVC拦截器

时间:2024-12-06 10:31:49浏览次数:11  
标签:拦截器 SpringMVC springframework org import servlet public

在前面使用纯注解快速搭建springMVC的基础上配置拦截器,纯注解快速搭建springMVC请查看SpringMVC纯注解快速开发-CSDN博客

接下来快速配置一个拦截器,在controller包下新建interceptor包,然后在interceptor包下新建类Handler.java,该类去实现HandlerInterceptor接口,实现其中的三个方法,这三个方法的作用详情请看代码中的注释,这样就是实现我们的一个自定义的拦截器。

package com.xiaoya.controller.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class Handler implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("whoami");
        return true;  //如果返回false则请求在这里被拦截,相当于请求被丢弃,后面的postHandle和afterCompletion也不会执行
    }
    @Override  //postHandle控制器方法执行完后,但在视图渲染之前被调用
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle....");
    }
    @Override  //在请求处理完毕后、响应返回给客户端之前被调用,常常用于资源释放等收尾工作
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion....");
    }
}

然后在Config.java中使用@Autowired自动注入我们自定义的拦截器类,同时实现WebMvcConfigurer接口中的addInterceptors方法来添加拦截器。

package com.xiaoya.config;

import com.xiaoya.controller.interceptor.Handler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
@EnableWebMvc  //需要该注解
@ComponentScan({"com.xiaoya.controller"})
public class Config implements WebMvcConfigurer {
    @Autowired
    private Handler handler;
    @Override
    public void addInterceptors(InterceptorRegistry registry){
        registry.addInterceptor(handler).addPathPatterns("/**"); //拦截根目录/下的所有请求
    }
}

至此,拦截器配置就完成了,非常简单,启动tomcat容器,访问对应的请求即可执行拦截器中的方法

标签:拦截器,SpringMVC,springframework,org,import,servlet,public
From: https://blog.csdn.net/MKIDM/article/details/144281811

相关文章

  • axios拦截器原理是什么?
    Axios拦截器的工作原理基于链式调用和Promise。它允许你在请求发送前和响应返回后对请求和响应进行拦截和处理。可以理解为一个“中间件”机制。具体来说,Axios拦截器分为两种:请求拦截器(RequestInterceptors):在请求发送之前执行。可以用于修改请求配置(例如添加head......
  • 一种轻量分表方案-MyBatis拦截器分表实践
    作者:京东零售张均杰背景部门内有一些亿级别核心业务表增速非常快,增量日均100W,但线上业务只依赖近一周的数据。随着数据量的迅速增长,慢SQL频发,数据库性能下降,系统稳定性受到严重影响。本篇文章,将分享如何使用MyBatis拦截器低成本的提升数据库稳定性。 业界常见方案针对冷数......
  • SpringMVC:入门案例
    从此开始,我们步入SpringMVC的学习。SpringMVC是一种基于Java实现MVC模型的轻量级Web框架先来看一下web程序是如何工作的:因为是异步调用,所以后端不需要返回view视图,将其去除前端如果通过异步调用的方式进行交互,后台就需要将返回的数据转换成json格式进行返回SpringMVC主......
  • SpringMVC:SpringMVC的工作流程
    SpringMVC入门案例请见:SpringMVC入门案例接下来讲解一下SpringMVC的工作流程.我们将SpringMVC的使用过程总共分两个阶段来分析,分别是启动服务器初始化过程和单次请求过程.启动服务器初始化过程服务器启动,执行ServletContainersInitConfig类,初始化web容器功能类似于以......
  • SpringMVC-07-Ajax
    1、Ajax是什么?AJAX=AsynchronousJavaScriptandXML(异步的JavaScript和XML)。AJAX是一种在无需重新加载整个网页的情况下,对网页进行局部更新的技术。Ajax不是一种新的编程语言,而是一种用于创建动态性和交互性更强的Web应用程序的技术。实际上,就是用JavaScript执行异步......
  • SpringMVC工作原理【流程图+文字详解SpringMVC工作原理】
    SpringMVC工作原理前端控制器:DispactherServlet处理器映射器:HandlerMapping处理器适配器:HandlerAdapter处理器:Handler,视图解析器:ViewResolver视图:View首先用户通过浏览器发起HTTP请求,请求直接到前端控制器DispatcherServlet.前端控制器接收到请求后调用处理器映射器Hand......
  • 拦截器的使用问题
    在前后端分离的开发模式下,拦截器和过滤器的使用确实有所不同。在传统的MVC模式中,过滤器(Filter)可以直接对请求和响应进行操作,包括重定向和请求转发。但在前后端分离的架构中,后端通常作为API服务提供者,而前端则负责页面渲染,因此后端拦截器通常不直接处理页面跳转,而是返回JSON格式的......
  • SpringMVC接收请求参数
    (5)请求参数==》五种普通参数1.普通参数代码块@RequestMapping("/commonParam")@ResponseBodypublicStringcommonParam(Stringname,intage){ System.out.println("普通参数传递name==>"+name); System.out.println("普通参数传递age==>"+age);......
  • SpringMvc给页面一个默认界面
    1、config包1.1、创建SpringMvcConfig类并实现接口WebMvcConfigurer@EnableWebMvcpublicclassSpringMvcConfigimplementsWebMvcConfigurer{//视图解析器@BeanpublicViewResolverviewResolver(){InternalResourceViewResolverviewResolver......
  • 实现RequestInterceptor接口的两个拦截器,其中一个apply方法没有执行
    已经在config类中,对两个拦截器进行定义了。但是在打断点的时候,TokenInterceptor中重写的apply()方法没有被执行。@Configuration@Slf4jpublicclassFeginConfig{@Bean@Order(1)publicTokenInterceptortokenInterceptor(){log.info("TokenInterce......