1. 程式人生 > >Spring Boot學習筆記(二)使用Servlet、Filter、Listener

Spring Boot學習筆記(二)使用Servlet、Filter、Listener

Servlet

還是得整合HttpServlet,然後重寫父類方法。 類的上方增加了@WebServlet註解,其實就是代替了xml的配置,可以被spring boot掃描、註冊到。

package org.test.Controll;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name="helloServlet",urlPatterns = "/helloServlet")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("執行了 Servlet 的 DoGet");
    }
}

Filter

package org.test.Controll;


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

@WebFilter(filterName = "HelloFilter",urlPatterns = "/HelloServlet")
public class HelloFilter 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("執行前doFilter");
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("執行後doFilter");
    }

    @Override
    public void destroy() {

    }
}

Listener

package org.test.Controll;

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

@WebListener
public class HelloListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("contextInitialized 初始化啦");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }
}

註冊的兩種方式

第一種, 使用@ServletComponentScan,自動註冊

package org.test;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan; 
@SpringBootApplication
@ServletComponentScan //掃描servlet註解

public class Application {

    public static void main(String[] args) {
        org.springframework.boot.SpringApplication.run(Application.class, args);
    } 
}

第二種,使用@Bean註解自行註冊

package org.test;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication  
public class Application {

    public static void main(String[] args) {
        org.springframework.boot.SpringApplication.run(Application.class, args);
    }

    @Bean
    public ServletRegistrationBean getServletRegistrationBean() {
        ServletRegistrationBean bean = new ServletRegistrationBean(new HelloServlet());
        bean.addUrlMappings("/HelloServlet2");
        return bean;
    }
}