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>




相关文章
|
1月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
46 4
|
9天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
21 2
|
30天前
|
XML Java 数据格式
提升效率!Spring Boot 开发中的常见失误轻松规避
本文深入探讨了在 Spring Boot 开发中常见的失误,包括不当使用注解、不良异常处理、低效日志记录等,提供了有效的规避策略,帮助开发者提升代码质量和系统性能,构建更健壮、高效的应用程序。
|
14天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
28 0
|
1月前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
1月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
26 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
1月前
|
开发框架 Java API
「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架
「SpringBrick快速入门指南」:一款基于Spring Boot的高级插件化开发框架
56 0
|
1月前
|
XML Java 数据格式
手动开发-简单的Spring基于注解配置的程序--源码解析
手动开发-简单的Spring基于注解配置的程序--源码解析
47 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
49 0
|
6月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
194 0
下一篇
无影云桌面