`
lzhted
  • 浏览: 17170 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【Java Web学习笔记】04-添加一个SpringMVC拦截器

阅读更多

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>

 

 

更多代码参见【Java Web学习笔记】03-练习的web工程

分享到:
评论

相关推荐

    吴天雄--SpringMVC笔记.doc

    SpringMVC 是一个基于 Java 的轻量级 Web 请求驱动框架,它属于 Spring Framework 的一部分,旨在简化 Web 应用的开发。SpringMVC 以其灵活性、高性能和易用性,成为了当今最主流的 MVC 框架之一。 1. **SpringMVC ...

    springmvc学习笔记-springmvc注解开发.zip

    在"springmvc学习笔记--springmvc注解开发.zip"这个压缩包中,我们可以深入探讨Spring MVC的注解驱动开发方式,这是一种简洁且高效的开发模式。 1. **Spring MVC基础**: Spring MVC的核心组件包括...

    传智播客Springmvc+mybatis由浅入深学习笔记

    《传智播客Springmvc+mybatis由浅入深学习笔记》是一套全面解析Springmvc和Mybatis两大主流Java框架的教程,旨在帮助初学者和进阶者深入理解这两个技术的核心概念和应用。该资源包括了四部分课堂笔记,分别是...

    springmvc学习笔记-springmvc整合mybatis.zip

    - 配置 SpringMVC 的 DispatcherServlet,设置拦截器、视图解析器等。 - 配置 MyBatis 的数据源、SqlSessionFactoryBean、MapperScannerConfigurer。 - 编写 Mapper 接口和对应的 XML 映射文件。 - 创建 ...

    SpringMvc学习笔记

    Spring MVC 是一个强大的Java web应用程序开发框架,它作为Spring框架的一部分,主要负责处理Web层的交互。本篇学习笔记将带你逐步了解Spring MVC的核心概念、工作流程以及如何配置开发环境。 1. **Spring MVC简介*...

    SpringMVC 学习笔记一

    在Java Web开发领域,SpringMVC是Spring框架的一个重要组成部分,它是一个用于构建Web应用程序的Model-View-Controller(MVC)框架。本学习笔记将深入探讨SpringMVC的基本概念、核心组件以及如何进行实际应用。 ###...

    SpringMVC学习课堂笔记

    ### SpringMVC学习课堂笔记知识点总结 #### 一、SpringMVC基础知识 ##### 1.1 什么是SpringMVC? SpringMVC是Spring框架的一部分,主要用于构建Web应用程序。它遵循了MVC(Model-View-Controller)设计模式,提供...

    springMVC-个人学习笔记.docx下载

    SpringMVC 是一款基于 Java 的轻量级 Web 开发框架,...在实际开发中,还会涉及到更多的高级特性,如拦截器(Interceptor)、数据绑定、异常处理等,这些都是 SpringMVC 提供的强大功能,使得 Web 开发更加高效和便捷。

    springmvc学习笔记-前端控制器、上传、异常、开发心得小结等.zip

    此外,SpringMVC还支持声明式异常处理,通过`@ControllerAdvice`注解定义一个全局的异常处理类,进一步提升代码的可维护性。 4. **开发心得小结** - **依赖注入**:SpringMVC充分利用Spring框架的依赖注入特性,...

    狂神说springmvc笔记.zip

    SpringMVC是Spring框架的一个模块,专为构建Web应用程序而设计。它是一个基于模型-视图-控制器(MVC)架构的轻量级Java Web框架,提供了强大的数据绑定、校验和类型转换功能,简化了Java Web开发流程。在"狂神说...

    springmvc第一天课堂笔记

    SpringMVC是Spring框架的一个核心模块,它是一个基于Model-View-Controller(MVC)设计模式的Web应用框架。在B/S系统中,SpringMVC提供了一个灵活的方式来处理用户请求,将业务逻辑与表现层分离,从而降低了系统的...

    2023年SpringMVC学习笔记.doc

    HandlerMapping是SpringMVC中的一个重要组件,它负责将用户的请求映射为HandlerExecutionChain对象,包含一个Handler解决器对象和多个HandlerInterceptor拦截器对象。HandlerMapping使用策略模式,使得添加新的映射...

    SSM 框架整合教程:三、SpringMVC-尚硅谷学习笔记 2022 年

    在尚硅谷的2022年学习笔记中,可能包含了以下实战内容: - **HelloWorld示例**:创建一个简单的Controller,处理GET请求,返回“Hello, World!”。 - **模型数据传递**:演示如何将模型数据绑定到视图,并在页面上...

    达内SpringMVC代码例子+笔记2

    SpringMVC是Spring框架的一个模块,专门用于处理Web应用程序的请求和响应。它是一个轻量级的、基于注解的模型-视图-控制器(MVC)架构,为Java开发人员提供了一种组织和构建Web应用程序的强大方式。在这个"达内...

    springboot学习、springmvc、mybatis、注解、拦截器.zip

    SpringBoot是目前非常流行的Java开发框架,它简化了Spring...总的来说,这个压缩包提供了一个全面学习SpringBoot、SpringMVC、MyBatis和注解的基础,通过实践案例,你可以深入理解这些技术并提升你的Java Web开发能力。

    java的ssm框架中的SpringMVC的学习笔记课件

    SpringMVC 是 Spring 框架的一个重要组成部分,自 Spring 3.0 版本开始发布。它是一种基于模型-视图-控制器(MVC)架构模式的轻量级 Web 开发框架。SpringMVC 的主要目标是简化Web应用程序的开发,提供清晰的角色...

    SpringMVC学习笔记

    在Java Web开发领域,SpringMVC是Spring框架的一个核心模块,用于构建基于模型-视图-控制器(MVC)架构的Web应用。它以其灵活性、可扩展性和易于测试的特点,成为了众多开发者首选的Web MVC框架。本篇笔记将深入探讨...

    springmvc课堂笔记

    **SpringMVC**是Spring框架中的一个重要组成部分,主要用于构建Web应用程序。它遵循MVC(Model-View-Controller)设计模式,帮助开发者构建出清晰分层的应用架构,提高代码的可维护性和可扩展性。 ##### 1.1 ...

    mybatis,springmvc学习笔记

    【标题】"mybatis,springmvc学习笔记"涵盖了两个核心的Java Web开发框架:MyBatis和Spring MVC。这两个框架在现代企业级应用中扮演着重要角色,它们各自解决了不同的问题,但通常会结合使用以构建高效、灵活的后端...

    springmvc课堂笔记(两天)

    SpringMVC是Spring框架的一个模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。在两天的课堂学习中,我们通常会深入理解这个强大的Java Web开发工具的核心概念和实践应用。 第一天的课堂笔记可能涵盖...

Global site tag (gtag.js) - Google Analytics