点击上方蓝色我们家Java,选择“关注”
| server.port | 内嵌容器启动端口号,默认为8080 |
| server.servlet.context-path | 配置项目的访问路径 |
| server.tomcat.uri-encoding | 用于解码URI的字符编码 |
| server.error.path | 配置当前项目出错时跳转去的页面 |
| server.servlet.session.timeout | 配置session失效时间,默认30分钟 |
| server.tomcat.basedir | 配置Tomcat运行日志和临时文件的目录。若不配置则默认使用系统的临时目录。 |

server:
port: 8080
tomcat:
uri-encoding: UTF-8
package com.javafamily.familydemo.config;
import org.apache.catalina.connector.Connector;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TomcatCustomizerConfig {
@Bean
// 添加定制器
public ConfigurableServletWebServerFactory configurableServletWebServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers(new MyTomcatConnectionCustomizer());
return factory;
}
static class MyTomcatConnectionCustomizer implements TomcatConnectorCustomizer {
public MyTomcatConnectionCustomizer() {
}
@Override
public void customize(Connector connector) {
connector.setPort(Integer.parseInt("8080"));
connector.setProperty("maxConnections", "8192");
}
}
}
以上这段代码核心的配置工厂是ConfigurableServletWebServerFactory,默认使用TomcatServletWebServerFactory来创建TomcatWebServer的抽象web服务的抽象工厂类。
可定制的内容更多,使用更灵活。
配置HTTPS
生成自签名证书
keytool -genkeypair -alias selfsigned_localhost_sslserver -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore JavaFamily.p12 -validity 3650
| -genkeypair | 创建一个新的密钥 |
| -alias | keystore的别名 |
| -keyalg | 表示使用的加密算法是RSA |
| -keysize | 密钥长度 |
| -keystore | 密钥存放位置 |
| -validity | 密钥有效时长 |

创建好JavaFamily.p12后,将其拖进src/main/resources/config下。
配置application.yml文件:
server:
port: 8888
ssl:
key-store: classpath:config/JavaFamily.p12
key-store-password: 123456
key-store-type: PKCS12
配置完成后启动程序。
访问http://localhost:8888/hello:

再访问https://localhost:8888/hello:


HTTP请求重定向为HTTPS
首先在application.yml中添加一个端口:
server:
port: 8888
httpPort: 80
ssl:
key-store: classpath:config/JavaFamily.p12
key-store-password: 123456
key-store-type: PKCS12
再改写之前创建的TomcatCustomizerConfig.java文件:
package com.javafamily.familydemo.config;
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TomcatCustomizerConfig {
@Value("${server.httpPort}")
int httpPort;
@Value("${server.port}")
int httpsPort;
@Bean
public ConfigurableServletWebServerFactory configurableServletWebServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
factory.addAdditionalTomcatConnectors(connector());
return factory;
}
public Connector connector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
// 监听http端口号
connector.setPort(httpPort);
// 不安全
connector.setSecure(false);
// 监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(httpsPort);
return connector;
}
}
用HTTP协议的80端口访问会自动跳转到HTTPS协议的8888端口。这时当我们访问http://localhost:80/hello时会自动跳转到https://localhost:8888/hello。
点击下方阅读原文,查看上一篇
文章转载自我们家Java,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




