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方法
-
编写启动类
- 添加一个方法,返回值必须是ServletRegistrationBean的对象,该对象就是注册Servlet的对象。
- 在方法中,new SecondServlet()
- 通过bean.addUrlMappings("/second")完成urlPatterns的配置
- 返回该对象
- 在该方法中加入注解@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;
}
}