`
gary0416
  • 浏览: 333485 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring MVC拦截器详解

阅读更多

 

package com.gary.util.spring;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

/**
 * Spring MVC拦截器
 * @author gary
 *
 */
public class CommonInterceptor extends HandlerInterceptorAdapter implements InitializingBean{
	
	static Log log = LogFactory.getLog(CommonInterceptor.class);
	
	/**
	 * 在系统启动时执行
	 */
	public void afterPropertiesSet() throws Exception {
		log.debug("=======初始化CommonInterceptor拦截器=========");
	}
	
	/**
	 * 在Controller方法前进行拦截
	 * 如果返回false
	 * 		从当前拦截器往回执行所有拦截器的afterCompletion方法,再退出拦截器链.
	 * 如果返回true
	 * 		执行下一个拦截器,直到所有拦截器都执行完毕.
	 * 		再运行被拦截的Controller.
	 * 		然后进入拦截器链,从最后一个拦截器往回运行所有拦截器的postHandle方法.
	 * 		接着依旧是从最后一个拦截器往回执行所有拦截器的afterCompletion方法.
	 */
	@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {
		log.debug("=====preHandle====");
		//业务逻辑
		
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		log.debug("==========postHandle=========");
		
		if(modelAndView != null){
			String viewName = modelAndView.getViewName();
			log.debug("view name : " + viewName);
		}else{
			log.debug("view is null");
		}
	}
	
	/**
	 * 在Controller方法后进行拦截
	 * 当有拦截器抛出异常时,会从当前拦截器往回执行所有拦截器的afterCompletion方法
	 */
	@Override
	public void afterCompletion(HttpServletRequest httpservletrequest,
			HttpServletResponse httpservletresponse, Object obj,
			Exception exception) throws Exception {
		log.debug("=====afterCompletion====");
	}

	
}

部分配置

 

<property name="interceptors">
			<list>
				<bean class="com.gary.util.spring.CommonInterceptor"/>
				<bean class="com.gary.util.spring.CommonInterceptor2"/>
			</list>
		</property>

 实际运行结果(控制台DEBUG输出)

 

DispatcherServlet with name 'springmvc' processing GET request for [/demo/Demo/test.html]
Matching patterns for request [/Demo/test.html] are [/Demo/*]
URI Template variables for request [/Demo/test.html] are {}
Mapping [/Demo/test.html] to HandlerExecutionChain with handler [com.gary.test.controller.DemoController@1ed1dbe] and 1 interceptor
Returning handler method name 'test' for lookup path: /Demo/test.html
Last-Modified value for [/demo/Demo/test.html] is: -1
=====preHandle====
=====preHandle2====
Returning handler method name 'test' for lookup path: /Demo/test.html
进入到demo的test方法
==========postHandle2=========
view name : /Demo/test
==========postHandle=========
view name : /Demo/test
Invoking afterPropertiesSet() on bean with name '/Demo/test'
Rendering view [org.springframework.web.servlet.view.JstlView: name '/Demo/test'; URL [/Demo/test.jsp]] in DispatcherServlet with name 'springmvc'
Forwarding to resource [/Demo/test.jsp] in InternalResourceView '/Demo/test'
=====afterCompletion2====
=====afterCompletion====
Successfully completed request
分享到:
评论
1 楼 weaponhuang 2012-12-24  
这位兄弟,请教下,拦截器中怎么获取到请求对应的方法??
我看日志里面已经获取到了。
“进入到demo的test方法” 

相关推荐

    详解Spring MVC拦截器实现session控制

    Spring MVC拦截器是Spring Web框架的一个重要组成部分,它允许开发者在处理请求之前或之后执行自定义的操作,例如权限校验、日志记录等。在本篇文章中,我们详细探讨了如何通过Spring MVC拦截器实现session的控制,...

    spring mvc过程详解

    1. **拦截器**:Spring MVC 支持多种类型的拦截器,包括但不限于预处理拦截器、后处理拦截器等,它们可以在请求处理前后执行自定义的逻辑。 2. **异常处理**:Spring MVC 提供了多种机制来处理异常,可以通过自定义...

    Spring MVC 拦截器 interceptor 用法详解

    Spring MVC 拦截器 interceptor 用法详解 Spring MVC 中的拦截器(Interceptor)类似于 Servlet 中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的...

    自己spring boot 拦截器

    在Spring Boot应用中,拦截器(Interceptor)是Spring MVC框架的一部分,用于在请求处理之前、之后或在实际处理过程中执行一些预定义的任务。这通常包括权限检查、日志记录、性能监控等。自定义拦截器可以帮助我们更...

    Spring MVC 框架搭建及详解

    6. **Interceptor**:拦截器,提供预处理和后处理功能,可以实现认证、日志记录等功能。 **四、Spring MVC 高级特性** 1. **RESTful 风格**:通过配置 URL 映射支持 RESTful 风格的接口。 2. **数据绑定**:自动将...

    Spring mvc 教程

    ### Spring MVC 教程知识点详解 #### Spring Web MVC 框架简介 Spring Web MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。它提供了一个灵活且强大的 MVC 实现,使得开发者...

    SSM框架的配置搭建 spring、 spring mvc、 mybatis 整合详解

    4. **配置Spring MVC**:创建Spring MVC的配置文件,如`servlet-context.xml`,配置DispatcherServlet、视图解析器(如InternalResourceViewResolver)、拦截器等。 5. **配置MyBatis**:编写MyBatis的全局配置文件...

    Spring mvc5.0.3 所有jar包

    9. **拦截器(Interceptor)**: Spring MVC允许自定义拦截器,可以在请求处理前或后执行一些通用逻辑,如权限检查、日志记录等。 10. **异常处理**: 可以全局或局部地配置异常处理器,将异常转换为特定的视图或HTTP...

    spring mvc案例+配置+原理详解+架包

    1. **web.xml**:配置DispatcherServlet,包括初始化参数、拦截器、监听器等。 2. **spring-mvc.xml**:定义Bean、数据源、事务管理器、视图解析器、HandlerMapping和HandlerAdapter等。 四、Spring MVC 原理 1. *...

    SpringMVC拦截器例子详解

    下面将详细解释Spring MVC拦截器的工作原理、配置和实际应用。 1. **工作原理**: - 拦截器是基于AOP(面向切面编程)思想实现的,它通过预处理器和后处理器模式,对HTTP请求进行拦截。 - 当一个请求到达Spring ...

    Spring MVC请求参数与响应结果全局加密和解密详解

    Spring MVC请求参数与响应结果全局加密和解密详解 在本文中,我们将详细介绍Spring MVC请求参数与响应结果全局加密和解密的相关知识点,包括请求参数的加密和解密、响应结果的加密和解密、ContentType的处理等。 ...

    SSM框架的配置搭建 spring,spring mvc,mybatis 整合详解

    接着,创建Spring MVC的配置文件(如`servlet-context.xml`),配置视图解析器、拦截器、处理器映射器等。 ```xml &lt;!-- 视图解析器 --&gt; &lt;bean class="org.springframework.web.servlet.view....

    Spring MVC 第一个例子

    **Spring MVC 框架详解** Spring MVC 是 Spring 框架的一个重要模块,它为构建基于Java的Web应用程序提供了一个强大的模型-视图-控制器(MVC)架构。Spring MVC 的设计允许开发者将业务逻辑、数据处理和用户界面...

    Spring-MVC-3.0.rar_Java spring mvc_spring mvc_spring ppt

    这份PPT很可能涵盖了Spring MVC 3.0的基本概念、配置、控制器、模型绑定、视图解析、拦截器以及如何构建RESTful服务等内容。通过学习,开发者能够了解如何创建Controller、配置DispatcherServlet、处理请求和响应,...

    Spring MVC核心组件之HandlerMapping详解

    ### Spring MVC核心组件之HandlerMapping详解 #### 一、引言 在Java Web开发领域,Spring MVC框架因其灵活且强大的特性而备受青睐。它提供了一种简洁的方式来构建可维护、可扩展的应用程序。Spring MVC的核心组件之...

    spring mvc demo

    以上就是关于 Spring MVC 和 Mybatis 整合的基础知识和实践步骤,实际开发中,还可以根据项目需求,引入更多的功能,如拦截器(Interceptor)、AOP(面向切面编程)等,以增强系统的可扩展性和可维护性。在...

Global site tag (gtag.js) - Google Analytics