本文共 3954 字,大约阅读时间需要 13 分钟。
org.springframework.boot spring-boot-starter-web
src/main/java/com/mk/servlet/HelloServlet.java,内容如下:package com.mk.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; public HelloServlet() { System.out.println("HelloServlet.HelloServlet()"); } @Override public void init() throws ServletException { System.out.println("HelloServlet.init()"); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("HelloServlet.doGet()"); PrintWriter writer = response.getWriter(); writer.write("Hello, " + request.getRemoteAddr()); writer.flush(); writer.close(); } @Override public void destroy() { System.out.println("HelloServlet.destroy()"); }} 创建一个配置类 ServletComponentConfiguration.java,位于 src/main/java/com/mk/configuration/ServletComponentConfiguration.java,内容如下:
package com.mk.configuration;import org.springframework.boot.web.servlet.ServletComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ServletComponentScan(basePackages = {"com.mk.servlet"})public class ServletComponentConfiguration {} 创建一个启动类 SpringBootServletApplication.java,位于 src/main/java/com/mk/SpringBootServletApplication.java,内容如下:
package com.mk;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringBootServletApplication { public static void main(String[] args) { SpringApplication.run(SpringBootServletApplication.class, args); }} 编辑 ServletComponentConfiguration.java,添加以下代码:
package com.mk.configuration;import java.util.Arrays;import javax.servlet.Servlet;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.mk.servlet.HelloServlet;@Configurationpublic class ServletComponentConfiguration { @Bean public ServletRegistrationBean servletRegistration() { ServletRegistrationBean registration = new ServletRegistrationBean(); registration.setServlet(new HelloServlet()); registration.setUrlMappings(Arrays.asList("/hello")); return registration; }} 启动应用后,控制台会输出:
HelloServlet.HelloServlet()HelloServlet.init()
表示 Servlet 已经成功注册到 Spring Boot 容器中。
编辑 HelloServlet.java,添加 @WebServlet 注解:
package com.mk.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet(urlPatterns = "/hello")public class HelloServlet extends HttpServlet { // ... 保持不变} 编辑 ServletComponentConfiguration.java,删除相关代码,并添加 @ServletComponentScan 注解:
package com.mk.configuration;import org.springframework.boot.web.servlet.ServletComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ServletComponentScan(basePackages = {"com.mk.servlet"})public class ServletComponentConfiguration {} 启动应用后,访问 /hello URL 应该能够正常工作。
HelloServlet.init() 方法会在第一次访问时调用,后续不会重复调用@WebServlet 注解可以直接定义 URL 映射路径转载地址:http://jhyq.baihongyu.com/