1. 程式人生 > 其它 >SpringBoot 中Servlet,Filter,Listener的程式碼配置

SpringBoot 中Servlet,Filter,Listener的程式碼配置

技術標籤:SpringBootspringbootFilter程式碼配置Listener程式碼配置Servlet程式碼配置

SpringBoot建立web專案中,有可能是以jar的方式建立的.建立之後沒有對應的webapp目錄,也沒有對應的web.xml檔案.而web.xml檔案通常會配置Servlet,Filter,Listener等資訊.SpringBoot為我們提供了ServletRegistrationBean,FilterRegistrationBean,ServletListenerRegistrationBean等類配置相關資訊.
1.Servlet配置
1)新建servlet類

public class MyServlet extends HttpServlet{


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException { resp.getWriter().println("hello servlet..."); } }

2)通過ServletRegistrationBean註冊

   /**
     * 注入servlet   代替web.xml配置
     * @return
     */
    @Bean
    public ServletRegistrationBean servletRegistrationBean(){
        return new ServletRegistrationBean
(new MyServlet(), "/myServlet"); }

3)頁面顯示:
在這裡插入圖片描述

2.Filter配置
1)新建Filter類

package com.oxx.springboot.component;


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

public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("-----myfilter  init......");
    }

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

    @Override
    public void destroy() {
        System.out.println("------------myFilter  destroy........");
    }
}

2)通過FilterRegistrationBean註冊:

/**
     * 注入filter   代替web.xml配置
     * @return
     */
    @Bean
    public FilterRegistrationBean filterRegistrationBean(){
        return new FilterRegistrationBean(new MyFilter(), servletRegistrationBean());
    }

3)啟動專案,退出專案 控制檯顯示:
在這裡插入圖片描述
配置的是自定義的servlet,過濾的是/myServlet,需要訪問一次才會出現doFilter…點選紅色框框按鈕退出才會顯示destroy

3.Listener配置
1)新建Listener類:

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

public class MyServletContextListener implements ServletContextListener{

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("-----------------MyServletContextListener  init ......");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("---------------MyServletContextListener  destroy........");
    }
}

2)通過ServletListenerRegistrationBean註冊Listener:

 /**
     * 注入listener  代替web.xml配置
     * @return
     */
    @Bean
    public ServletListenerRegistrationBean servletListenerRegistrationBean(){
        return new ServletListenerRegistrationBean(new MyServletContextListener());
    }

3)啟動專案,退出專案 控制檯顯示
在這裡插入圖片描述
點選紅色框框按鈕退出,才回顯示destroy…

4.容器相關配置
1)通過程式碼配置容器相關資訊

  /**
     * 程式碼配置容器相關資訊
     * @return
     */
    @Bean
    public WebServerFactoryCustomizer<TomcatServletWebServerFactory> webServerFactoryCustomizer(){
        return new WebServerFactoryCustomizer<TomcatServletWebServerFactory>() {
            @Override
            public void customize(TomcatServletWebServerFactory factory) {
                factory.setPort(9999);  //埠
                factory.setContextPath("/tomcat");  //訪問路徑
            }
        };
    }

2)啟動專案 控制檯顯示:
在這裡插入圖片描述