目录

红框处是新创的文件
- 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("/first")
- public class FirstServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("First Servlet.............");
- }
- }
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.boot.web.servlet.ServletComponentScan;
-
- @SpringBootApplication
- //SpringBoot启动时扫描注册注解标注的Web组件
- @ServletComponentScan
- public class Springbootdemo4Application {
-
- public static void main(String[] args) {
- SpringApplication.run(Springbootdemo4Application.class, args);
- }
-
- }
访问localhost:8080/first,看到控制台有Servlet输出即成功!
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
-
- public class SecondServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("Second Servlet..........");
- }
- }
2.使用配置类注册servlet
在springbootdemo4文件夹下创建配置类ServletConfig

- import com.first.springbootdemo4.servlet.SecondServlet;
- import org.springframework.boot.web.servlet.ServletRegistrationBean;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- @Configuration
- public class ServletConfig {
- //ServletRegistrationBean可以注册Servlet组件,将其放入Spring容器中即可注册Servlet
- @Bean
- public ServletRegistrationBean getServletRegistrationBean(){
- // 注册Servlet组件
- ServletRegistrationBean bean=new ServletRegistrationBean(new SecondServlet());
- // 添加Servlet组件访问路径
- bean.addUrlMappings("/second");
- return bean;
- }
- }
访问localhost:8080/second,看到控制台有Servlet输出即成功!
注解Bean的作用是在服务启动时,实例化一个对象放到Sping的ioc容器中,在需要初始化的实例,方法,内容时使用。
项目结构:

- import javax.servlet.*;
- import javax.servlet.annotation.WebFilter;
- import java.io.IOException;
-
- @WebFilter(urlPatterns = "/first")
- public class FirstFilter implements Filter {
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- Filter.super.init(filterConfig);
- }
-
- @Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- System.out.println("进入First Filter");
- filterChain.doFilter(servletRequest,servletResponse);
- System.out.println("离开First Filter");
- }
-
- @Override
- public void destroy() {
- Filter.super.destroy();
- }
- }
2.启动类扫描web组件
还是在SpringBoot项目的启动类(此项目是Springbootdemo4Application)里添加@ServletComponentScan注解(刚刚已经添加过了,所以现在不用添加了)
访问localhost:8080/first,看到控制台输出即成功!
- import javax.servlet.*;
- import java.io.IOException;
-
- public class SecondFilter implements Filter {
-
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- Filter.super.init(filterConfig);
- }
-
- @Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- System.out.println("进入Second Filter");
- filterChain.doFilter(servletRequest,servletResponse);
- System.out.println("离开Second Filter");
- }
-
- @Override
- public void destroy() {
- Filter.super.destroy();
- }
- }
2.使用配置类注册filter
- import com.first.springbootdemo4.filter.SecondFilter;
- import org.springframework.boot.web.servlet.FilterRegistrationBean;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- @Configuration
- public class FilterConfig {
- @Bean
- public FilterRegistrationBean getFilterRegistrationBean(){
- // 注册Servlet组件
- FilterRegistrationBean bean=new FilterRegistrationBean(new SecondFilter());
- // 添加Servlet组件访问路径
- bean.addUrlPatterns("/second");
- return bean;
- }
- }
访问localhost:8080/first,看到控制台输出即成功!
项目结构:

- import javax.servlet.ServletContextEvent;
- import javax.servlet.ServletContextListener;
- import javax.servlet.annotation.WebListener;
-
- @WebListener
- public class FirstListener implements ServletContextListener {
- public void contextInitialized(ServletContextEvent sce){
- System.out.println("First Listener Init......");
- }
-
- public void contextDestroyed(ServletContextEvent sce){}
- }
- import javax.servlet.ServletContextEvent;
- import javax.servlet.ServletContextListener;
-
- public class SecondListener implements ServletContextListener {
- public void contextInitialized(ServletContextEvent sce){
- System.out.println("Second Listener Init......");
- }
-
- public void contextDestroyed(ServletContextEvent sce){}
- }
2.使用配置类注册Listener
- import com.first.springbootdemo4.listener.SecondListener;
- import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- @Configuration
- public class ListenerConfig {
- @Bean
- public ServletListenerRegistrationBean getServletListenerRegistrationBean(){
- ServletListenerRegistrationBean bean=
- new ServletListenerRegistrationBean(new SecondListener());
- return bean;
- }
- }
直接启动项目查看控制台是否有相应输出,有则成功。