Spring MVC提供拦截器Interceptor可以将特别的功能应用到指定的请求,例如:鉴权、日志等。拦截器的功能和应用场景与过滤器Filter有点像,但更强大,包含了AOP的思想。过滤器在请求的逻辑前执行,而拦截器在请求前后都可以执行。
拦截器需要实现HandlerInterceptor接口,三个方法。分别是:在处理器执行前的方法preHandle(..);在处理器执行后的方法postHandle(..);在请求结束后的方法afterCompletion(..)。SpringMVC提供了一个适配器类HandlerInterceptorAdapter。拦截器直接继承适配器,则只需要实现自己需要的方法,不用完全实现三个方法。参考跟开涛学SpringMVC写的一个简单的性能监控拦截器,代码如下:
package com.lz.quick.web.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.core.NamedThreadLocal; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class DefaultInterceptor implements HandlerInterceptor { private static final Logger log = LogManager .getLogger(DefaultInterceptor.class); private NamedThreadLocal<Long> startTimeThreadLocal = new NamedThreadLocal<Long>( "StopWatch-StartTime"); @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView mv) throws Exception { long endTime = System.currentTimeMillis(); long beginTime = startTimeThreadLocal.get(); long consumeTime = endTime - beginTime; if (consumeTime > 500) { log.warn("performance suffer: {} cost {}.", request.getRequestURI(), consumeTime); } else { log.debug("performance suffer: {} cost {}.", request.getRequestURI(), consumeTime); } log.exit(request.getRequestURI()); } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.entry(request.getRequestURI()); long beginTime = System.currentTimeMillis(); startTimeThreadLocal.set(beginTime); return log.exit(true); } }
注册拦截器使用<mvc:interceptors>元素。拦截器配置:
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.lz.quick.web.interceptor.DefaultInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
相关推荐
SpringMVC 是一个基于 Java 的轻量级 Web 请求驱动框架,它属于 Spring Framework 的一部分,旨在简化 Web 应用的开发。SpringMVC 以其灵活性、高性能和易用性,成为了当今最主流的 MVC 框架之一。 1. **SpringMVC ...
在"springmvc学习笔记--springmvc注解开发.zip"这个压缩包中,我们可以深入探讨Spring MVC的注解驱动开发方式,这是一种简洁且高效的开发模式。 1. **Spring MVC基础**: Spring MVC的核心组件包括...
《传智播客Springmvc+mybatis由浅入深学习笔记》是一套全面解析Springmvc和Mybatis两大主流Java框架的教程,旨在帮助初学者和进阶者深入理解这两个技术的核心概念和应用。该资源包括了四部分课堂笔记,分别是...
- 配置 SpringMVC 的 DispatcherServlet,设置拦截器、视图解析器等。 - 配置 MyBatis 的数据源、SqlSessionFactoryBean、MapperScannerConfigurer。 - 编写 Mapper 接口和对应的 XML 映射文件。 - 创建 ...
Spring MVC 是一个强大的Java web应用程序开发框架,它作为Spring框架的一部分,主要负责处理Web层的交互。本篇学习笔记将带你逐步了解Spring MVC的核心概念、工作流程以及如何配置开发环境。 1. **Spring MVC简介*...
在Java Web开发领域,SpringMVC是Spring框架的一个重要组成部分,它是一个用于构建Web应用程序的Model-View-Controller(MVC)框架。本学习笔记将深入探讨SpringMVC的基本概念、核心组件以及如何进行实际应用。 ###...
### SpringMVC学习课堂笔记知识点总结 #### 一、SpringMVC基础知识 ##### 1.1 什么是SpringMVC? SpringMVC是Spring框架的一部分,主要用于构建Web应用程序。它遵循了MVC(Model-View-Controller)设计模式,提供...
SpringMVC 是一款基于 Java 的轻量级 Web 开发框架,...在实际开发中,还会涉及到更多的高级特性,如拦截器(Interceptor)、数据绑定、异常处理等,这些都是 SpringMVC 提供的强大功能,使得 Web 开发更加高效和便捷。
此外,SpringMVC还支持声明式异常处理,通过`@ControllerAdvice`注解定义一个全局的异常处理类,进一步提升代码的可维护性。 4. **开发心得小结** - **依赖注入**:SpringMVC充分利用Spring框架的依赖注入特性,...
SpringMVC是Spring框架的一个模块,专为构建Web应用程序而设计。它是一个基于模型-视图-控制器(MVC)架构的轻量级Java Web框架,提供了强大的数据绑定、校验和类型转换功能,简化了Java Web开发流程。在"狂神说...
SpringMVC是Spring框架的一个核心模块,它是一个基于Model-View-Controller(MVC)设计模式的Web应用框架。在B/S系统中,SpringMVC提供了一个灵活的方式来处理用户请求,将业务逻辑与表现层分离,从而降低了系统的...
HandlerMapping是SpringMVC中的一个重要组件,它负责将用户的请求映射为HandlerExecutionChain对象,包含一个Handler解决器对象和多个HandlerInterceptor拦截器对象。HandlerMapping使用策略模式,使得添加新的映射...
在尚硅谷的2022年学习笔记中,可能包含了以下实战内容: - **HelloWorld示例**:创建一个简单的Controller,处理GET请求,返回“Hello, World!”。 - **模型数据传递**:演示如何将模型数据绑定到视图,并在页面上...
SpringMVC是Spring框架的一个模块,专门用于处理Web应用程序的请求和响应。它是一个轻量级的、基于注解的模型-视图-控制器(MVC)架构,为Java开发人员提供了一种组织和构建Web应用程序的强大方式。在这个"达内...
SpringBoot是目前非常流行的Java开发框架,它简化了Spring...总的来说,这个压缩包提供了一个全面学习SpringBoot、SpringMVC、MyBatis和注解的基础,通过实践案例,你可以深入理解这些技术并提升你的Java Web开发能力。
SpringMVC 是 Spring 框架的一个重要组成部分,自 Spring 3.0 版本开始发布。它是一种基于模型-视图-控制器(MVC)架构模式的轻量级 Web 开发框架。SpringMVC 的主要目标是简化Web应用程序的开发,提供清晰的角色...
在Java Web开发领域,SpringMVC是Spring框架的一个核心模块,用于构建基于模型-视图-控制器(MVC)架构的Web应用。它以其灵活性、可扩展性和易于测试的特点,成为了众多开发者首选的Web MVC框架。本篇笔记将深入探讨...
**SpringMVC**是Spring框架中的一个重要组成部分,主要用于构建Web应用程序。它遵循MVC(Model-View-Controller)设计模式,帮助开发者构建出清晰分层的应用架构,提高代码的可维护性和可扩展性。 ##### 1.1 ...
【标题】"mybatis,springmvc学习笔记"涵盖了两个核心的Java Web开发框架:MyBatis和Spring MVC。这两个框架在现代企业级应用中扮演着重要角色,它们各自解决了不同的问题,但通常会结合使用以构建高效、灵活的后端...
SpringMVC是Spring框架的一个模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。在两天的课堂学习中,我们通常会深入理解这个强大的Java Web开发工具的核心概念和实践应用。 第一天的课堂笔记可能涵盖...