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

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

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

服務器之家 - 編程語言 - Java教程 - Spring Boot 編寫Servlet、Filter、Listener、Interceptor的方法

Spring Boot 編寫Servlet、Filter、Listener、Interceptor的方法

2020-11-29 11:43何必如此沉默 Java教程

這篇文章給大家介紹了spring-boot中如何定義過濾器、監聽器和攔截器,對Spring Boot 編寫Servlet、Filter、Listener、Interceptor的相關知識感興趣的朋友一起看看吧

前言

在編寫過濾器、監聽器、攔截器之前我們需要在spring-boot啟動的類上加上注解@ServletComponentScan:

?
1
2
3
4
5
6
7
@SpringBootApplication
@ServletComponentScan
public class MySpringbootApplication {
  public static void main(String[] args) {
   SpringApplication.run(MySpringbootApplication.class, args);
  }
}

Servlet

spring-boot編寫過濾器和spring中差不多,直接看代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
@WebServlet(urlPatterns = "/serv")
public class MyServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    System.out.println("------------doget-------------");
    doPost(request, response);
  }
  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) {
    System.out.println("------------dopost-------------");
  }
}

其實也就是注解的不同而已:

?
1
@WebServlet(urlPatterns = "/serv")

過濾器(Filter

在spring-boot里編寫過濾器我們只需要實現javax.servlet.Filter

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@WebFilter(filterName = "myFilter", urlPatterns = "/*")
public class MyFilter implements Filter {
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
    System.out.println("初始化過濾器");
  }
  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    System.out.println("執行過濾器");
    filterChain.doFilter(servletRequest, servletResponse);
  }
  @Override
  public void destroy() {
    System.out.println("銷毀過濾器!");
  }
}

然后添加一個注解:

?
1
@WebFilter(filterName = "myFilter", urlPatterns = "/*")

監聽器 (Listener

在上面,看了下過濾器的使用。其實監聽器和攔截器就差不多了,直接上代碼:

?
1
2
3
4
5
6
7
8
9
10
11
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
  @Override
  public void sessionCreated(HttpSessionEvent httpSessionEvent) {
    System.out.println("session 被創建");
  }
  @Override
  public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
    System.out.println("session 被摧毀");
  }
}

我們發現只是注解發生了變化:

@WebListener

攔截器(Interceptor

攔截器大致和上面差不多,不過有一點點不同。我們知道在web開發中,可以使用過濾器和攔截器來過濾外部的web請求。但是攔截器提供了更加細致的控制功能。主要有:請求之前、請求之后渲染之前、渲染之后、請求全部結束之后這四個步驟的攔截。

這里面使用攔截器主要有三個步驟

自定義攔截器,實現org.springframework.web.servlet.HandlerInterceptor

自定義WebAppConfigurer,繼承WebMvcConfigurerAdapter

在自定義的WebAppConfigurer覆蓋父類方法addInterceptors(InterceptorRegistry registry),并在方法中添加自己定義的攔截器

?
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
public class MyInterceptor implements HandlerInterceptor{
  @Override
  public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
    System.out.println(MyInterceptor.class.getName()+" : 在請求之前調用");
    return true;
  }
  @Override
  public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    System.out.println(MyInterceptor.class.getName()+" :請求處理之后視圖渲染之前使用");
  }
  @Override
  public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    System.out.println(MyInterceptor.class.getName()+" :請視圖渲染之后使用");
  }
}
 
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    // 多個攔截器組成一個攔截器鏈
    // addPathPatterns 用于添加攔截規則
    // excludePathPatterns 用戶排除攔截
    registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
    registry.addInterceptor(new MyInterceptor2()).addPathPatterns("/**");
    super.addInterceptors(registry);
  }
}

以上就是關于在spring-boot中如何定義過濾器、監聽器和攔截器。關于他們的原理以及一些細節問題(如攔截器的攔截順序),就不詳述。有興趣的可以去網上搜索。

原文鏈接:http://blog.csdn.net/qq_31084201/article/details/74626667

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一级成人一区二区三区 | 亚洲av毛片久久久久 | 亚洲欧美日韩中文在线 | 久久国产一二三 | 久久精品国产亚洲7777小说 | www.54271.com| 欧美成人影院 | 日本视频在线播放 | 亚洲午夜网站 | 一级一片免费 | 毛片免费视频播放 | 国产又白又嫩又紧又爽18p | 国产精品一二三区在线观看 | 国产乱一区二区三区视频 | 羞羞视频入口 | 日本免费大片免费视频 | 精品久久久久久久久久久久久久 | 久久久成人一区二区免费影院 | 国产九色在线播放九色 | 一区二区三区四区免费看 | 亚洲成人福利在线 | 久久网一区二区 | 欧美激情天堂 | 天海翼四虎精品正在播放 | 免费午夜网站 | 亚洲精品午夜电影 | 中文国产在线视频 | 毛片免费看电影 | 久久久大片 | 欧美精品成人一区二区在线观看 | av在线免费播放 | 欧美成人精品不卡视频在线观看 | 免费观看三级毛片 | 在线中文字幕观看 | 正在播放91精 | 精品一区二区三区免费毛片爱 | 国产免费网站视频 | 羞羞色网站| 久久久久久三区 | 精品在线视频观看 | 日本不卡视频在线观看 |