Spring Boot第七章-Spring Boot Web配置-Tomcat配置

Spring Boot第七章-Spring Boot Web配置-Tomcat配置

本章介绍tomcat的配置

1.配置tomcat

直接在application配置文件中配置即可,servlet容器配置以server为前缀,而tomcat的特有配置以server.tomcat为前缀,至于有哪些参数可以在实际工作中需要了再找。配置例子:

server.port=8443
#配置session过期时间,spring boot2带上时间单位
server.servlet.session.timeout=5s
server.servlet.context-path=/

server.tomcat.uri-encoding=UTF-8

2.代码配置

这个可以在后面的ssl配置中看到例子,其实不常用,配置文件配置就好。

3.替换tomcat

很简单,比如替换成Jetty,只需要加入spring-boot-starter-jetty的依赖,然后在web依赖中exclusions里把tomcat的依赖加进去,这样就不会引用tomcat的依赖了。

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>

4.SSL配置

SSL(Secure Sockets Layer,安全套接层 )是网络通信提供安全以及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。

在基于B/S的web应用中,是通过HTTPS实现SSL的。

(1)生成证书

使用SSL首先需要一个证书,这个证书既可以是自签名的,也可以从SSL证书中心获得。

在这里使用jdk自带的keytool工具生成证书

命令:keytool -genkey -alias tomcat -keyalg RSA -keystore ./.keystore

然后输入需要的信息

这样会在当前目录下生成一个.keystore文件,就是我们需要的证书文件

注意:-keyalg RSA 必须加上,这是密钥算法,不加上浏览器不认的

-keystore ./.keystore 指定证书文件位置以及证书文件名,不加会把证书文件生成在电脑用户目录里,比如:C:\Users\DELL

(2)Spring Boot配置SSL

将.keystore复制到项目的根目录

在application文件中配置SSL信息,跟生成的证书文件里的内容一致

server.port=8443
server.ssl.key-store=.keystore
server.ssl.key-store-password=123456
server.ssl.key-store-type=JKS
server.ssl.key-alias=tomcat

此时启动后可以看到启动日志:

Tomcat started on port(s): 8443 (https) with context path ''

(3)http转向https

书上是springboot1.5以下的配置,而我使用的是springboot2.0版本,有些代码有差异,具体见代码:

 @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

    // 这是spring boot 1.5.X以下版本的
    /*@Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }*/

访问8080端口会转到https端口,启动后可以看到:

Tomcat started on port(s): 8443 (https) 8080 (http) with context path ”

结果图:

Spring Boot第七章-Spring Boot Web配置-Tomcat配置

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100300.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月16日 上午11:00
下一篇 2021年5月16日 下午12:00


相关推荐

  • SPSS实现卡方检验

    SPSS实现卡方检验总目录 SPSS 学习整理 SPSS 卡方检验目的适用情景数据处理 SPSS 操作 SPSS 输出结果分析知识点目的统计样本的实际观测值与理论推断值之间的偏离程度 如完全相等 卡方为 0 适用情景数据处理 SPSS 操作 SPSS 输出结果分析基本信息残差也就是期望值和实际值的差值最主要的分析结果 卡方为 0 571 显著性为 0 989 大于 0 05 接受原假设 认为样本分布于期望没有差异 即筛子是均匀分布的 知识点

    2026年3月26日
    1
  • 如何正确的理解RPN网络的train和test[通俗易懂]

    如何正确的理解RPN网络的train和test[通俗易懂]刚开始学FasterRCNN时,遇到这么一个困惑不知其他人有没有:RPN网络在程序中的训练是如何进行的?它都训练了网络中的哪些部分?其实这些我们如果不看源码都很难真正理解!我们以Faster-RCNN_TF的源码为例,以下代码取自./lib/networks/VGGnet_train.py#=========RPN============#以下代码的先后顺序我调整了一下,便…

    2022年6月23日
    28
  • Qt实现抽奖程序

    Qt实现抽奖程序一、简介该程序命名为Lucky,实现的功能如下:1.加载抽奖人员名单,并保存加载路径;2.单击左键或者点击ctrl+s开始抽奖,并滚动显示人员名单,显示的人员名单格式为部门-姓名。3.

    2022年7月3日
    26
  • USB协议简介「建议收藏」

    USB协议简介「建议收藏」1.USB协议简介https://blog.csdn.net/songze_lee/article/details/776580942017年08月28日23:20:16songze_lee阅读数:22978版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/songze_lee/article/details/77658094…

    2022年6月25日
    29
  • 扣子coze新玩法

    扣子coze新玩法

    2026年3月12日
    2
  • 1进程 ppid_PPID · 理解Linux进程 · 看云

    1进程 ppid_PPID · 理解Linux进程 · 看云PPID 每个进程除了一定有 PID 还会有 PPID 也就是父进程 ID 通过 PPID 可以找到父进程的信息 为什么进程都会有父进程 ID 呢 因为进程都是由父进程衍生出来的 后面会详细介绍几种衍生的方法 那么跟人类起源问题一样 父进程的父进程的父进程又是什么呢 实际上有一个 PID 为 1 的进程是由内核创建的 init 进程 其他子进程都是由它衍生出来 所以前面的描述并不准确 进程号为 1 的进程并没有 PPID 因

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号