<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 作用 Spring MVC 的處理器攔截器類似于 Servlet 開發中的過濾器 Filter,用于對處理器進行預處理和后處理。 用戶可以自己定義一些攔截器來實現特定的功能。 談到攔截器,還要向大家提一個詞——攔截器鏈(Interceptor Chain)。攔截器鏈就是將攔截器按一定的順 序聯結成一條鏈。在訪問被攔截的方法或字段時,攔截器鏈中的攔截器就會按其之前定義的順序被調用。 說到這里,可能大家腦海中有了一個疑問,這不是我們之前學的過濾器嗎?是的它和過濾器是有幾分相似,但是也有區別,接下來我們就來說說他們的區別: * 過濾器是servlet規范中的一部分,任何java web工程都可以使用。 * 攔截器是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。 * 過濾器在 url-pattern 中配置了/*之后,可以對所有要訪問的資源攔截。 * 攔截器它是只會攔截訪問的控制器方法,如果訪問的是 jsp,html,css,image 或者 js 是不會進行攔截的。 它也是 AOP 思想的具體應用。 我們要想自定義攔截器, 要求必須實現:HandlerInterceptor 接口。 # 自定義攔截器 ~~~ import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 自定義攔截器 */ public class MyInterceptor1 implements HandlerInterceptor{ /** * 預處理,controller方法執行前 * return true 放行,執行下一個攔截器,如果沒有,執行controller中的方法 * return false不放行 * @param request * @param response * @param handler * @return * @throws Exception */ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("MyInterceptor1執行了...前1111"); // request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response); return true; } /** * 后處理方法,controller方法執行后,success.jsp執行之前 * @param request * @param response * @param handler * @param modelAndView * @throws Exception */ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("MyInterceptor1執行了...后1111"); // request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response); } /** * success.jsp頁面執行后,該方法會執行 * @param request * @param response * @param handler * @param ex * @throws Exception */ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("MyInterceptor1執行了...最后1111"); } } ~~~ # 配置 springmvc下beans下 ~~~ <!-- 配置攔截器 --> <mvc:interceptors> <mvc:interceptor> <!-- 要攔截的具體方法 path="/**" 所有全部攔截--> <mvc:mapping path="/user/*"/> <!-- 不要攔截的方法 --> <!-- <mvc:exclude-mapping path="" />--> <!-- 配置攔截對象 --> <bean id="handlerInterceptorDemo1" class="com.jdxia.web.interceptor.HandlerInterceptorDemo1" /> </mvc:interceptor> </mvc:interceptors> ~~~ # 攔截器順序 springmvc的攔截器實現HandlerInterceptor接口后,會有三個抽象方法需要實現,分別為方法前執行preHandle,方法后postHandle,**頁面渲染后afterCompletion**。 1. 當倆個攔截器都實現放行操作時,順序為preHandle 1,preHandle 2,postHandle 2,postHandle 1,afterCompletion 2,afterCompletion 1 2. 當第一個攔截器preHandle返回false,也就是對其進行攔截時,第二個攔截器是完全不執行的,第一個攔截器只執行preHandle部分。 3. 當第一個攔截器preHandle返回true,第二個攔截器preHandle返回false,順序為preHandle 1,preHandle 2 ,afterCompletion 1 **總結:** * preHandle按攔截器定義順序調用 * postHandler按攔截器定義逆序調用 * afterCompletion按攔截器定義逆序調用 * postHandler在攔截器鏈內所有攔截器返成功調用 * afterCompletion只有preHandle返回true才調用
                  <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>

                              哎呀哎呀视频在线观看