2.4 Web容器配置:Tomcat

ops/2024/9/22 23:02:04/

2.4 Web容器配置

  • 2.4.1Tomcat配置
    • 1.常规配置
    • 2. HTTPS配置
  • ***********

2.4.1Tomcat配置

1.常规配置

在SpringBoot项目中,可以内置Tomcat、Jetly、Undertow、Netty等容器。
当开发者添加了spring-boot-starter-web依赖之后,默认会使用Tomcat作为Web容器
如果需要对Tomcat做进一步的配置,可以在application.properties中进行配置
代码如下:

# 配置了Web容器的端口号
server.port=8081
# 配置了当项目出错时跳转去的页面。
server.error.path=/error
# 配置了session失效时间,30m表示30分钟,如果不写单位,默认单位是秒。
server.servlet.session.timeout=30m
# context-path表示项目名称,不配置时默认为/。如果配置了,就要在访问路径中加上配置的路径。
server.servlet.context-path=/chapter02 
# 配置Tomcat请求编码。
server.tomcat.uri-encoding=utf-8
# 表示Tomcat最大线程数。
server.tomcat.max-threads=500
# basedir是一个存放Tomcat运行日志和临时文件的目录,若不配置,则默认使用系统的临时目录。
server.tomcat.basedir=/home/sang/tmp

2. HTTPS配置

由于HTTPS具有良好的安全性,在开发中得到了越来越广泛的应用,像微信公众号、小程序等的开发都要使用HTTPS来完成。对于个人开发者而言,一个HTTPS证书的价格还是有点贵,国内有一些云服务器厂商提供免费的HTTPS证书,一个账号可以申请数个。不过在jdk中提供了一个Java数字证书管理工具keytool,在jdkbin目录下,通过这个工具可以自己生成一个数字证书,生成命令如下:

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore sang.p12 -validity 365 

命令解释:

  • -genkey表示要创建一个新的密钥。
  • -alias表示keystore的别名。
  • -keyalg表示使用的加密算法是RSA,一种非对称加密算法。●-keysize表示密钥的长度。
  • -keystore表示生成的密钥存放位置。
  • -validity表示密钥的有效时间,单位为天。

在cmd窗口中直接执行如上命令,在执行的过程中需要输入密钥口令等信息,根据提示输入即可。
命令执行完成后,会在当前用户目录下生成一个名为sang.p12的文件,将这个文件复制到项目的根目录下,然后在application.properties中做如下配置:

server.ssl.key-store=sang.p12
server.ssl.key-alias=tomcathttps
server.ssl.key-store-password=123456

代码解释:
● key-store表示密钥文件名。
● key-alias表示密钥别名。
● key-store-password就是在cmd命令执行过程中输入的密码。

配置成功后,启动项目,在浏览器中输入“https://localhost:8081/chapter02/hello”来查看结果。注意,证书是自己生成的,不被浏览器认可,此时添加信任或者继续前进即可,如图2-5所示。
在这里插入图片描述
成功运行的结果如图2-6所示。
在这里插入图片描述

此时,如果以HTTP的方式访问接口,就会访问失败,如图2-7所示。
在这里插入图片描述
这是因为SpringBoot不支持同时在配置中启动HTTP和HTTPS。这个时候可以配置请求重定向,将HTTP请求重定向为HTTPS请求。配置方式如下:

package com.ruoyi.common.config;import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** Tomcat配置*/
@Configuration
public class TomcatConfig {@BeanTomcatServletWebServerFactory tomcatServletWebServerFactory() {TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory() {@Overrideprotected void postProcessContext(Context context) {SecurityConstraint constraint = new SecurityConstraint();constraint.setUserConstraint("CONFIDENTIAL");SecurityCollection collection = new SecurityCollection();collection.addPattern("/*");constraint.addCollection(collection);context.addConstraint(constraint);}};factory.addAdditionalTomcatConnectors(createTomcatConnector());return factory;}private Connector createTomcatConnector() {Connector connector = new Connector("org.apache.coyote.http11.Http11AprProtocol");connector.setScheme("http");connector.setPort(8080);connector.setSecure(false);connector.setRedirectPort(8081);return connector;}
}

这里首先配置一个TomcatServletWebServerFactory ,然后添加一个Tomcat中的Connector(监听8080端口),并将请求转发到8081上去。

配置完成后,在浏览器中输入“http:/localhost:8080/chapter02/hello”,就会自动重定向到https://localhost:8081/chapter02/hello上。

***********


http://www.ppmy.cn/ops/3140.html

相关文章

qt之QSS常见属性

本文通过以下方式来设置QSS 控件名->setStyleSheet(""); 设置字体大小 font-size:18pt; 设置背景颜色 background-color:red; 或 background-color:#111111; 或 background-color:rgba(229,229,229,0); 注:rgba的最后一个值代表透明度 设置…

论文笔记:(INTHE)WILDCHAT:570K CHATGPT INTERACTION LOGS IN THE WILD

iclr 2024 spotlight reviewer 评分 5668 1 intro 由大型语言模型驱动的对话代理(ChatGPT,Claude 2,Bard,Bing Chat) 他们的开发流程通常包括三个主要阶段 预训练语言模型在被称为“指令调优”数据集上进行微调&…

原牛角源码(修罗bbs)全站程序打包带数据库备份

原牛角源码(修罗bbs)全站程序打包带数据库备份,牛角源码全站数据全站文件、插件打包分享给大家,有兴趣的可以搭建玩玩! conf文件夹中自己配置conf.php里面的数据库链接文件,默认管理账号:admin,密码&#…

Java插值查找知识点(含面试大厂题和源码)

插值查找(Interpolation Search)是一种在有序数组中查找特定元素的搜索算法。它是基于二分查找(Binary Search)的改进版本,特别适合当数据分布均匀时使用。插值查找的关键思想是利用数据的分布特性,预测要查…

鸿蒙OpenHarmony【搭建Ubuntu环境】

搭建Ubuntu环境 在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、Hi3516…

英语日常用语柯桥职场英语学习去哪里?专业语言培训推荐泓畅学校

“摸鱼”的英语表达 职场,总有些看似努力工作的同事,很可能是深藏不漏的“摸鱼圣手”。 但“摸鱼”的英文表达绝对不是“touch fish”这么简单!上班摸鱼,就是不好好干活、浪费时间,所以“loaf”这个单词有必要了解一下…

鸿蒙原生应用元服务-访问控制(权限)开发场景与权限声明

一、场景介绍 应用的APL(Ability Privilege Level)等级分为normal、system_basic和system_core三个等级,默认情况下,应用的APL等级都为normal等级。权限类型分为system_grant和user_grant两种类型。 二、配置文件权限声明 应用需要…

功能强大的开源数据中台系统 DataCap 2024.03.3 发布

推荐一套基于 SpringBoot 开发的简单、易用的开源权限管理平台,建议下载使用: https://github.com/devlive-community/authx 推荐一套为 Java 开发人员提供方便易用的 SDK 来与目前提供服务的的 Open AI 进行交互组件:https://github.com/devlive-commun…