这篇文章主要介绍了拦截器的简单实现,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
 
什么是拦截器?
 
拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。用户可以自己定义一些拦截器来实现特定的功能。
 
过滤器和拦截器的区别
 
过滤器是 servlet 规范中的一部分,任何 java web 工程都可以使用。 拦截器是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。 过滤器在 url-pattern 中配置了/*之后,可以对所有要访问的资源拦截。 拦截器它是只会拦截访问的控制器方法,如果访问的是 jsp,html,css,image 或者 js 是不会进行拦 截的。
 
第一步:编写一个普通类实现 HandlerInterceptor 接口
 
public class MyInterceptor1 implements HandlerInterceptor
{
    
    public boolean 
preHandle(HttpServletRequest request
, HttpServletResponse response
, Object handler
) throws Exception 
{
        
        
		if(request
.getRequestURI().indexOf("login.action")>=0){
			return true; 
		}
		HttpSession session 
= request
.getSession();
		
		if(session
.getAttribute("user")!=null
){
			return true; 
		}
		
		request
.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request
, response
);
		return false;
    }
    
    public void 
postHandle(HttpServletRequest request
, HttpServletResponse response
, Object handler
, ModelAndView modelAndView
) throws Exception 
{
        System
.out
.println("MyInterceptor1执行了...后1111");
        
    }
    
    public void 
afterCompletion(HttpServletRequest request
, HttpServletResponse response
, Object handler
, Exception ex
) throws Exception 
{
        System
.out
.println("MyInterceptor1执行了...最后1111");
    }
}
 
第二步:配置拦截器
 
 
<mvc:interceptors>
    <!--配置拦截器-->
    <mvc:interceptor>
        <!--要拦截的具体的方法-->
        <mvc:mapping path="/user/*"/>
        <!--不要拦截的方法
        <mvc:exclude-mapping path=""/>
        -->
        <!--配置拦截器对象-->
        <bean class="com.gzl.interceptor.MyInterceptor1" />
    </mvc:interceptor>
</mvc:interceptors>
 
注意
 
 
并且程序当中是允许配置多个
 
 
<mvc:interceptors>
    <!--配置拦截器-->
    <mvc:interceptor>
        <!--要拦截的具体的方法-->
        <mvc:mapping path="/user/*"/>
        <!--不要拦截的方法
        <mvc:exclude-mapping path=""/>
        -->
        <!--配置拦截器对象-->
        <bean class="com.gzl.interceptor.MyInterceptor1" />
    </mvc:interceptor>
    <!--配置第二个拦截器-->
    <mvc:interceptor>
        <!--要拦截的具体的方法-->
        <mvc:mapping path="/**"/>
        <!--不要拦截的方法
        <mvc:exclude-mapping path=""/>
        -->
        <!--配置拦截器对象-->
        <bean class="com.gzl.interceptor.MyInterceptor2" />
    </mvc:interceptor>
</mvc:interceptors>