1.基本介绍
- 考虑到实际开发业务非常复杂和兼容问题,SpringBoot支持将Servlet、Filter、Listener注入spring容器中,成为Spring Bean
- 也就是说,SpringBoot开放了和原生WEB组件(Servlet、Filter、Listener)的兼容
- SpringBoot注入Servlet、Filter、Listener,有两种方式:
- 通过注解方式注入
- 使用RegistrationBean方式注入
2.通过注解方式注入
2.1@WebServlet
属性名 | 对应标签 | 描述 |
---|---|---|
name | <servlet-name> |
指定 Servlet 的 name 属性。 如果没有显式指定,则取值为该 Servlet 的完全限定名,即包名+类名 |
value | <url-pattern> |
该属性等价于 urlPatterns 属性,两者不能同时指定。 如果同时指定,通常是忽略 value 的取值 |
urlPatterns | <url-pattern> |
指定一组 Servlet 的 URL 匹配模式 |
loadOnStartup | <load-on-startup> |
指定 Servlet 的加载顺序 |
initParams | <init-param> |
指定一组 Servlet 初始化参数 |
asyncSupported | <async-supported> |
声明 Servlet 是否支持异步操作模式 |
description | <description> |
指定该 Servlet 的描述信息 |
displayName | <display-name> |
指定该 Servlet 的显示名 |
例子--使用@WebServlet注入Servlet
(1)MyServlet.java
-
通过继承HttpServlet来开发原生的Servlet
-
使用@WebServlet,表示将其标识的对象注入到Spring容器中
-
urlPatterns = {"servlet01","servlet02"} 对此servlet配置了映射路径
-
对于开发的原生的Servlet,需要使用@ServletComponentScan在SpringBoot主程序中,指定要扫描的原生Servlet,这样该Servlet才能注入容器
package com.li.thymeleaf.servlet; |
|
import javax.servlet.ServletException; |
|
import javax.servlet.annotation.WebServlet; |
|
import javax.servlet.http.HttpServlet; |
|
import javax.servlet.http.HttpServletRequest; |
|
import javax.servlet.http.HttpServletResponse; |
|
import java.io.IOException; |
|
/** |
|
* @author 李 |
|
* @version 1.0 |
|
*/ |
|
@WebServlet(urlPatterns = {"/servlet01", "/servlet02"}) |
|
public class MyServlet extends HttpServlet {
|
|
@Override |
|
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
|
resp.getWriter().write("Hello,MyServlet!"); |
|
} |
|
} |
(2)Application.java主程序
package com.li.thymeleaf; |
|
import org.springframework.boot.SpringApplication; |
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
|
import org.springframework.boot.web.servlet.ServletComponentScan; |
|
/** |
|
* @author 李 |
|
* @version 1.0 |
|
*/ |
|
//指定扫描Servlet |
|
@ServletComponentScan(basePackages = "com.li.thymeleaf") |
|
@SpringBootApplicati |