`

传统的Servlet在spring boot中怎么实现的?

阅读更多

传统的Servlet在spring boot中怎么实现的?

本文主要内容:

1:springboot一些介绍

2:传统的servlete项目在spring boot项目中怎么实现的?web.xml、url-patterns怎么设置?

3:有几种实现方式?分别是什么?

4:代码位置

spring boot 三大特性

组件自动装配:webMVC、webFlux、JDBC等

嵌入式Web容器:Tomcat、Jetty以及undertow

生产准备特性:指标、健康检查、外部化部署等

组件自动装配:

激活自动装配注解:@EnableAutoConfiguration

配置:/META-INF/spring.factories

实现:XXXAutoConfiguration.

我们以spring-boot-autoconfigure的jar下spring.factories为示例:

可以看到key是接口后没是实现。实现就是XXXAutoConfiguration.

嵌入式web 容器:

Web Servlet容器:Tomcat、Jetty以及undertow

Web Reactive容器:Netty Web Server

生产准备特性:

指标:/actuator/metrices

健康检查:/actuator/health

外部化配置:/actuator/configprops

Web应用:

传统的Servlet应用

Servlet组件:Servlet、Filter、listener

Servlet注册到spring boot中:Servlet注解、Spring Bean、RegistrationBean

异步非阻塞:异步Servlet(web 3.0特效)、非阻塞Servlet(servlet 3.1特性)。

来源:凯哥Java(kaigejava)

www.kaigejava.com

传统Servelt应用:

一:添加pom依赖

<dependency>

  <groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-starter-web</artifactId>

</dependency>

二:Servlet组件讲解

我们先来回忆下使用Sevlet怎么写的:

1:写个类继承HttpServlet。然后重新doGet、doPost方法。如下图:

2:在web.xml文件中需要配置servlet-name、servlet-calss、servlete-mapping中需要配置url-pattern。如下图:

然后启动tomcat之后,在地址栏中输入xxx:xx/servlet/HelloWorld.

上面是Servlet的步骤。

在spring boot中,提倡使用注解。那么上面的servlet使用spring boot怎么使用?

spring boot没有web.xml怎么配置?访问url怎么配置?

请看下面代码:

@WebServlet(urlPatterns = "/servlet/HelloWorld")

public class MyServlet extends HttpServlet{

 

   @Override

   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

       resp.getWriter().write("my doGet method");

   }

 

   @Override

   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

       resp.getWriter().write("my doPost method");

   }

}

 

其中@WebServlet注解和UrlPatterns的功能同web.xml中<servlet-mapping>中的urlpattern.

我们在来看看启动类上添加:

@SpringBootApplication

@ServletComponentScan("com.kaigejava.web.servlet")

public class Springbootdemo1Application {

 

  public static void main(String[] args) {

     SpringApplication.run(Springbootdemo1Application.class, args);

  }

 

}

 

其中的ServletComponentScan就是扫描servlet的。可以看做是web.xml中<servlet>标签下的<sevlet-class>。

两者对比:

启动项目,访问:

达到预期效果。说明传统的servlet在springboot项目中可以很好的兼容。

我们总结下:

SpringBoot中使用传统的Servlet。

实现方式:

创建一个类添加@WebServlet,继承HttpServlet,注册到spring boot容器中。

其中URL映射使用注解:@WebServlet(urlPatterns = "/servlet/HelloWorld")

将servlet注册到spring容器中使用注解:ServletComponentScan(basePackages=“com.kaigejava.web.servlet”)

我们知道Sevlete还有其他两个组件:Filter和Listener.

那么这两个组件在springboot中又分别使用哪些注解呢?

根据servlet注解我们可以看到是@webServlet.

所以,filter对应的就是@WebFilter、listener对应的就是@WebListener注解。

实现方式有三种方式:

第一种:使用servlet注解。如上面我们演示的@Webservlet注解。

其实就是@ServletComponentScan+@webServlet

或者+@WebFilter或者+@WebListener注解

方式二:使用spring注解

@Bean+Servlet(Filter\Listener)

方式三:使用RegistrationBean方法

ServletRegistrationBean

FilterRegistrationBean

ServletListenerRegistrationBean

以上三种都可以。

代码已发布到git上面。欢迎大家一起学习。

分享到:
评论

相关推荐

    spring boot 简单实现

    在这个"spring boot简单实现"的项目中,我们可以看到核心关注点是如何设置和使用Spring Boot的拦截器,以及如何将项目构建成一个可直接运行的实例。 首先,我们来深入理解Spring Boot的核心特性: 1. 自动配置:...

    最新Spring Boot Admin 官方参考指南-中文版-2.x

    如果你想在WAR包中部署并在Servlet容器中运行,你可以参考`spring-boot-admin-sample-war`示例项目。而`spring-boot-admin-sample-servlet`项目则展示了如何在添加安全验证的情况下配置Spring Boot Admin Server。 ...

    spring boot 中文文档

    在文档的“开始”部分,介绍了Spring Boot的基础知识,包括系统要求、安装方法以及如何创建和运行第一个Spring Boot应用。系统要求部分会详细说明支持的Servlet容器。Spring Boot安装包括了为Java开发者准备的安装...

    十分钟上手spring boot

    - 使用Maven创建一个新的项目,并在pom.xml文件中添加Spring Boot Starter Web依赖。 - **11.2. 添加classpath依赖** - 在项目的classpath中添加所需的依赖库。 - **11.3. 编写代码** - **11.3.1. @...

    Spring Boot讲义.pdf

    Spring Boot允许开发者快速地添加依赖,主要通过在项目中添加特定的父工程坐标来实现,这个父工程就是`spring-boot-starter-parent`,它为项目提供了基本的依赖管理。开发者只需添加所需的具体依赖即可,不需要担心...

    Spring Boot 中的Servlet简单使用

    在Spring Boot中,Servlet的使用变得非常简便,因为Spring Boot内置了Servlet容器,如Tomcat或Jetty,这些容器会自动处理Servlet的注册和管理。本文将详细介绍如何在Spring Boot中添加自定义Servlet。 首先,Spring...

    Spring-Boot-Reference-Guide, Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》.zip

    3. 内嵌式Servlet容器:Spring Boot支持内嵌Tomcat、Jetty或Undertow,无需额外部署WAR文件。 4. 健康检查:提供健康检查API,用于监控系统状态。 5. 配置文件:通过application.properties或application.yml进行...

    Spring Boot in Action 英文版

    Spring Cloud是基于Spring Boot实现的一系列框架的集合,提供了在分布式系统(如配置管理、服务发现、断路器、智能路由等)中快速构建常见模式的工具。 此外,Spring Boot还提供了一系列的生产就绪特性,例如通过...

    Spring Boot 使用 ProxyServlet 代理并统一响应

    1. 添加依赖:在`pom.xml`文件中引入Spring Boot的`spring-boot-starter-web`依赖,以及Tomcat的`tomcat-embed-jasper`依赖,它们包含了Servlet的实现。 ```xml &lt;groupId&gt;org.springframework.boot ...

    spring-boot-2.7.0.zip源码

    `spring-boot-2.7.0`源码中,`EnvironmentPostProcessor`接口用于在Spring Environment初始化后处理环境变量,从而实现环境感知。 4. **Web应用启动**:Spring Boot的`WebApplicationInitializer`和`SpringBoot...

    Spring-Boot-Demo

    本文将深入探讨如何在Spring Boot项目中整合Mybatis,并利用Druid数据库连接池进行性能监控。 首先,我们要理解Spring Boot的核心理念——约定优于配置。在Spring Boot项目中,我们不再需要手动编写大量的XML配置...

    spring boot 开发 servlet filters listeners

    ### Spring Boot 中 Servlet Filters 和 Listeners 的实现与运用 #### 一、概述 Spring Boot 是一个基于 Spring 框架的快速应用开发平台,它简化了传统的 Spring 应用配置,使得开发者能够更加专注于业务逻辑的...

    Spring Boot实现异步请求(Servlet 3.0)

    在使用 Spring Boot 实现异步请求时,需要在 Servlet 中添加 asyncSupported = true 属性,以启用异步处理。在 Filter 中也需要添加 asyncSupported = true 属性,以便在 Filter 中也能启用异步处理。 在 Spring ...

    Spring boot访问jsp页面

    1. 添加`spring-boot-starter-web`依赖,它包含Servlet容器,使得我们可以在Spring Boot应用中运行JSP。 2. 配置`spring.mvc.view.prefix`和`spring.mvc.view.suffix`属性,分别设置JSP页面的前缀和后缀,例如:`/...

    Spring boot web 访问

    在Spring Initializr中,我们可以选择web依赖来创建一个新的Spring Boot项目。 创建项目后,我们需要在主类上添加`@SpringBootApplication`注解,这是Spring Boot的入口点,它结合了`@Configuration`,`@...

    Spring Boot应用开发框架 v2.7.17.zip

    在这个压缩包中,"spring-boot-2.7.17"可能包含的是源码仓库,包括Spring Boot框架的各个模块,如spring-boot-project、spring-boot-autoconfigure、spring-boot-starter-parent等。开发者可以通过阅读源码理解...

    Spring boot通过HttpSessionListener监听器统计在线人数的实现代码

    在Spring boot中通过HttpSessionListener监听器统计在线人数是一种常见的技术实现方式,适用于需要跟踪和管理用户会话状态的Web应用程序。以下是从给定文件中提炼的关键知识点。 首先,了解HttpSessionListener接口...

    架构师面试题系列之Spring Boot面试专题及答案(33题).docx

    * 在 IDEA 或 Eclipse 中,直接运行应用的 Spring Boot 启动类的 #main(String[] args) 启动。 * 如果是 Web 项目,可以打包成 War 包,使用外部 Tomcat 或 Jetty 等容器。 8. Spring Boot 中的监视器是什么? ...

    spring boot面试题及答案.docx

    如何使用Spring Boot实现异常处理? Spring Boot中异常处理通常采用`ControllerAdvice`机制来实现: 1. 创建一个带有`@ControllerAdvice`注解的类,该类充当全局异常处理器。 2. 在此类中定义一个或多个带有`@...

    从零开始学Spring Boot

    1.23 Spring Boot Servlet 1.24 Spring Boot过滤器、监听器 1.25 Spring Boot 拦截器HandlerInterceptor 1.26 Spring Boot启动加载数据CommandLineRunner 1.27 Spring Boot环境变量读取和属性对象的绑定 1.28 Spring...

Global site tag (gtag.js) - Google Analytics