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

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;
    	}
    }
    
posted @ 2020-08-19 11:08  邓晓晖  阅读(409)  评论(0编辑  收藏  举报