Spring Boot 学习笔记(五) 配置Servlet容器

Tomcat配置

因为Spring Boot默认内嵌的Tomcat为servlet容器,所以这里针对Tomcat配置作详细介绍,其实本节的配置对Tomcat、Jetty和Undertow都是通用的。

配置Tomcat:

关于Tomcat的所有属性都在org.springframework.boot.autoconfigure.web.ServerProperties配置类中做了定义,我们只需要在application.properties配置属性 做配置即可。

通用的Servlet容器配置以”server”作为前缀
Tomcat特有配置都以”server.tomcat”作为前缀。

这里写图片描述

更多的相关配置:

servlet容器:

这里写图片描述
这里写图片描述

Tomcat:

这里写图片描述
这里写图片描述

代码配置Tomcat

如果需要通过代码的方式配置servlet容器,则可以注册一个实现EmbeddedServletContainerCustomizer接口的Bean

如果想直接配置Tomcat、Jetty、Undertow:
则直接定义TomcatEmbeddedServletContainerFactory、JettyEmbbedServletContainerFactory、UndertowEmbeddedServletContainerFactory。

一、通用配置:

(1)新建类的配置

这里写图片描述

(2)当前配置文件内配置。若要在当前已有的配置文件内添加类的Bean的话,则在Spring配置中,注意当前类要声明为static

这里写图片描述

二、特定配置:
以Tomcat为例(Jetty使用JettyEmbeddedServletContainerFactory,Undertow使用UndertowEmbeddedServletContainerFactory)

这里写图片描述

替换Tomcat:

只需要把相应的servlet容器的依赖替换,就会自动配置相应的servlet

Tomcat: spring-boot-starter-tomcat

Jetty: spring-boot-starter-Jetty

Undertow: spring-boot-starter-undertow

SSL配置

SSL(Secure Sockets Layer,安全套接层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密。

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。

SSL协议可分为两层: SSL记录协议(SSL Record Protocol),他建立在可靠的传输协议之上(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL握手协议(SSL Handshake Protocol),建立在SSL记录协议之上,用于在实际数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。

而在基于B/S的Web应用中,是通过HTTPS来实现SSL的。HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即在HTTP下加入SSL层,HTTPS的安全基础是SSL。

1、生成证书

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

这里为了方便,演示自授权证书的生成:

每一个JDK或者JRE里都有一个工具叫keytool,它是一个证书管理工具,可以用来生成自签名的证书。

这里写图片描述

配置好环境变量之后,在控制台输入:

keytool -genkey -alias tomcat(因为Spring Boot默认内嵌Tomcat容器)

这里写图片描述

等全部输入完之后我们在当前目录下生成了一个.keystore文件,这就是我们要用的证书文件:

这里写图片描述

2、Spring Boot配置SSL

添加一个index.html到src/main/resources/static下,作为测试。

将.keystore文件复制到项目的根目录,然后在application.properties中做如下SSL的设置:

这里写图片描述

之后做上面讲的特定配置,指定端口号和会话时间:

这里写图片描述

运行之后,发现打印信息如下:

这里写图片描述

说明证书,配置文件都配置成功。

最后,输入网址:https://localhost:9090

这里写图片描述

http转向https:

很多时候我们在地址栏输入的是http,但是会自动转向到https,要实现这个功能,我们需要配置TomcatEmbeddedServletContainerFactory,并且添加Tomcat的connector来实现。

这里写图片描述

此时启动Spring Boot,控制台输出效果:

这里写图片描述

会发现Http已经被重定向。

最后我们在浏览器输入:
http://localhost:8080

Http会自动被定向到:https://localhost:9090

Favicon配置

Spring Boot提供了一个默认的Favicon,每次访问应用的时候都能看到:

这里写图片描述

关闭Favicon

可以在application.properties中设置关闭Favicon,默认为开启

spring.mvc.favicon.enabled=false

设置自己的Favicon

如果需要设置自己的Favicon,只需要将自己的favicon.ico(文件名不能变动)文件放置在类路径根目录、类路径META-INF/resources/下、类路径resources/下、类路径static/下或类路径public下。

这里将favicon.ico放置在src/main/resources/static下:

然后正常访问即可。

猜你喜欢

转载自blog.csdn.net/zxzzxzzxz123/article/details/70257500