【SpringBoot】03.SpringBoot整合Servlet的两种方式

时间:2022-11-12 05:50:27

SpringBoot整合Servlet的两种方式:

1. 通过注解扫描完成Servlet组件注册

  • 新建Servlet类继承HttpServlet
  • 重写超类doGet方法
  • 在该类使用注解@WebServlet
@WebServlet(name="FirstServlet" ,urlPatterns="/first")
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("执行了");
}
}
  • 编写启动类

  • 增加注解@ServletComponentScan //在springboot启动时会扫描websevlet的路径,并将该类实例化

  /**
* SpringBoot 启动类
* @SpringBootApplication 是springboot的启动类
* 启动器存放的位置:启动器可以和controller位于同一个包下或者上一个包下。 不能同级的包
*/
@SpringBootApplication
@ServletComponentScan //在springboot启动时会扫描websevlet的路径,并实例化
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}

2.通过方法完成Servlet组件注册

  • 编写一个类同样继承HttpServlet

  • 重写doGet方法

  • 编写启动类

    1. 添加一个方法,返回值必须是ServletRegistrationBean的对象,该对象就是注册Servlet的对象。
    2. 在方法中,new SecondServlet()
    3. 通过bean.addUrlMappings("/second")完成urlPatterns的配置
    4. 返回该对象
    5. 在该方法中加入注解@Bean
    /**
    * SpringBoot 启动类
    * @SpringBootApplication 是springboot的启动类
    * 启动器存放的位置:启动器可以和controller位于同一个包下或者上一个包下。 不能同级的包
    */
    @SpringBootApplication
    public class App2 {
    public static void main(String[] args) {
    SpringApplication.run(App2.class, args);
    }
    /**
    * 注册Servlet的方法
    */
    @Bean
    public ServletRegistrationBean getServletRegistrationBean(){
    ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
    bean.addUrlMappings("/second");
    return bean;
    }
    }