一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot定義過濾器、監聽器、攔截器的方法

SpringBoot定義過濾器、監聽器、攔截器的方法

2020-09-13 15:45心碎落地的聲音 Java教程

本篇文章主要介紹了SpringBoot定義過濾器、監聽器、攔截器的方法,具有一定的參考價值,有興趣的可以了解一下。

一、自定義過濾器

創建一個過濾器,實現javax.servlet.Filter接口,并重寫其中的init、doFilter、destory方法。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.example.filter;
import java.io.IOException; 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
 * 實現javax.servlet.Filter,覆蓋其三個方法
 * @author Administrator
 *
 */
@WebFilter(filterName="customFilter",urlPatterns="/*")
public class CustomFilter implements Filter{
 
  @Override
  public void destroy() {
    System.out.println("CustomFilter過濾器銷毀");
     
  }
 
  @Override
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws IOException, ServletException {
    System.out.println("CustomFilter指定過濾器操作......");
    //執行操作后必須doFilter
    chain.doFilter(request, response);
  }
 
  @Override
  public void init(FilterConfig arg0) throws ServletException {
    System.out.println("CustomFilter初始化......");
  }    
}

二、自定義監聽器

創建一個過濾器,實現ServletContextListener接口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.example.listener; 
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
 
/**
 * 實現ServletContextListener,覆蓋其兩個方法
 * @author Administrator
 *
 */
@WebListener
public class CustomListener implements ServletContextListener{
 
  @Override
  public void contextDestroyed(ServletContextEvent servletContext) {
    System.out.println("servletContext銷毀......");
     
  }
 
  @Override
  public void contextInitialized(ServletContextEvent servletContext) {
    System.out.println("servletContext初始化......");
  }
 
}

創建一個session監聽器,監聽session的創建和銷毀

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.example.listener; 
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
 
/**
 * 實現HttpSessionListener接口,監視session的動態
 * @author Administrator
 *
 */
@WebListener
public class SessionListener implements HttpSessionListener{
 
  @Override
  public void sessionCreated(HttpSessionEvent session) {
    System.out.println("session創建成功......");
     
  }
 
  @Override
  public void sessionDestroyed(HttpSessionEvent session) {
    System.out.println("session銷毀......");
     
  }
 
}

三、自定義攔截器

步驟:

1、創建自己的攔截器實現HandlerInterceptor接口

2、創建自己的攔截器鏈,繼承WebMvcConfigurerAdapter類,重寫addInterceptors方法。

3、實例化自己的攔截器,并加入到攔截器鏈中。

攔截器一:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.example.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 CustomInterceptor implements HandlerInterceptor {
 
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object,
      Exception exception) throws Exception {
    //在整個請求結束之后被調用,也就是在DispatcherServlet 渲染了對應的視圖之后執行(主要是用于進行資源清理工作)
    System.out.println("3. 整個請求結束之后被調用......CustomInterceptor1......");
  }
 
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view)
      throws Exception {
    // 請求處理之后進行調用,但是在視圖被渲染之前
    System.out.println("2. 請求處理之后進行調用,但是在視圖被渲染之前......CustomInterceptor1......");
  }
 
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
    // 在請求處理之前進行調用
    System.out.println("1. 在請求處理之前進行調用......CustomInterceptor1......");
    // 只有返回true才會繼續向下執行,返回false取消當前請求
    return true;
  }
 
}

攔截器二:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.example.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 CustomInterceptor2 implements HandlerInterceptor {
 
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object,
      Exception exception) throws Exception {
    //在整個請求結束之后被調用,也就是在DispatcherServlet 渲染了對應的視圖之后執行(主要是用于進行資源清理工作)
    System.out.println("3. 整個請求結束之后被調用......CustomInterceptor2......");
  }
 
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view)
      throws Exception {
    // 請求處理之后進行調用,但是在視圖被渲染之前
    System.out.println("2. 請求處理之后進行調用,但是在視圖被渲染之前......CustomInterceptor2......");
  }
 
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
    // 在請求處理之前進行調用
    System.out.println("1. 在請求處理之前進行調用......CustomInterceptor2......");
    // 只有返回true才會繼續向下執行,返回false取消當前請求
    return true;
  }
 
}

自定義攔截器鏈并加入自定義的攔截器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.example.adapter;
 
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 
import com.example.Interceptor.CustomInterceptor;
import com.example.Interceptor.CustomInterceptor2;
 
/**
 * 繼承WebMvcConfigurerAdapter,復寫addInterceptors方法
 * @author Administrator
 *
 */
@Configuration
public class WebAdapter extends WebMvcConfigurerAdapter{
 
  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    //眾多的攔截器組成了一個攔截器鏈
    /**
     * 主要方法說明:
     * addPathPatterns 用于添加攔截規則
     * excludePathPatterns 用戶排除攔截
     */
    registry.addInterceptor(new CustomInterceptor()).addPathPatterns("/*");
    registry.addInterceptor(new CustomInterceptor2()).addPathPatterns("/*");
    super.addInterceptors(registry);
  }
}

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/linabc123000/article/details/69245148

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 公交车强校花系列小说 | 欧美日韩高清完整版在线观看免费 | 欧美日韩国产在线一区 | 刺客女仆 | caoporen在线视频入口 | 韩国三级2020 | 波多野结衣在线看 | 狠狠干快播 | 美女被吸乳老师羞羞漫画 | 黑人女性猛交xxxxxⅹxx | 无罩看奶禁18 | 美女主播免费观看 | 国模一区二区三区视频一 | 亚洲精品www久久久久久久软件 | 国产亚洲精品美女久久久 | 四虎国产免费 | 暖暖免费高清完整版观看日本 | 黑人巨荃大战乌克兰美女 | 欧美vpswindows | 国产精品福利 | 成人国产在线观看 | 美女做又爽又黄又猛 | 日产精品一二三四区国产 | 五月天精品视频播放在线观看 | 青青国产成人久久91网 | 97色蜜桃| 人成午夜免费大片在线观看 | 日本无卡码一区二区三区 | 日本在线看 | 欧美国产合集在线视频 | 国产这里有精品 | 99ri在线精品视频 | 韩国美女被的免费视频 | 色老板视频在线观看 | 日韩视频免费一区二区三区 | 奇米影视小说 | 成人免费福利网站在线看 | 精品成人一区二区三区免费视频 | 青青热久麻豆精品视频在线观看 | japanese人妖xvideos | 色欧美亚洲 |