国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

spring MVC攔截器

2019-11-14 20:51:34
字體:
來源:轉載
供稿:網友
sPRing MVC攔截器

Spring為我們提供了:

org.springframework.web.servlet.HandlerInterceptor接口,

org.springframework.web.servlet.handler.HandlerInterceptorAdapter適配器,

實現這個接口或繼承此類,可以非常方便的實現自己的攔截器。

例如:

public class HelloWorldInterceptor implements HandlerInterceptor  {  @Override  public boolean preHandle(HttpServletRequest request,          HttpServletResponse response, Object handler) throws Exception {            System.out.println("Pre-handle");            return false;  }    @Override  public void postHandle(HttpServletRequest request,          HttpServletResponse response, Object handler,          ModelAndView modelAndView) throws Exception {      System.out.println("Post-handle");  }    @Override  public void afterCompletion(HttpServletRequest request,          HttpServletResponse response, Object handler, Exception ex)          throws Exception {      System.out.println("After completion handle");  }  

有以下三個方法:

Action之前執行:

public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler);生成視圖之前執行

public void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler,ModelAndView modelAndView);最后執行,可用于釋放資源

public void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)分別實現預處理、后處理(調用了Service并返回ModelAndView,但未進行頁面渲染)、返回處理(已經渲染了頁面)

在preHandle中,可以進行編碼、安全控制等處理;

在postHandle中,有機會修改ModelAndView;

在afterCompletion中,可以根據ex是否為null判斷是否發生了異常,進行日志記錄。

參數中的Object handler是下一個攔截器。

在spring MVC的配置文件中配置有三種方法:

方案一,(近似)總攔截器,攔截所有url

  如果是REST風格的URL,靜態資源也會被攔截。

<mvc:interceptors>      <bean class="com.app.mvc.MyInteceptor" />  </mvc:interceptors>  

方案二, 攔截匹配的URL。

  如果是REST風格的URL,靜態資源也會被攔截。

<mvc:interceptors >      <mvc:interceptor>            <mvc:mapping path="/user/*" /> <!-- /user/*  -->            <bean class="com.mvc.MyInteceptor"></bean>        </mvc:interceptor>    </mvc:interceptors>    

方案三,HandlerMappint上的攔截器。

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">        <property name="interceptors">            <list>                <bean class="com.mvc.MyInteceptor"></bean>           </list>        </property>       </bean>  

如果使用了<mvc:annotation-driven />,它會自動注冊DefaultAnnotationHandlerMapping 與AnnotationMethodHandlerAdapter 這兩個bean,所以就沒有機會再給它注入interceptors屬性,就無法指定攔截器。

我們可以通過人工配置上面的兩個Bean,不使用<mvc:annotation-driven />,就可以給interceptors屬性注入攔截器了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潼关县| 潮州市| 全州县| 东丽区| 左权县| 怀安县| 丰都县| 芜湖县| 成武县| 夏邑县| 泾阳县| 马山县| 县级市| 沂源县| 沭阳县| 河南省| 涞水县| 平凉市| 开封市| 英吉沙县| 龙门县| 崇仁县| 南安市| 车致| 资源县| 周至县| 南和县| 乡宁县| 凤翔县| 陇川县| 宁蒗| 丽水市| 乌拉特中旗| 昌乐县| 桐乡市| 搜索| 武川县| 宁化县| 陆川县| 南丹县| 华坪县|