<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 概述 SpringMVC的處理器攔截器類似于servlet開發中的顧慮器filter,用于對處理器進行預處理和后處理.用戶可以自定義一些攔截器來實現特定的功能.談到攔截器,還要向大家提一個詞-攔截器鏈(Interceptor Chain).攔截器鏈就是將攔截器按一定的順序聯結成一條鏈.在訪問被攔截的方法或字段時,攔截鏈中的攔截器就會按其之前定義的順序被調用. ## 區別 過濾器:是servlet規范中的一部分,任何java web工程師都可以使用. 攔截器:是springMVC框架自己的,只有使用springMVC框架才能用. 過濾器:在url-pattern中配置了/*之后,可以對所有要訪問的資源攔截. 過濾器它只會攔截訪問的控制器方法,如果是JSP,HTML,css,image或者JS是不會進行攔截的. 它是AOP思想的具體應用.我們要想自定義攔截器,要求必須實現HandlerInterceptor接口. ## 步驟 1. 編寫攔截器類,實現HandlerInterceptor接口. 2. 配置攔截器. ## 配置 ~~~ <!--配置攔截器--> <mvc:interceptors> <mvc:interceptor> <!--要攔截的具體方法--> <mvc:mapping path="/*"/> <!--不要攔截的方法.配置一個就行了--> <!--<mvc:exclude-mapping path=""></mvc:exclude-mapping>--> <!--指定攔截器--> <bean class="com.like.interceptor.MyInterceptor1"/> </mvc:interceptor> </mvc:interceptors> ~~~ ## 預處理 ~~~ package com.like.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor1 implements HandlerInterceptor { //預處理.return true是放行.如果return false就是不放行 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //請求轉發,這樣是不會走到控制器中的 request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request, response); return false; //return false不會往下面走了 } } ~~~ ## 后處理1 ~~~ //controller方法執行后,success.jsp頁面執行前 @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("后處理"); //雖然進行請求轉發了也跳轉到error.jsp頁面了.但是success.jsp頁面的內容也是會執行的.但是不顯示 request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request, response); } ~~~ ## 后處理2 ~~~ //success.jsp頁面執行后,該方法會性質 @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("hello"); } ~~~ ## 攔截器鏈 ~~~ <!--配置攔截器--> <mvc:interceptors> <mvc:interceptor> <!--要攔截的具體方法--> <mvc:mapping path="/*"/> <!--不要攔截的方法.配置一個就行了--> <!--<mvc:exclude-mapping path=""></mvc:exclude-mapping>--> <!--指定攔截器--> <bean class="com.like.interceptor.MyInterceptor1"/> </mvc:interceptor> <mvc:interceptor> <!--要攔截的具體方法--> <mvc:mapping path="/*"/> <!--不要攔截的方法.配置一個就行了--> <!--<mvc:exclude-mapping path=""></mvc:exclude-mapping>--> <!--指定攔截器--> <bean class="com.like.interceptor.MyInterceptor2"/> </mvc:interceptor> </mvc:interceptors> ~~~ ~~~ package com.like.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor1 implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("MyInterceptor1"); return true; } } ~~~ ~~~ package com.like.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor2 implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("MyInterceptor2"); return false; } } ~~~ 結果: ``` MyInterceptor1 MyInterceptor2 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看