SpringBoot 如何使用 Tomcat 容器

news2024/11/26 0:28:43

SpringBoot 如何使用 Tomcat 容器

SpringBoot 是一种基于 Spring 框架的快速开发框架,它提供了许多功能和组件,其中包括了内置的 Tomcat 容器。在本文中,我们将介绍如何使用 SpringBoot 内置的 Tomcat 容器来运行 Web 应用程序。

在这里插入图片描述

SpringBoot 内置 Tomcat 容器

SpringBoot 内置了 Tomcat 容器,这使得开发者在开发和部署 Web 应用程序时更加方便。Tomcat 是一个开源的 Web 服务器,它实现了 Java Servlet 和 JavaServer Pages 规范,并提供了一个运行 Web 应用程序的环境。SpringBoot 的内置 Tomcat 容器可以帮助开发者快速启动和运行 Web 应用程序,并且不需要繁琐的配置。

创建一个带有 Web 应用程序的 SpringBoot 项目

在开始使用 SpringBoot 内置的 Tomcat 容器之前,我们需要先创建一个带有 Web 应用程序的 SpringBoot 项目。如果你已经有了一个 SpringBoot 项目,可以直接跳过这一步。

首先,我们需要在 Maven 或 Gradle 中添加 SpringBoot Web Starter 依赖,这个依赖包含了 SpringBoot Web 应用程序所需的所有依赖项。下面是 Maven 中添加 SpringBoot Web Starter 依赖的方式:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

接下来,我们需要创建一个名为 HelloWorldController 的 RESTful API,该 API 将返回 “Hello, World!” 字符串。下面是一个示例代码:

@RestController
public class HelloWorldController {
    @GetMapping("/")
    public String hello() {
        return "Hello, World!";
    }
}

在上述示例代码中,我们使用 @RestController 注解标记了一个名为 HelloWorldController 的控制器,并使用 @GetMapping 注解标记了一个名为 hello 的方法,该方法将处理 HTTP GET 请求并返回 “Hello, World!” 字符串。

现在我们已经创建了一个带有 Web 应用程序的 SpringBoot 项目,接下来我们将介绍如何使用 SpringBoot 内置的 Tomcat 容器来运行这个应用程序。

使用 SpringBoot 内置 Tomcat 容器运行 Web 应用程序

默认情况下,SpringBoot 已经配置了内置 Tomcat 容器,并且可以直接使用 Maven 或 Gradle 命令来启动 Web 应用程序。下面是使用 Maven 命令来启动 Web 应用程序的方式:

mvn spring-boot:run

在运行上述命令后,SpringBoot 会自动启动内置的 Tomcat 容器,并将 Web 应用程序部署到容器中。在容器启动完成后,我们可以在浏览器中打开 http://localhost:8080/,就可以看到 “Hello, World!” 字符串了。

配置 SpringBoot 内置 Tomcat 容器

SpringBoot 的内置 Tomcat 容器提供了许多配置选项,例如端口号、上下文路径、SSL 等。使用这些配置选项可以帮助开发者更好地控制应用程序的行为。下面是一些常用的配置选项:

1. 端口号配置

默认情况下,内置 Tomcat 容器会将应用程序部署到 8080 端口上。如果需要修改端口号,可以在 application.properties 或 application.yml 文件中添加以下配置:

server.port=8081

或者使用以下 YAML 格式的配置:

server:
  port: 8081

2. 上下文路径配置

默认情况下,内置 Tomcat 容器将应用程序部署到根路径(/)上。如果需要将应用程序部署到其他路径上,可以在 application.properties 或 application.yml 文件中添加以下配置:

server.servlet.context-path=/myapp

或者使用以下 YAML 格式的配置:

server:
  servlet:
    context-path: /myapp

3. SSL 配置

默认情况下,内置 Tomcat 容器不启用 SSL。如果需要启用 SSL,可以在 application.properties 或 application.yml 文件中添加以下配置:

server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=changeit
server.ssl.key-password=changeit

或者使用以下 YAML 格式的配置:

server:
  port: 8443
  ssl:
    enabled: true
    key-store: classpath:keystore.jks
    key-store-password: changeit
    key-password: changeit

在上述配置中,我们指定了 SSL 的端口号为 8443,并且指定了一个名为 keystore.jks 的密钥库文件。需要注意的是,密钥库文件必须包含一个有效的 SSL 证书。

使用外部 Tomcat 容器运行 SpringBoot 应用程序

除了使用内置 Tomcat 容器,我们还可以使用外部 Tomcat 容器来运行 SpringBoot 应用程序。下面是使用外部 Tomcat 容器运行 SpringBoot 应用程序的步骤:

  1. 将 SpringBoot 应用程序打包成 WAR 文件。
