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; } }