SpringMVC中拦截器的简单使用

步骤一:创建拦截器类

首先,我们需要创建一个拦截器类,该类需要实现HandlerInterceptor接口。这个接口定义了三个方法,分别在请求处理前、请求处理后和视图渲染后执行。

java 复制代码
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 在请求处理前执行,返回true表示继续执行后续操作,返回false表示终止执行
        System.out.println("拦截器:请求处理前");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        // 在请求处理后执行,但在视图渲染前执行
        System.out.println("拦截器:请求处理后");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 在整个请求处理完毕后执行,包括视图渲染完毕
        System.out.println("拦截器:请求完成");
    }
}

步骤二:创建配置类

java 复制代码
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class MyInterceptorConfig extends WebMvcConfigurerAdapter {

    @Bean
    public MyInterceptor myInterceptor() {
        return new MyInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册拦截器并指定拦截路径
        registry.addInterceptor(myInterceptor()).addPathPatterns("/secured/**");
    }
}

上述配置类使用了@Configuration注解,表示这是一个配置类。通过@Bean注解将MyInterceptor注册为一个Bean,并在addInterceptors方法中配置拦截器的路径。

步骤三:应用示例

接下来,让我们创建一个简单的Controller,以及一个包含拦截逻辑的方法。

java 复制代码
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class MyController {

    @RequestMapping("/secured/hello")
    @ResponseBody
    public String securedHello() {
        return "Hello from secured endpoint!";
    }
}

步骤四:测试

现在,当我们访问 "/secured/hello" 路径时,拦截器的逻辑将会执行。

相关推荐
Cyan_RA91 天前
SpringMVC @RequestMapping的使用演示和细节 详解
java·开发语言·后端·spring·mvc·ssm·springmvc
周杰伦fans5 天前
.net core webapi/mvc阿里云服务器部署 - 错误解决
阿里云·mvc·.netcore
BFT白芙堂5 天前
GRASP 实验室研究 论文解读 | 机器人交互:基于神经网络引导变分推理的快速失配估计
人工智能·神经网络·机器学习·mvc·人机交互·科研教育机器人·具身智能平台
William_cl5 天前
MVC 中 AJAX 与前后端交互深度实战(含独家避坑与场景化方案)
ajax·mvc·交互
Cyan_RA96 天前
SpringMVC 执行流程分析 详解(图解SpringMVC执行流程)
java·人工智能·后端·spring·mvc·ssm·springmvc
hello 早上好6 天前
Spring MVC 类型转换与参数绑定:从架构到实战
spring·架构·mvc
sanggou7 天前
License 集成 Spring Gateway:解决 WebFlux 非阻塞与 Spring MVC Servlet 阻塞兼容问题
spring·gateway·mvc
optimistic_chen7 天前
【Java EE进阶 --- SpringBoot】Spring DI详解
spring boot·笔记·后端·spring·java-ee·mvc·di
速易达网络7 天前
ASP.NET MVC 连接 MySQL 数据库查询示例
数据库·asp.net·mvc
cyforkk8 天前
Spring 异常处理器:从混乱到有序,优雅处理所有异常
java·后端·spring·mvc