java攔截器

java三大器之一 -攔截器

攔截器的定義

java裏的攔截器是動態攔截action調用的對象。提供一種機制可以定義在action執行的前後執行的代碼,也可以action執行前阻止其執行,同時提供了一種可以提取action中可重用部分的方式。在aop中攔截器用在某個方法或字段被訪問之前,在攔截後在其之前或之後執行一些操作。

 

攔截器實現

定義一個java類,實現Interceptor接口,或者繼承抽象類AbstractInterceptor

在配置文件中註冊攔截器。

在需要action中引用上述定義的攔截器,如果定義爲默認攔截器,不加特殊說明,所有action都會被這個攔截器攔截。

 

 

攔截器與框架的結合

1、攔截器和spring

在spring框架中,通過實現HanderInterceptorAdaper抽象類來實現攔截器,HanderInterceptorAdaper繼承了抽象接口HanderInterceptorAdaper。

HandlerInterceptorAdaper代碼

 

package org.springframework.web.servlet.handler;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import org.springframework.web.servlet.HandlerInterceptor;  
import org.springframework.web.servlet.ModelAndView;  
public abstract class HandlerInterceptorAdapter implements HandlerInterceptor{  
    // 在業務處理器處理請求之前被調用  
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception{  
        return true;  
    }  
    // 在業務處理器處理請求完成之後,生成視圖之前執行  
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)  
      throws Exception{  
    }  
    // 在DispatcherServlet完全處理完請求之後被調用,可用於清理資源  
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)  
      throws Exception{  
    }  
}

攔截器的配置 <mvc:interceptors>
        <mvc:interceptor>
            <!-- 攔截所有的請求,這個必須寫在前面,也就是寫在【不攔截】的上面 -->
            <mvc:mapping path="/**" />
            <!-- 但是排除下面這些,也就是不攔截請求 -->
            <mvc:exclude-mapping path="/login.html" />
            <mvc:exclude-mapping path="/account/login.do" />
            <mvc:exclude-mapping path="/account/regist.do" />
            <bean class="com.msym.cloudnote.interceptors.SessionInterceptor" />
        </mvc:interceptor>

</mvc:interceptors>

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章