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

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - Java教程 - SpringBoot定義過濾器、監(jiān)聽器、攔截器的方法

SpringBoot定義過濾器、監(jiān)聽器、攔截器的方法

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

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

一、自定義過濾器

創(chuàng)建一個過濾器,實現(xiàn)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;
/**
 * 實現(xiàn)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指定過濾器操作......");
    //執(zhí)行操作后必須doFilter
    chain.doFilter(request, response);
  }
 
  @Override
  public void init(FilterConfig arg0) throws ServletException {
    System.out.println("CustomFilter初始化......");
  }    
}

二、自定義監(jiān)聽器

創(chuàng)建一個過濾器,實現(xiàn)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;
 
/**
 * 實現(xiàn)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初始化......");
  }
 
}

創(chuàng)建一個session監(jiān)聽器,監(jiān)聽session的創(chuàng)建和銷毀

?
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;
 
/**
 * 實現(xiàn)HttpSessionListener接口,監(jiān)視session的動態(tài)
 * @author Administrator
 *
 */
@WebListener
public class SessionListener implements HttpSessionListener{
 
  @Override
  public void sessionCreated(HttpSessionEvent session) {
    System.out.println("session創(chuàng)建成功......");
     
  }
 
  @Override
  public void sessionDestroyed(HttpSessionEvent session) {
    System.out.println("session銷毀......");
     
  }
 
}

三、自定義攔截器

步驟:

1、創(chuàng)建自己的攔截器實現(xiàn)HandlerInterceptor接口

2、創(chuàng)建自己的攔截器鏈,繼承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 {
    //在整個請求結(jié)束之后被調(diào)用,也就是在DispatcherServlet 渲染了對應(yīng)的視圖之后執(zhí)行(主要是用于進(jìn)行資源清理工作)
    System.out.println("3. 整個請求結(jié)束之后被調(diào)用......CustomInterceptor1......");
  }
 
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view)
      throws Exception {
    // 請求處理之后進(jìn)行調(diào)用,但是在視圖被渲染之前
    System.out.println("2. 請求處理之后進(jìn)行調(diào)用,但是在視圖被渲染之前......CustomInterceptor1......");
  }
 
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
    // 在請求處理之前進(jìn)行調(diào)用
    System.out.println("1. 在請求處理之前進(jìn)行調(diào)用......CustomInterceptor1......");
    // 只有返回true才會繼續(xù)向下執(zhí)行,返回false取消當(dāng)前請求
    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 {
    //在整個請求結(jié)束之后被調(diào)用,也就是在DispatcherServlet 渲染了對應(yīng)的視圖之后執(zhí)行(主要是用于進(jìn)行資源清理工作)
    System.out.println("3. 整個請求結(jié)束之后被調(diào)用......CustomInterceptor2......");
  }
 
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view)
      throws Exception {
    // 請求處理之后進(jìn)行調(diào)用,但是在視圖被渲染之前
    System.out.println("2. 請求處理之后進(jìn)行調(diào)用,但是在視圖被渲染之前......CustomInterceptor2......");
  }
 
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
    // 在請求處理之前進(jìn)行調(diào)用
    System.out.println("1. 在請求處理之前進(jìn)行調(diào)用......CustomInterceptor2......");
    // 只有返回true才會繼續(xù)向下執(zhí)行,返回false取消當(dāng)前請求
    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,復(fù)寫addInterceptors方法
 * @author Administrator
 *
 */
@Configuration
public class WebAdapter extends WebMvcConfigurerAdapter{
 
  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    //眾多的攔截器組成了一個攔截器鏈
    /**
     * 主要方法說明:
     * addPathPatterns 用于添加攔截規(guī)則
     * excludePathPatterns 用戶排除攔截
     */
    registry.addInterceptor(new CustomInterceptor()).addPathPatterns("/*");
    registry.addInterceptor(new CustomInterceptor2()).addPathPatterns("/*");
    super.addInterceptors(registry);
  }
}

 以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 五月色综合婷婷综合俺来也 | 青草娱乐极品免费视频 | 蛮荒的童话未删减在线观看 | 花唇肿胀无法合拢双性 | 五月天国产视频 | 免费观看在线永久免费xx视频 | 亚欧洲乱码视频一二三区 | 免费刷10000名片赞网站 | 欧美日韩国产亚洲一区二区 | 国产欧美日韩视频在线观看一区二区 | 成人伊人亚洲人综合网站222 | 青青热久久综合网伊人 | 91视频国产自拍 | 四虎永久免费在线观看 | 四虎永久免费地址在线网站 | 免费av在线视频 | 视频一区久久 | 免费视频左左视频 | 日韩欧美一区二区三区免费观看 | 极品丝袜老师h系列全文阅读 | 无限观看社区在线视频 | 69午夜影院 | 亚洲欧美韩国日产综合在线 | 2021麻豆剧果冻传媒入口永久 | 99热.com | 精品在线91 | 荡女淫春2古装 | 欧美老少 | 水野朝阳厨房系列在线观看 | 91精品乱码一区二区三区 | 99热在线这里只有精品 | 久久青草费线频观看国产 | 精品国产美女福利在线 | 欧美区在线 | 末代皇帝无删减版在线观看 | 非洲黑人bbwbbwbbw | 久久这里只有精品无码3D | 欧美一区二区三区高清不卡tv | 亚洲免费在线观看 | 大片毛片女女女女女女女 | 4438成人网|