SpringBoot如何註冊Servlet、Filter、Listener

技術小能手發表於2018-10-26

在Servlet 3.0之前都是使用web.xml檔案進行配置,需要增加Servlet、Filter或者Listener都需要在web.xml增加相應的配置。Servlet 3.0之後可以使用註解進行配置Servlet、Filter或者Listener;springboot也提供了使用程式碼進行註冊Servlet、Filter或者Listener。所以springboot有兩種方式進行Servlet、Filter或者Listener配置。

方式一:使用註解

(1)註冊Servlet

       使用@WebServlet註冊,需要在Servlet類上使用該註解即可,但是需要在@Configuration類中使用Spring Boot提供的註解@ServletComponentScan掃描註冊相應的Servlet。

(2)  註冊Filter

        使用@WebFilter註冊,需要在Filter類上使用該註解即可,但是需要在@Configuration類中使用Spring Boot提供的註解@ServletComponentScan掃描註冊相應的Filter。

(3)註冊Listener

         使用@WebListener註冊,需要在Filter類上使用該註解即可,但是需要在@Configuration類中使用Spring Boot提供的註解@ServletComponentScan掃描註冊相應的Listener。

方式二:使用spring提供的方式

(1)註冊Servlet

       使用ServletRegistrationBean註冊只需要在@Configuration類中加入類似以下的程式碼

@Bean
public ServletRegistrationBean regServlet() {
        ServletRegistrationBean userServlet= new ServletRegistrationBean();
        userServlet.addUrlMappings("/servlet");
        userServlet.setServlet(new UserServlet());
        return userServlet;

}

(2)  註冊Filter

        使用FilterRegistrationBean註冊Filter,只需要在@Configuration類中加入類似以下的程式碼:

@Bean
    public FilterRegistrationBean regFilter() {
        FilterRegistrationBean userFilter = new FilterRegistrationBean();
        userFilter .addUrlPatterns("/*");
        userFilter .setFilter(new UserFilter ());
        return userFilter ;

}

(3)註冊Listener 

        使用ServletListenerRegistrationBean註冊Listener只需要在@Configuration類中加入類似以下的程式碼:

@Bean
    public ServletListenerRegistrationBean<LoginSessionListener> regServletListener() {
        ServletListenerRegistrationBean<LoginSessionListener> loginSessionListener= new ServletListenerRegistrationBean<LoginSessionListener>();
        loginSessionListener.setListener(new LoginSessionListener());
        return loginSessionListener;

}

本文作者: java樂園

本文來自雲棲社群合作伙伴“JAVA樂園”,瞭解相關資訊可以關注“JAVA樂園


相關文章