<packaging>war</packaging>
  1. 在 pom.xml 文件中添加以下依赖项:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

在上述依赖项中,我们使用了 provided 作用域,这表示该依赖项只在编译和打包时使用,而在运行时不会包含在 WAR 文件中。

  1. 在应用程序的主类上添加以下注解:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}

在上述代码中,我们扩展了 SpringBootServletInitializer 类,并重写了 configure() 方法,该方法将返回应用程序的主类。

  1. 在 Tomcat 容器中部署 WAR 文件。

启动 Tomcat 容器,并将 WAR 文件部署到 Tomcat 的 webapps 目录下。在部署完成后,我们可以在浏览器中打开 http://localhost:8080/,就可以访问应用程序了。

结论

在本文中,我们介绍了如何使用 SpringBoot 内置的 Tomcat 容器来运行 Web 应用程序。我们还介绍了如何配置 Tomcat 容器,并使用外部 Tomcat 容器来运行 SpringBoot 应用程序。希望本文对您有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/665986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu 18.04系统python3.6 升级到 python3.9

1.安装依赖库 sudo apt-get install build-essential libbz2-dev libssl-dev libreadline-dev libsqlite3-dev 2.下载 Python 3.9 源代码 wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz # 解压 tar -xf Python-3.9.5.tar.xz 3.编译Python 3.9 cd Pytho…

Grounded-Segment-Anything本地部署

Grounded-Segment-Anything本地部署 1.本地部署源码1.1 克隆源码1.2 下载初始参数 2. 创建虚拟环境及配置3. 测试相关文件3.1 运行grounding_dino_demo.py文件3.2 运行grounded_sam_demo.py文件3.3 运行grounded_sam_simple_demo.py文件3.4 grounded_sam_inpainting_demo.py文件…

Spring Boot 如何使用 Jetty 容器

Spring Boot 如何使用 Jetty 容器 Jetty 是一款轻量级的 Java Web 容器&#xff0c;适用于各种规模的 Web 应用程序。在 Spring Boot 中&#xff0c;我们可以使用 Jetty 作为 Web 容器来处理 HTTP 请求和响应。本文将介绍 Spring Boot 如何使用 Jetty 容器&#xff0c;包括如何…

SpringBoot 如何使用 AOP 容器

SpringBoot 如何使用 AOP 容器 SpringBoot 是基于 Spring Framework 的一种快速开发框架&#xff0c;它提供了丰富的功能和组件&#xff0c;其中之一就是 AOP&#xff08;面向切面编程&#xff09;。AOP 是一种编程范式&#xff0c;可以将横向关注点&#xff08;如日志记录、事…

紫东太初:造一个国产大模型,需用多少篇高质量论文?

原创&#xff1a;谭婧 “视觉自监督算法这轮&#xff0c;你是不是没跟上&#xff1f;” 我面前这位年薪近七十万&#xff0c;互联网大厂AI算法工程师的好友&#xff0c; 他用一个反问句回答了我的关心&#xff1a; “自监督这个玩意咋跟上&#xff1f;” 他抬了抬头&#xff0c…

shell 拼接字符串,出现后面的字符串覆盖前面的字符串问题

字符串拼接语法 shell 拼接字符串语法很简单两个参数并排前后写上接口&#xff0c;如下 str1www str2bbb s t r 1 str1 str1str2 的结果未 wwwbbb 有时会出现如下问题&#xff1a; 在拼接字符串的时候&#xff0c;后面的字符串将前面的字符串覆盖了。 一、问题描述 shell的…

Unity3D:Game 视图

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 Game 视图 从应用程序中的摄像机渲染 Game 视图。 该视图代表最终发布的应用程序。 需要使用一个或多个摄像机来控制玩家在使用应用程序时看到的内容。 有关摄像机的更多信息&#…

Github调研:开发者对生产力、协作和AI编码工具的看法

Datawhale干货 翻译&#xff1a;段秋阳 Datawhale成员 调研背景 GitHub首席产品官Inbal Shani如是说&#xff1a; 今天的开发人员所做的不仅仅是编写和发布代码&#xff0c;他们还需要熟练应用各种工具、环境和技术&#xff0c;包括生成人工智能编码工具这个新领域。但对开发人…

Python基础(14)——Python元组(tuple)详解

Python基础&#xff08;14&#xff09;——Python元组&#xff08;tuple&#xff09;详解 文章目录 Python基础&#xff08;14&#xff09;——Python元组&#xff08;tuple&#xff09;详解课程&#xff1a;元组目标一. 元组的应用场景二. 定义元组三. 元组的常见操作四. 总结…

