`

Java之Interceptor和Filter

 
阅读更多

 

最近研究了下Spring的HandlerInterceptor和Java的Filter,因为经常搞混它们两个,今天整理个笔记记录一下。

 

HandlerInterceptor 是Spring里面的拦截器

Filter是Java里面的过滤器

 

共同点 还是贴下Java里面的注释吧,解释还是很到位的:

 * <p>A HandlerInterceptor gets called before the appropriate HandlerAdapter

 * triggers the execution of the handler itself. This mechanism can be used

 * for a large field of preprocessing aspects, e.g. for authorization checks,

 * or common handler behavior like locale or theme changes. Its main purpose

 

 * is to allow for factoring out repetitive handler code.

 

 * <p>HandlerInterceptor is basically similar to a Servlet 2.3 Filter, but in

 * contrast to the latter it just allows custom pre-processing with the option

 * of prohibiting the execution of the handler itself, and custom post-processing.

 * Filters are more powerful, for example they allow for exchanging the request

 * and response objects that are handed down the chain. Note that a filter

 * gets configured in web.xml, a HandlerInterceptor in the application context.

 *

 * <p>As a basic guideline, fine-grained handler-related preprocessing tasks are

 * candidates for HandlerInterceptor implementations, especially factored-out

 * common handler code and authorization checks. On the other hand, a Filter

 * is well-suited for request content and view content handling, like multipart

 * forms and GZIP compression. This typically shows when one needs to map the

 * filter to certain content types (e.g. images), or to all requests.

 

  解释下吧:

  HandlerInteceptor一般用于权限验证,以及一些处理风格本地化等公共代码。

  Filter一般用于修改请求内容和界面的解析处理相关。

 

  Inteceptor的三个方法:

  

//做实际的请求之前调用
//返回true会接着链式调用
//返回false终止链式调用
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
	    throws Exception;


//请求之后,解析视图界面之前调用
void postHandle(
			HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
			throws Exception;

//解析完界面之后调用
void afterCompletion(
			HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception;

// 在mvc-dispatcher-servlet.xml或者applicationContext.xml中配置
    <!--interceptors begin-->
    <mvc:interceptors>
        <bean class="com.xxx.AllInterceptor"/>
    </mvc:interceptors>
    <!--interceptors end-->

   

    Filter配置

    

@Component
public class RequestLogFilter implements Filter{

	@Override
	public void destroy() {
		System.out.println("destory");
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		System.out.println("doFilter");
		chain.doFilter(request , response);
		
	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("init");
		
	}

}


// web.xml配置
<filter>
    <filter-name>testFilter</filter-name>
    <filter-class>com.abcd.system.RequestLogFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>testFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

   

   测试结果顺序:发现filter会在前面处理

   init

   doFilter

   preHandle

   postHandle

   afterCompletion

3
0
分享到:
评论
3 楼 chenaini119 2016-10-25  
>>> inter interceptor
>>> postHandle
>>> afterCompletion
>>> filter doFilter.....
>>> ----------login page ------
我的顺序是反的
2 楼 labreeze 2015-05-23  
shmily2038 写道
简单易懂

呵呵 大家喜欢就好。
1 楼 shmily2038 2015-05-23  
简单易懂

相关推荐

    Struts2_interceptor_和_filter区别

    标题和描述均聚焦于“Struts2_interceptor_和_filter区别”,这暗示着对比和解析Struts2框架中拦截器(Interceptor)与过滤器(Filter)的差异是本文的核心议题。接下来,我们将深入探讨这两者在功能、实现方式以及...

    Interceptor与Filter的区别

    在Java Web开发中,拦截器(Interceptor)与过滤器(Filter)是两种常见的处理请求和响应的技术。它们虽然都用于在请求处理前后执行某些操作,但其实现机制、应用场景以及作用范围等方面存在较大差异。下面将详细...

    java中filter跟interceptor区别

    java中filter跟interceptor区别

    浅谈SpringMVC中Interceptor和Filter区别

    浅谈SpringMVC中Interceptor和Filter区别 SpringMVC中Interceptor和Filter是两个重要的概念,它们都是用来处理用户请求的,但它们有着不同的作用和实现机制。本文将详细介绍Interceptor和Filter的区别,帮助读者更...

    Java WEB 篇九 Java servlet、filter、listener、interceptor ?.xmind

    Java WEB 篇九 Java servlet、filter、listener、interceptor 之间的区别和联系?

    Filter以及Interceptor的区别

    在Java Web开发领域,特别是使用Struts2框架时,Filter和Interceptor是两个非常重要的概念。它们都是用来拦截请求并执行特定逻辑的机制,但它们之间存在一些关键的区别。 #### 一、Filter概述 **Filter** 是...

    Interceptor.doc

    拦截器(Interceptor)是一种在Java Web开发中广泛使用的可插拔组件设计,它允许开发者在不修改核心处理代码的情况下,对请求和响应进行拦截,提供标准化的服务。这种设计模式能够独立地增强系统的功能,提高代码的...

    Java servlet、filter、listener、interceptor之间的区别和联系

    Java Web开发中,Servlet、Filter、Listener和Interceptor这四种组件在处理请求和响应的过程中扮演着不同的角色,它们都是Java EE规范中不可或缺的部分,用于增强应用程序的功能和灵活性。 **1. Servlet** Servlet...

    filter__serverlet__listener与interceptor的相同点与区别.doc

    在Web开发中,`filter`、`servlet`、`listener`和`interceptor`都是重要的组件,它们各自承担着不同的职责。以下是它们的详细解释和对比: 1. **Servlet**: - Servlet是一个Java类,用于扩展服务器的功能。它们在...

    SpringBoot中使用Filter和Interceptor的示例代码

    SpringBoot中使用Filter和Interceptor的示例代码 在SpringBoot框架中,Filter和Interceptor是两个非常重要的概念,它们都可以用来拦截和处理HTTP请求,但是它们的实现机制和使用场景却有所不同。下面将详细介绍...

    SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系

    在Java Web开发中,Spring MVC框架提供了两种机制来处理请求:拦截器(Interceptor)和过滤器(Filter)。它们都是在请求被控制器处理之前和之后执行的一系列预处理和后处理操作,但它们在功能、使用场景和工作原理...

    webfilter的教程

    在Java Web开发中,`Filter`是一个至关重要的组件,它属于`javax.servlet`包,用于在请求被实际处理之前和之后进行预处理和后处理。本教程将详细讲解`Filter`的两个主要功能:字符编码过滤和登录验证。 首先,让...

    Spring Boot 编写Servlet、Filter、Listener、Interceptor的方法

    描述:Spring Boot 中如何定义过滤器、监听器和拦截器,对 Spring Boot 编写 Servlet、Filter、Listener、Interceptor 的相关知识感兴趣的朋友一起看看吧 标签:spring boot 编写Servlet Filter Listener Inter ...

    java+struts2防盗链(filter不可过滤action).docx

    Java+Struts2 防盗链(Filter 不可过滤 Action) 防盗链是指防止在没有通过合理的登录界面,直接进入到系统中的机制。其优点是避免在每个页面判断是否获得 session,虽然在里也是判断是否或的 session,但是代码...

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...

    Java 相关API文档大全

    这个中文教程为开发者提供了Struts2框架的详细指南,包括Action、Result、Interceptor、配置文件以及与Spring和其他框架的集成。 3. **Spring2.5-中文参考手册.chm**:Spring是一个全方位的Java企业级应用框架,...

    spring-Interceptor-filter-aop:spring mvc和tomcat源码分析

    本文将深入探讨"spring-Interceptor-filter-aop:spring mvc和tomcat源码分析"这一主题,旨在揭示这两个核心组件的内部工作原理。 **Spring MVC** Spring MVC是Spring框架的一部分,它提供了一个用于构建Web应用程序...

    开发者突击Java Web主流框架

    2. **Spring框架**:Spring是Java Web开发中最广泛使用的框架之一,它不仅提供了MVC框架,还包含依赖注入(DI)和面向切面编程(AOP)等功能,支持事务管理、数据访问、安全控制等。 3. **Struts框架**:Apache ...

    Java大礼包 深入知识

    理解如何配置servlet-mapping、filter、context-param等元素对于正确运行和调试应用至关重要。 "java_技术参考汇集_超值大礼包"和"ssh.ppt"可能包含了更广泛的Java技术知识点,比如Java基础语法、集合框架、多线程...

    Filter模式-2013-8-9

    在Java Web开发中,Filter模式尤其重要,因为它在Web应用程序中起到预处理请求和后处理响应的关键作用。本例将深入探讨Filter设计模式,以及如何将其与Struts2框架相结合。 首先,Filter模式的核心概念是过滤器链。...

Global site tag (gtag.js) - Google Analytics