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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MATLAB中griddata和griddatan插值函数简单说明

    MATLAB中griddata和griddatan插值函数简单说明MATLAB中griddata和griddatan插值函数简单说明前言本文会用容易理解的话解释下griddata和griddatan的用法,不会追求严谨,目的是抛砖引玉,帮助需要用到这两个插值函数的同学尽快理解使用。一、griddata函数是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):importnumpyasnpimportpandasaspdimportmatplotlib.pyp

    2022年5月9日
  • JavaWeb – GET 请求中 URL 的最大长度限制(附:解决方案)[通俗易懂]

    JavaWeb – GET 请求中 URL 的最大长度限制(附:解决方案)[通俗易懂]今天在写一个PHP相应JSOUP请求的功能时,发现当URL中包含的请求参数过长时会返回414错误。浏览器1、IEIE浏览器(MicrosoftInternetExplorer)对URL长度限制是2083(2K+53),超过这个限制,则自动截断(若是form提交则提交按钮不起作用)。中文字符的话只有2083/9=231个字符。2、Firefoxfi…

    2022年8月24日
  • 神经网络的优化算法_梯度下降优化算法

    神经网络的优化算法_梯度下降优化算法最近回顾神经网络的知识,简单做一些整理,归档一下神经网络优化算法的知识。关于神经网络的优化,吴恩达的深度学习课程讲解得非常通俗易懂,有需要的可以去学习一下,本人只是对课程知识点做一个总结。吴恩达的深度

    2022年8月1日
  • 教你画出业务架构图「建议收藏」

    教你画出业务架构图「建议收藏」1、什么是业务架构图?业务架构图是一种表达业务层级和关系的工具,业务架构服务于业务目标,通过描绘业务上下层关系,梳理一整套完整、简单的业务视图,降低业务系统的复杂度,提高客户理解度,最终给客户最直观的业务体现。2、业务架构图的三大核心要义简单来说可以分为三个核心步骤:分层、分模块、分功能。架构图核心要义之一:分层指的是将业务按照层级区分,每个层级都属于独立的版块。下层更抽象,上层更具体。层级需要有逻辑上的关联,比如下层为上层服务,或者提供能力支撑。架构图核心要义之二:分模块分

    2022年10月12日
  • navicat15 for mac激活码【2021.8最新】

    (navicat15 for mac激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月25日

发表回复

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

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