javascript
SpringBoot入门之内嵌Tomcat配置
spring boot默認web程序啟用tomcat內嵌容器tomcat,監聽8080端口,servletPath默認為 / 。需要用到的就是端口、上下文路徑的修改,在spring boot中其修改方法極其簡單,實例如下:
server.port=8088 server.context-path=/test啟動程序,日志如下:
2018-03-08 19:57:58.824 INFO 12046 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8088 (http)可以看出其監聽端口8088
自定義tomcat
在實際的項目中簡單的配置tomcat端口肯定無法滿足大家的需求,因此需要自定義tomcat配置信息來靈活的控制tomcat。下面的實例定義了tomcat的默認編碼格式
package com.ysl.conf;import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import java.nio.charset.Charset;/*** tomcat配置*/ @Configuration public class TomcatConfig {@Beanpublic EmbeddedServletContainerFactory servletContainer(){TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();factory.setUriEncoding(Charset.forName("UTF-8"));return factory;} }構建EmbeddedServletContainerFactory的bean,獲取到TomcatEmbeddedServletContainerFactory實例以后可以對tomcat進行設置,例如這里設置編碼為UTF-8
SSL配置
生成證書
keytool -genkey -alias springboot -keyalg RSA -keystore /Users/ysl/software/ca1/keystore 設置密碼123456修改tomcat的server.xml,驗證證書是否正確
<Connectorprotocol="org.apache.coyote.http11.Http11NioProtocol"port="8443" maxThreads="200"scheme="https" secure="true" SSLEnabled="true"keystoreFile="/Users/liaokailin/software/ca1/keystore" keystorePass="123456"clientAuth="false" sslProtocol="TLS"/>啟動tomcat,訪問https://localhost:8443
spring boot 內嵌tomcat ssl
配置資源文件:
server.port=8443 server.ssl.enabled=true server.ssl.keyAlias=springboot server.ssl.keyPassword=123456 server.ssl.keyStore=/Users/ysl/software/ca1/keystore多端口監聽配置
前面啟動ssl后只能走https,不能通過http進行訪問,如果要監聽多端口,可采用編碼形式實現。
1.注銷前面ssl配置,設置配置?server.port=8088
2.修改TomcatConfig.java
package com.ysl.conf;import org.apache.catalina.connector.Connector; import org.apache.coyote.http11.Http11NioProtocol; import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import java.io.File; import java.nio.charset.Charset;/*** tomcat配置*/ @Configuration public class TomcatConfig {@Beanpublic EmbeddedServletContainerFactory servletContainer(){TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();factory.setUriEncoding(Charset.forName("UTF-8"));factory.addAdditionalTomcatConnectors(createSslConnector());return factory;}private Connector createSslConnector() {Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();try {File truststore = new File("/Users/ysl/software/ca1/keystore");connector.setScheme("https");protocol.setSSLEnabled(true);connector.setSecure(true);connector.setPort(8443);protocol.setKeystoreFile(truststore.getAbsolutePath());protocol.setKeystorePass("123456");protocol.setKeyAlias("springboot");return connector;} catch (Exception ex) {throw new IllegalStateException("cant access keystore: [" + "keystore" + "] ", ex);}} }通過addAdditionalTomcatConnectors方法添加多個監聽連接;此時可以通過http 8088端口,https 8443端口。
?
轉載于:https://www.cnblogs.com/senlinyang/p/8526633.html
總結
以上是生活随笔為你收集整理的SpringBoot入门之内嵌Tomcat配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: link和@import的区别
- 下一篇: 建行专项分期容易批吗?建行专项分期有什么