激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
442
主站蜘蛛池模板: 毛片免费观看视频 | 欧美亚洲国产一区二区三区 | 中文字幕在线看第二 | 久草在线免费资源站 | 久久综合九色 | 色999中文字幕 | 一区二区三区日韩精品 | 免费在线性爱视频 | 亚洲最新无码中文字幕久久 | 国产成视频在线观看 | 国产肥熟| 成人毛片在线免费看 | 男人的天堂毛片 | 国产成人精品一区在线播放 | 国产日产精品久久久久快鸭 | av在线高清观看 | 黑色丝袜美美女被躁视频 | 91久久国产综合久久91猫猫 | 一级免费a| 国内精品视频饥渴少妇在线播放 | 在线观看网址av | 精品国产91久久久久久久 | 亚洲日韩精品欧美一区二区 | 久久新网址 | 久久精品国产亚洲一区二区 | 午夜色视频在线观看 | 久久91精品 | 午夜精品成人 | 乱淫67194 | 日本在线观看高清完整版 | 老女人碰碰在线碰碰视频 | 国产成人强伦免费视频网站 | 国产午夜小视频 | 特级黄毛片 | 免费观看一级淫片 | 日韩大片在线永久观看视频网站免费 | 99久久久国产精品露出 | 久久美女色视频 | chengrenzaixian| 国产成人高潮免费观看精品 | 一级@片|