vue进阶-vue-route

Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成&#xff0c;让用 Vue.js 构建单页应用变得轻而易举。 本章只做学习记录&#xff0c;详尽的内容一定要去官网查看api文档 Vue Router-Vue.js 的官方路由 1. 路由的基本使用 1.1 安装vue-router npm install vue-…

图解transformer中的自注意力机制

本文将将介绍注意力的概念从何而来&#xff0c;它是如何工作的以及它的简单的实现。 注意力机制 在整个注意力过程中&#xff0c;模型会学习了三个权重:查询、键和值。查询、键和值的思想来源于信息检索系统。所以我们先理解数据库查询的思想。 假设有一个数据库&#xff0c…

Django-带参数的路由编写(二)【用正则表达式匹配复杂路由】

在上一篇博文中&#xff0c;学习了“不用正则表达式匹配的简单带参数路由”&#xff0c;详情见链接&#xff1a; https://blog.csdn.net/wenhao_ir/article/details/131225388 本篇博文学习用“用正则表达式匹配复杂路由”。 简单的参数路由用库django.urls中的函数path()就可…

内涝监测系统如何助力城市防洪抗涝

近年来&#xff0c;各地内涝问题愈发严重&#xff0c;强降雨天气导致城市内涝已经屡见不鲜了&#xff0c;城市内涝不仅影响城市交通、居民生活&#xff0c;还可能对建筑物和基础设施造成损害&#xff0c;给城市运行带来重大风险。内涝治理除了要解决城市“里子”问题&#xff0…

【2023,学点儿新Java-11】基础案例练习:输出个人基础信息、输出心形 | Java中 制表符\t 和 换行符\n 的简单练习

前情回顾&#xff1a; 【2023&#xff0c;学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制&#xff1a;JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附&#xff1a;GPT3.5-turbo问答测试【2023&#xff0c;学点儿新Java-09】Java初学者常会犯的错误总结与…

数据库SQL Server实验报告 之 SQL语言进行数据更新(6/8)

SQL语言进行数据更新 生命的本质是一场历练 实验目的及要求&#xff1a; 掌握如何使用sql语句进行插入、删除和更新操作。使用sql语句进行插入操作。使用sql语句进行删除操作。使用sql语句进行更新操作。使用各种查询条件完成指定的查询操作 实验内容及步骤&#xff1a…

计算机基础--->网络(2)【TCP、UDP、IP、ARP】

文章目录 TCP与UDP的区别TCP三次握手和四次挥手为什么要三次握手&#xff1f;第二次握手传回了ACK&#xff0c;为什么还要传回SYN&#xff1f;为什么要四次挥手&#xff1f;为什么不能将服务器发送的ACK和FIN合并起来&#xff0c;变成三次挥手&#xff1f;TCP如何保证传输的可靠…

推荐召回-Swing

概述 swing 是阿里原创的 i2i 召回算法&#xff0c;在阿里内部的多个业务场景被验证是一种非常有效的召回方法。据笔者了解&#xff0c;swing 在工业界已得到比较广泛的使用&#xff0c;抖音&#xff0c;小红书&#xff0c;B 站等推荐系统均使用了swing i2i。 1.传统 icf 算法…

MySql常见问题(长期更新)

基于mysql 8.0.3版本 一、忘记root密码1.1 、linux 系统下忘记密码1.2、Windows 系统下忘记密码1.3 Unix 和类 Unix 系统 二、账号问题2.1 远程访问账号设置 一、忘记root密码 1.1 、linux 系统下忘记密码 啥&#xff1f;你问我为什么会忘记密码&#xff1f;别问&#xff0c;…

Flutter状态管理新的实践 | 京东云技术团队

1 背景介绍 1.1 声明式ui 声明式UI其实并不是近几年的新技术&#xff0c;但是近几年声明式UI框架非常的火热。单说移动端&#xff0c;跨平台方案有&#xff1a;RN、Flutter。iOS原生有&#xff1a;SwiftUI。android原生有&#xff1a;compose。可以看到声明式UI是以后的前端发…

大数据从0到1的完美落地之sqoop优化

Sqoop的Job与优化 Job操作 job的好处&#xff1a; 1、一次创建&#xff0c;后面不需要创建&#xff0c;可重复执行job即可 2、它可以帮我们记录增量导入数据的最后记录值 3、job的元数据默认存储目录&#xff1a;$HOME/.sqoop/ 4、job的元数据也可以存储于mysql中。 复制代码…