springboot自學之路-16(springboot註冊servlet組件)

springboot註冊servlet組件有2種方式:

目錄

1.通過註解直接註冊

2.通過組件註冊器進行註冊


1.通過註解直接註冊

一、啓動類添加 @ServletComponentScan 可以掃描到servlet組件

package com.example._06servlet;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

/**
 * @Package: com.example._06servlet
 * @ClassName: AppConfig
 * @Description: <p>Description: </p>
 * @author: zq
 * @since: 2020/5/5 17:33
 * @version: 1.0
 * @Copyright: 2020 zq. All rights reserved.
 */
@SpringBootApplication
@ServletComponentScan
public class AppConfig {

    public static void main(String[] args) {

        SpringApplication.run(AppConfig.class, args);

    }

}

二、添加測試servlet類:TestServlet

package com.example._06servlet;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import java.io.IOException;

/**
 * @Package: com.example._06servlet
 * @ClassName: TestServlet
 * @Description: <p>Description: </p>
 * @author: zq
 * @since: 2020/5/5 17:31
 * @version: 1.0
 * @Copyright: 2020 zq. All rights reserved.
 */
@WebServlet(urlPatterns = "/testServlet")
public class TestServlet extends HttpServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException,
            IOException {

        System.out.println("=============TestServlet=============");
    }
}

三、驗證:訪問http://localhost:8084/citic/testServlet

四、添加測試filter的類:TestFilter

package com.example._06servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @Package: com.example._06servlet
 * @ClassName: TestFilter
 * @Description: <p>Description: </p>
 * @author: zq
 * @since: 2020/5/5 17:35
 * @version: 1.0
 * @Copyright: 2020 zq. All rights reserved.
 */
@WebFilter(urlPatterns = "/*")
public class TestFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("======================TestFilter======================");
        filterChain.doFilter(servletRequest, servletResponse);

    }

    @Override
    public void destroy() {

    }
}

五、測試驗證:http://localhost:8084/citic/testServlet

六、添加測試listener的類:TestListener

package com.example._06servlet;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

/**
 * @Package: com.example._06servlet
 * @ClassName: TestListener
 * @Description: <p>Description: </p>
 * @author: zq
 * @since: 2020/5/5 17:38
 * @version: 1.0
 * @Copyright: 2020 zq. All rights reserved.
 */
@WebListener
public class TestListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {

        System.out.println("==================啓動了==================");

    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

        System.out.println("==================關閉了==================");

    }

}

七、驗證測試:重新啓動

2.通過組件註冊器進行註冊

一、啓動類

package com.example._07servlet2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import java.util.Arrays;

/**
 * @Package: com.example._06servlet
 * @ClassName: AppConfig
 * @Description: <p>Description: </p>
 * @author: zq
 * @since: 2020/5/5 17:33
 * @version: 1.0
 * @Copyright: 2020 zq. All rights reserved.
 */
@SpringBootApplication
//@ServletComponentScan
public class AppConfig {

    //通過註冊器註冊servlet
    @Bean
    public ServletRegistrationBean testServlet() {

        ServletRegistrationBean bean = new ServletRegistrationBean();
        bean.setServlet(new TestServlet());
        bean.setUrlMappings(Arrays.asList("/testServlet"));
        return bean;

    }

    public static void main(String[] args) {

        SpringApplication.run(AppConfig.class, args);

    }

}

二、將servlet的註解去掉

package com.example._07servlet2;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import java.io.IOException;

/**
 * @Package: com.example._06servlet
 * @ClassName: TestServlet
 * @Description: <p>Description: </p>
 * @author: zq
 * @since: 2020/5/5 17:31
 * @version: 1.0
 * @Copyright: 2020 zq. All rights reserved.
 */
//@WebServlet(urlPatterns = "/testServlet")
public class TestServlet extends HttpServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException,
            IOException {

        System.out.println("=============TestServlet=============");
    }
}

三、測試驗證:http://localhost:8084/citic/testServlet

四、啓動類添加filter

package com.example._07servlet2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import java.util.Arrays;

/**
 * @Package: com.example._06servlet
 * @ClassName: AppConfig
 * @Description: <p>Description: </p>
 * @author: zq
 * @since: 2020/5/5 17:33
 * @version: 1.0
 * @Copyright: 2020 zq. All rights reserved.
 */
@SpringBootApplication
//@ServletComponentScan
public class AppConfig {

    //通過註冊器註冊filter
    @Bean
    public FilterRegistrationBean testFilter(){

        FilterRegistrationBean bean=new FilterRegistrationBean();
        bean.setFilter(new TestFilter());
        bean.setUrlPatterns(Arrays.asList("/*"));
        return bean;

    }

    //通過註冊器註冊servlet
    @Bean
    public ServletRegistrationBean testServlet() {

        ServletRegistrationBean bean = new ServletRegistrationBean();
        bean.setServlet(new TestServlet());
        bean.setUrlMappings(Arrays.asList("/testServlet"));
        return bean;

    }

    public static void main(String[] args) {

        SpringApplication.run(AppConfig.class, args);

    }

}
package com.example._07servlet2;

import javax.servlet.*;
import java.io.IOException;

/**
 * @Package: com.example._06servlet
 * @ClassName: TestFilter
 * @Description: <p>Description: </p>
 * @author: zq
 * @since: 2020/5/5 17:35
 * @version: 1.0
 * @Copyright: 2020 zq. All rights reserved.
 */
//@WebFilter(urlPatterns = "/*")
public class TestFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("======================TestFilter======================");
        filterChain.doFilter(servletRequest, servletResponse);

    }

    @Override
    public void destroy() {

    }
}

五、測試驗證:http://localhost:8084/citic/testServlet

六、啓動類添加listener

package com.example._07servlet2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

import java.util.Arrays;

/**
 * @Package: com.example._06servlet
 * @ClassName: AppConfig
 * @Description: <p>Description: </p>
 * @author: zq
 * @since: 2020/5/5 17:33
 * @version: 1.0
 * @Copyright: 2020 zq. All rights reserved.
 */
@SpringBootApplication
//@ServletComponentScan
public class AppConfig {

    //通過註冊器註冊listener
    @Bean
    public ServletListenerRegistrationBean testListener(){

        ServletListenerRegistrationBean bean=new ServletListenerRegistrationBean();
        bean.setListener(new TestListener());
        return bean;

    }

    //通過註冊器註冊filter
    @Bean
    public FilterRegistrationBean testFilter(){

        FilterRegistrationBean bean=new FilterRegistrationBean();
        bean.setFilter(new TestFilter());
        bean.setUrlPatterns(Arrays.asList("/*"));
        return bean;

    }

    //通過註冊器註冊servlet
    @Bean
    public ServletRegistrationBean testServlet() {

        ServletRegistrationBean bean = new ServletRegistrationBean();
        bean.setServlet(new TestServlet());
        bean.setUrlMappings(Arrays.asList("/testServlet"));
        return bean;

    }

    public static void main(String[] args) {

        SpringApplication.run(AppConfig.class, args);

    }

}
package com.example._07servlet2;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * @Package: com.example._06servlet
 * @ClassName: TestListener
 * @Description: <p>Description: </p>
 * @author: zq
 * @since: 2020/5/5 17:38
 * @version: 1.0
 * @Copyright: 2020 zq. All rights reserved.
 */
//@WebListener
public class TestListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {

        System.out.println("==================啓動了==================");

    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

        System.out.println("==================關閉了==================");

    }

}

七、驗證測試,重新啓動

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章