Spring Boot+Vue全栈开发实战
上QQ阅读APP看书,第一时间看更新

2.4 Web容器配置

2.4.1 Tomcat配置

1. 常规配置

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

代码解释:


• server.port配置了Web容器的端口号。

• error.path配置了当项目出错时跳转去的页面。

• session.timeout配置了session失效时间,30m表示30分钟,如果不写单位,默认单位是秒。由于Tomcat中配置session过期时间以分钟为单位,因此这里单位如果是秒的话,该时间会被转换为一个不超过所配置秒数的最大分钟数,例如这里配置了119,默认单位为秒,则实际session过期时间为1分钟。

• context-path表示项目名称,不配置时默认为/。如果配置了,就要在访问路径中加上配置的路径。

• uri-encoding表示配置Tomcat请求编码。

• max-threads表示Tomcat最大线程数。

• basedir是一个存放Tomcat运行日志和临时文件的目录,若不配置,则默认使用系统的临时目录。


当然,Web容器相关的配置不止这些,这里只列出了一些常用的配置,完整的配置可以参考官方文档Appendix A. Common application properties一节。

2. HTTPS配置

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

命令解释:


• -genkey表示要创建一个新的密钥。

• -alias表示keystore的别名。

• -keyalg表示使用的加密算法是RSA,一种非对称加密算法。

• -keysize表示密钥的长度。

• -keystore表示生成的密钥存放位置。

• -validity表示密钥的有效时间,单位为天。


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

代码解释:


• key-store表示密钥文件名。

• key-alias表示密钥别名。

• key-store-password就是在cmd命令执行过程中输入的密码。


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

图2-5

成功运行的结果如图2-6所示。

图2-6

此时,如果以HTTP的方式访问接口,就会访问失败,如图2-7所示。

图2-7

这是因为Spring Boot不支持同时在配置中启动HTTP和HTTPS。这个时候可以配置请求重定向,将HTTP请求重定向为HTTPS请求。配置方式如下:

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

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

2.4.2 Jetty配置

除了Tomcat外,也可以在Spring Boot中嵌入Jetty,配置方式如下:

主要是从spring-boot-starter-web中除去默认的Tomcat,然后加入Jetty的依赖即可。此时启动项目,查看启动日志,如图2-8所示。

图2-8

2.4.3 Undertow配置

Undertow是一个红帽公司开源的Java服务器,具有非常好的性能,在Spring Boot中也得到了很好的支持,配置方式与Jetty类似,代码如下:

启动后查看日志,如图2-9所示。

图2-9