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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Spring MVC 攔截器示例 – XML 和 Java 注解配置 > 原文: [https://howtodoinjava.com/spring-core/spring-mvc-interceptor-example/](https://howtodoinjava.com/spring-core/spring-mvc-interceptor-example/) 在本[ Spring 教程](https://howtodoinjava.com/java-spring-framework-tutorials/)中,我們將學習在 [spring mvc](https://howtodoinjava.com/spring-mvc-tutorial/) 應用程序中使用 spring mvc 攔截器。 本教程非常簡短,僅關注 **Spring 攔截器配置**和用法。 眾所周知,攔截器是特殊的 Web 編程結構,每次發出某些預先配置的 Web 請求時都會被調用。 由于它們的重要性,它們始終是產品生命周期中早期設計的最重要和最基本的功能部分。 攔截器通常在將其移交給控制器處理器方法之前進行一些處理。 ## 1\. 創建 Spring MVC 攔截器 #### 1.1. 通過實現`HandlerInterceptor`的 Spring MVC 攔截器 `HandlerInterceptor`接口定義了 3 種方法。 1. `preHandle(request, response, handler)` – 用于在移交給處理器方法之前攔截請求。 這里的`handler`是選擇的用于處理請求的處理器對象。 2. `postHandler(request, response, handler, modelAndView)` – 用于在處理器完成請求處理后攔截請求,但`DispatcherServlet`尚未呈現視圖。 3. `afterCompletion(request, response, handler, exception)` – 處理器執行完成并且視圖也呈現后,將調用它。 `HandlerInterceptor 示例` ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class DemoInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("Inside pre handle"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("Inside post handle"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception) throws Exception { System.out.println("Inside after completion"); } } ``` #### 1.2. 通過擴展`HandlerInterceptorAdapter`的 Spring 攔截器 [`HandlerInterceptorAdapter`](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/handler/HandlerInterceptorAdapter.html)是`HandlerInterceptor`接口的抽象適配器類。 它可以幫助我們僅實現所需的前置或后置處理器方法。 我們沒有被迫實現所有方法。 此抽象類中方法的所有默認實現均為“空”。 `HandlerInterceptorAdapter 示例` ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.ModelAndView; public class DemoInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("Inside pre handle"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("Inside post handle"); } } ``` ## 2\. Spring 攔截器示例 #### 2.1. Spring Web Maven 依賴項 添加 [Spring 5](https://howtodoinjava.com/spring-5-tutorial/) Web 依賴關系以創建 Spring MVC 應用程序。 ```java <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.0.6.RELEASE</version> </dependency> ``` #### 2.2. 編寫 Spring 攔截器 ```java package com.howtodoinjava.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class DemoInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("Inside pre handle"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("Inside post handle"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception) throws Exception { System.out.println("Inside after completion"); } } ``` #### 2.3. 在 bean 配置中配置 spring 攔截器 ##### 2.3.1. Spring 攔截器 XML 配置 XML 配置有助于添加將在其上調用攔截器的**路徑模式**。 另外,我們可以將攔截器配置為對所有 Web 請求都調用。 ```java <!-- Configures Interceptors --> <mvc:interceptors> <!-- This XML will intercept all URIs --> <bean class="com.howtodoinjava.interceptor.DemoInterceptor"></bean> <!-- This XML will apply interceptor to only configured URIs --> <!-- <mvc:interceptor> <mvc:mapping path="/users"></mvc:mapping> <bean class="com.howtodoinjava.interceptor.DemoInterceptor"></bean> <mvc:interceptor> --> </mvc:interceptors> ``` ##### 2.3.2. Spring 攔截器 Java 配置 ```java @EnableWebMvc @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Bean DemoInterceptor demoInterceptor() { return new DemoInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(demoInterceptor()); } } ``` #### 2.4. 示例 現在,如果我們啟動服務器并訪問 URL:`http://localhost:8080/firstSpringApplication/users`,我們將在控制臺輸出中看到在攔截器方法中編寫的語句。 下載給定的源代碼以使用它,并更詳細地了解 Spring MVC 攔截器。 [下載源碼](https://drive.google.com/file/d/0B7yo2HclmjI4amh6cEhvblBtQjg/view?usp=drive_web) 學習愉快!
                  <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>

                              哎呀哎呀视频在线观看