SpringBoot自定义Servlet
在普通web工程中可以按照以下步骤创建Servlet:
1:写自定义Servlet
//自定义Servlet并且重写doGet和doPost方法 public class TestServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("=================>Get-Servlet Start<===================="); doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("=================>Post-Servlet Start<===================="); resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println("hello warrior"); } }
2:在web.xml中配置Servlet
<!-- 配置web.xml --> <servlet> <servlet-name>TestServlet</servlet-name> <servlet-class>con.test.servlet.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/testServlet/*</url-pattern> </servlet-mapping>
SpringBoot配置自定义Servlet依然很简单,而且省去了web.xml的配置
1:注解注入方式
1.1 依然是写自定义Servlet
/** * @description:写自定义Servlet并且重写doGet和doPost方法添加@WebServlet注解 * @author: liying * @date: 2019-06-26 */ @WebServlet(urlPatterns = "/testServlet/*") public class TestServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("=================>Get-Servlet Start<===================="); doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("=================>Post-Servlet Start<===================="); resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println("hello warrior"); } }
1.2 配置启动类注册Servlet
//1 注解注册 @EnableEurekaClient @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) //启动类添加Servlet注解,并且指定Serlvet扫描位置不指定也可以,但是为了代码的可读性最好加上,明确Servlet位置 @ServletComponentScan(basePackages = "com.micro.picture.tiger.component.servlet") public class BatchApplicationStart { public static void main(String[] args) { SpringApplication.run(BatchApplicationStart.class, args); } }
2: 代码方式注入
2.1 自定义注解
/** * @description:写自定义Servlet并且重写doGet和doPost方法不需要添加@WebServlet注解 * @date: 2019-06-26 */ public class TestServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("=================>Get-Servlet Start<===================="); doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("=================>Post-Servlet Start<===================="); resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println("hello warrior"); } }
2.2 启动类增加注入代码
//2 代码注册 @EnableEurekaClient @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class BatchApplicationStart { //使用代码注解可以省略自定义Servlet和启动类上的注解 @Bean public ServletRegistrationBean registServlet(){ return new ServletRegistrationBean(new TestServlet(), "/testServlet/*"); } public static void main(String[] args) { SpringApplication.run(BatchApplicationStart.class, args); } }
测试:
启动工程,使用URL测试:http://localhost:18901/testServlet/123
参考: