文章目录
1. web.xml配置内容
以前我们使用Servlet时需要在web.xml文件中配置Servlet名称、所在类、映射mapping,内容如下:
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.tumbler.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/first</servlet-pattern>
</servlet-mapping>
2. Spring Boot 方式一:通过注解扫描完成Servlet组件注册
2.1 创建Spring Boot项目
使用IDEA创建Spring Boot项目spring-boot-servlet01:https://blog.csdn.net/kangxingjun/article/details/100854709
spring boot版本2.1.8, jdk版本1.8,引入web起步依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.2 编写Servlet
创建一个类FirstServlet.java,继承HttpServlet,并在类上使用@WebServlet注解进行配置,name="FirstServlet"为servlet名称,urlPaternal="first"为拦截映射。注解使用在类上,就不需要在配置类全限定路径了。
/**
* User:tumbler
* Desc:创建Servlet 使用@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("First Servlet!!!!");
super.doGet(req, resp);
}
}
2.3 编写启动类
当项目创建时,已经自动为我们生成了Spring Boot启动类SpringBootServlet01Application.java, 现在我们在里面添加注解@ServletComponentScan 它的作用是在Spring Boot启动时,会自动扫描@WebServlet,并将带有该注解的类实例化。
@SpringBootApplication
@ServletComponentScan
public class SpringBootServlet01Application {
public static void main(String[] args) {
SpringApplication.run(SpringBootServlet01Application.class, args);
}
}
2.4 启动项目并测试
启动成功后,在浏览器输入http://localhost:8080/first,看到后台已经访问到了FirstServlet,并将“First Servlet!!!”成功打印到控制台。
3. 通过@Bean注解方法完成Servlet组件的注册
3.1 创建Spring Boot项目
使用IDEA创建Spring Boot项目spring-boot-servlet02
3.2 编写Servlet
本次编写的Servlet就是一个纯的java类,并不添加任何注解:
/**
* User:tumbler
* Desc:创建Servlet 不使用任何注解
*/
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Second Servlet!!!!");
super.doGet(req, resp);
}
}
3.3 编写启动类
SpringBootServlet02Application.java, 这里不再使用扫描注解,而是在类里面添加一个方法,方法名可以随意,但是该方法上使用@Bean注解,并返回一个ServletRegistrationBean实例。在Spring Boot启动时会去执行@Bean所注解的方法,我们再方法里面注册了Servlet,并将它返回。
@SpringBootApplication
public class SpringBootServlet02Application {
public static void main(String[] args) {
SpringApplication.run(SpringBootServlet02Application.class, args);
}
@Bean
public ServletRegistrationBean getServletRegistration() {
//实例化Servlet
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new SecondServlet());
//绑定拦截URL
servletRegistrationBean.addUrlMappings("/second");
return servletRegistrationBean;
}
}
3.4 启动项目并测试
启动成功后,在浏览器输入http://localhost:8080/second,看到后台已经访问到了FirstServlet,并将“Second Servlet!!!”成功打印到控制台。