国产探花免费观看_亚洲丰满少妇自慰呻吟_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屬性注入攔截器了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漳平市| 桐梓县| 湘乡市| 乌鲁木齐县| 紫阳县| 无为县| 盐亭县| 梁平县| 南召县| 仪征市| 大化| 嘉黎县| 故城县| 克东县| 措美县| 柳林县| 洛宁县| 兖州市| 海晏县| 尼玛县| 开封市| 汾阳市| 稻城县| 邳州市| 孟连| 成武县| 南宫市| 周至县| 呼和浩特市| 嘉鱼县| 巩留县| 尼勒克县| 阿拉善盟| 咸丰县| 肇源县| 金昌市| 松滋市| 宝坻区| 巨野县| 洪泽县| 柘荣县|