SpringBoot整合Servlet的两种方式
本文环境
Maven3.5 JDK1.8 idea SpringBoot2.0.1
- 工程pom文件加入Jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
1. 注解扫描方式
- 准备Servlet
@WebServlet(name = "firstServlet", urlPatterns = "/firstServlet") //标记为servlet,以便启动器扫描。
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().append("firstServlet");
}
}
- 注册Servlet
@SpringBootApplication
@ServletComponentScan //启动器启动时,扫描本目录以及子目录带有的webservlet注解的
public class FirstServletApplication {
public static void main(String[] args) {
SpringApplication.run(FirstServletApplication.class, args);
}
}
- 访问Servlet
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0qcAnaYb-1583564008228)(https://github.com/GarfieldHuang/RESOURCE/blob/master/IMG/1.jpg?raw=true)]
2. 组建注册方式
- 准备Servlet
//这里不需要添加webServlet注解
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().append("SecondServlet");}}
- 注册Servlet
@SpringBootApplication
public class SecondServletApplication {
public static void main(String[] args) {
SpringApplication.run(SecondServletApplication.class, args);
}
@Bean //一定要加,不然这个方法不会运行
public ServletRegistrationBean getServletRegistrationBean() { //一定要返回ServletRegistrationBean
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet()); //放入自己的Servlet对象实例
bean.addUrlMappings("/secondServlet"); //访问路径值
return bean;}}