Java Web高级特性之(三)拦截器

原创 2015年04月25日 14:58:11

 拦截器在在流行的开源框架中很常见,依赖的技术就是Java的动态代理。

用在面向切面编程,动态代理就是拦截器的简单实现。


AOP(Aspect Oriented Programming),也就是面向切面编程的技术。AOP基于IoC基础,是对OOP的有益补充。

拦截器(也称拦截机)

    拦截机 (Interceptor), 是 AOP (Aspect-Oriented Programming) 的另一种叫法。AOP本身是一门语言,只不过我们使用的是基于JAVA的集成到Spring 中的 SpringAOP。


 

拦截器是Spring Web MVC或者Struts特有的功能,或者是基于AOP原理自己实现的拦截器,并不是servlet规范中所特有的。


本文主要以Spring MVC的拦截器为例进行讲解。

使用SpringMVC拦截器和Struts2一样,Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口


HandlerInterceptor接口的代码如下:

public interface HandlerInterceptor {

	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;

}

下面对代码中的三个方法进行解释。

preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求request进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要再调用其他的组件去处理请求,则返回false。

postHandle():这个方法在业务处理器处理完请求后,但是DispatcherServlet向客户端返回请求前被调用,在该方法中对用户请求request进行处理。

afterCompletion():这个方法在DispatcherServlet完全处理完请求后被调用,可以在该方法中进行一些资源清理的操作。


提示:推荐能使用servlet规范中的过滤器Filter实现的功能就用Filter实现,因为HandlerInteceptor只有在Spring Web MVC环境下才能使用,因此Filter是最通用的、最先应该使用的。如登录这种拦截器最好使用Filter来实现。

更详细用法可参考开涛博客:http://jinnianshilongnian.iteye.com/blog/1670856

java web 过滤器跟拦截器的区别和使用

今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深...

java web 过滤器跟拦截器的区别和使用

java web 过滤器和拦截器的区别和使用 1、首先要明确什么是拦截器、什么是过滤器    1.1 什么是拦截器:      拦截器,在AOP(Aspect-Oriented Progra...
  • ccecwg
  • ccecwg
  • 2015年01月12日 17:29
  • 278

Java Web 中 过滤器与拦截器的区别

说明: 过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤...

java web 过滤器跟拦截器的区别和使用

1、首先要明确什么是拦截器、什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然...

java web 过滤器跟拦截器的区别和使用

1、首先要明确什么是拦截器、什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在...

java WEB 登陆拦截器

package com.community.filter; import java.io.IOException; import java.io.PrintWriter; import java.u...

java web 过滤器跟拦截器的区别和使用

1、首先要明确什么是拦截器、什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然...

java web 过滤器跟拦截器的区别

拦截器:拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。 在Webw...

Java Web 中 过滤器与拦截器的区别

过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u...
  • t4904
  • t4904
  • 2015年06月05日 10:16
  • 333

Java Web高级特性之(二)监听器

监听器的概念 web应用当中监听器是什么: web应用服务器—>监听器Session 定义:监听器是Servlet中的一种特殊类,用于监听ServletContext、HttpSession和S...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Web高级特性之(三)拦截器
举报原因:
原因补充:

(最多只允许输入30个字)