两种方式:
- 通过注解扫描完成 Servlet组件的注册
- 通过方法完成 Servlet组件的注册
一、通过注解扫描完成 Servlet 组件的注册
1. 编写Servlet类
/** * SpringBoot整合Servlet方式一: * * 传统方式: * <servlet> * <servlet-name>FirstServlet</servlet-name> * <servlet-class>com.linhw.demo.servlet.FirstServlet</servlet-class> * </servlet> * <servlet-mapping> * <servlet-name>FirstServlet</servlet-name> * <url-pattern>/first</url-pattern> * </servlet-mapping> */ @WebServlet(name="FirstServlet", urlPatterns={"/first"}) public class FirstServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("FirstServlet Enter ......"); } }
2. 编写启动类
@SpringBootApplication @ServletComponentScan ///在 springBoot 启动时会扫描@WebServlet,并将该类实例 public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }
二、通过方法完成 Servlet 组件的注册
1. 编写Servlet
//与第一种的区别,就是没有加@WebServlet注解 public class SecondServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("FirstServlet Enter ......"); } }
2. 编写启动类
@SpringBootApplication public class App2 { public static void main(String[] args) { SpringApplication.run(App2.class, args); } //以@Bean注解实例化Servlet,注入到容器中,方法名称就是bean name @Bean public ServletRegistrationBean getServlet(){ ServletRegistrationBean secondServlet = new ServletRegistrationBean(new SecondServlet()); secondServlet.addUrlMappings(new String[]{"/second"}); return secondServlet; } }