本章介绍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 ”
结果图:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100300.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...