Spring MVC开发拦截器

简介: Spring MVC开发拦截器

一、拦截器Interceptor


  1. SpringMVC 拦截器用于对URL请求进行前置/后置过滤
  2. Intercetpor与Filter功能相似,区别是拦截器是Spring提供,与IOC天
    然兼容,Filter是J2EE的标准更加重量级
  3. Interceptor底层就是基于Spring AOP面向切面编程实现的
  4. Interceptor应用场景很多,例如:权限验证,表单校验,日志输出....


二、开发思路



  1. 编写类实现HandlerInterceptor接口
  2. Maven依赖servlet-api(scope=compile)
  3. application配置过滤地址


三、HandlerInterceptor接口



  1. HandlerInterceptor接口定义了3个要实现的方法
  2. preHandle - 前置校验,在运行目标方法前执行
  3. postHandle - 后置校验,在目标方法运行后执行
  4. afterCompletion - 完成后校验,在产生渲染结果后执行,即页面渲染之后进行执行


四、代码实现


1.编写类


public class SecurityInterceptor implements HandlerInterceptor {
    public boolean preHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler) throws Exception {
        System.out.println(request.getRequestURL() + "前置处理");
        String token = request.getHeader("token");
        if(token == null){
            response.sendError(403,"Token Not Found!");
            return false;
        }
        return true;
    }
    public void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println(request.getRequestURL() + "处理完成");
    }
    public void afterCompletion(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println(request.getRequestURL() + "已渲染输出");
    }
}


2.maven依赖

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <!--
            compile只在编译时加载这个依赖,运行时不加载
            runtime只在运行时加载这个依赖,编译时不加载
            provided 则是编译与运行时都加载,这是默认项
            -->
            <scope>compile</scope>
        </dependency>


3.application配置


<mvc:interceptors>
        <!--配置拦截器-->
        <mvc:interceptor>
            <!--拦截器拦截的地址,/**代表所有地址
            也可以书写/xxx某个具体的地址
            如果有多个URL需要拦截,可以写多个mvc:mapping标签-->
            <mvc:mapping path="/**"/>
            <mvc:mapping path="/login.html"/>
            <mvc:mapping path="/reg"/>
            <!--
                exclude-mapping是排除地址,必须以/开头,后面增加匹配字符串即可
                exclude-mapping通常是排除掉静态资源
            -->
            <mvc:exclude-mapping path="/**.ico"/>
            <mvc:exclude-mapping path="/**.jpg"/>
            <mvc:exclude-mapping path="/**.gif"/>
            <bean class="com.itlaoqi.springmvc.interceptor.SecurityInterceptor"/>
        </mvc:interceptor>
        <!--某个URL遇到多个拦截器时,会按照配置顺序依次执行,如果前面preHandle没有通过,则会全部中断-->
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.itlaoqi.springmvc.interceptor.SecurityInterceptor1"/>
        </mvc:interceptor>
    </mvc:interceptors>




相关文章
|
16天前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
241 0
|
2天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
11天前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
23天前
|
XML JSON Java
Spring Boot 开发中常见的错误
本文总结了 Java 开发中常见的几个问题及其改进方法,包括:1. 过度使用 `@Component` 注解;2. `@ResponseBody` 注解的错误用法;3. `@Autowired` 的不当使用;4. `application.properties` 管理不善;5. 异常处理不当。每部分详细解释了错误情况和建议的改进方案,并提供了相应的代码示例。
50 11
|
23天前
|
IDE Java 测试技术
互联网应用主流框架整合之Spring Boot开发
通过本文的介绍,我们详细探讨了Spring Boot开发的核心概念和实践方法,包括项目结构、数据访问层、服务层、控制层、配置管理、单元测试以及部署与运行。Spring Boot通过简化配置和强大的生态系统,使得互联网应用的开发更加高效和可靠。希望本文能够帮助开发者快速掌握Spring Boot,并在实际项目中灵活应用。
44 5
|
23天前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
38 4
|
21天前
|
前端开发 Java 开发者
这款免费 IDEA 插件让你开发 Spring 程序更简单
Feign-Helper 是一款支持 Spring 框架的 IDEA 免费插件,提供 URL 快速搜索、Spring Web Controller 路径一键复制及 Feign 与 Controller 接口互相导航等功能,极大提升了开发效率。
|
28天前
|
XML Java 数据格式
Spring Boot 开发中的常见失误
本文深入分析了Spring Boot开发中常见的失误,包括不当使用@Component、@ResponseBody、@Autowired注解,以及不良的异常处理和日志记录实践,提供了有效的规避策略,帮助开发者提升代码质量和系统性能。
|
5月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
70 0
|
8月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
223 0