Spring Boot專案部署到外部Tomcat
說明
Spring Boot自帶Tomcat外掛,可以直接編寫啟動類,開啟Tomcat服務,但是在實際開發中,伺服器一般是已經建好了的,由專人維護,因此不能用Spring Boot自帶的Tomcat,而是應將我們的Spring Boot專案打包成war釋出到外部的伺服器如Tomcat
開發環境
MyEclipse2017、JDK 1.8、Tomcat 7.0.77
開發步驟
1 搭建Spring Boot專案
首先需要在MyEclipse搭建一個Spring Boot專案,可以參考我的上一篇文章 MyEclipse搭建Spring Boot
首先給出專案結構:
2 配置pom.xml檔案
需要去除Tomcat外掛、新增thymeleaf依賴、unbescape依賴,配置Tomcat版本、打包的war名稱等等,筆者都有註釋
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>yunlingfly</groupId>
<artifactId>MavenSpringBoot</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<!-- 繼承父包 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath></relativePath>
</parent>
<name>MavenSpringBoot Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope><!-- 去除Spring Boot自帶的Tomcat外掛 -->
</dependency>
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>-->
<!-- thymeleaf包含上面註釋了的依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 沒有下面這句會報NoClassDefFoundError: org/unbescape/html/HtmlEscape錯誤 -->
<dependency>
<groupId>org.unbescape</groupId>
<artifactId>unbescape</artifactId>
<version>1.0</version>
</dependency>
<!-- 測試工具配置 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 配置低版本Tomcat,否則需8.5以上版本,請根據自己的Tomcat版本配置 -->
<properties>
<tomcat.version>7.0.77</tomcat.version>
</properties>
<build>
<finalName>MavenSpringBoot</finalName>
<plugins>
<!-- war部署使用 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>MavenSpringBoot</warName><!-- 設定打包後war包的名字 -->
</configuration>
</plugin>
</plugins>
</build>
</project>
3 編寫程式
1)啟動類:SpringBootTest.java
程式的入口啟動,需要繼承SpringBootServletInitializer、重寫configure方法(啟動類只能有一個,不能放在根目錄default package,並且需要位於其他類同級目錄或最上級目錄,這樣啟動類才能呼叫其他類,我放在了同級目錄,請參照上面的專案結構貼圖)
package test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
// @SpringBootApplication宣告讓spring boot自動給程式進行必要的配置
@SpringBootApplication
public class SpringBootTest extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringBootTest.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringBootTest.class);
}
}
2)控制類:TemplateController.java
用於配置攔截字首和轉向等
package test;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TemplateController {
// 配置攔截字首
@RequestMapping("/hello")
public String hello(Map<String, Object> map) {
map.put("hello", "from TemplateController.helloHtml");
// 使用thymeleaf省略檔案位置/templates/和字尾.html
return "/hello";
}
}
3)配置類與配置檔案:Config.java與application.properties
用於配置WebMVC介面卡
package test;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
public class Config extends WebMvcConfigurerAdapter{
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
在/src/main/resources資料夾下新建application.properties檔案,用於配置上下文和thymeleaf
#配置上下文
server.contextPath=/MavenSpringBoot
#配置錯誤頁面的請求路徑
#error.path=/error
#配置thymeleaf檔案位置
spring.thymeleaf.prefix=classpath:/templates/
#配置thymeleaf字尾
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
#開發時關閉快取,否則你必須重新執行spring-boot的main()方法才能看到頁面更改的效果。
spring.thymeleaf.cache=false
說明:Maven資原始檔的約定目錄結構 Maven的資原始檔目錄:/src/java/resources
spring-boot專案靜態檔案目錄:/src/java/resources/static
spring-boot專案模板檔案目錄:/src/java/resources/templates
spring-boot靜態首頁的支援,即index.html放在以下目錄結構會直接對映到應用的根目錄下:
classpath:/META-INF/resources/index.html
classpath:/resources/index.html
classpath:/static/index.html
calsspath:/public/index.html
4)前端頁面:在/src/main/resources資料夾下新建templates檔案再在templates資料夾下新建hello.html與index.html,注意引入thymeleaf
hello.html:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"><!-- 注意引入thymeleaf -->
<head>
<title>Hello World!</title>
</head>
<body>
<h1 th:inline="text">Hello.v.2</h1>
<p th:text="${hello}"></p>
</body>
</html>
index.html:
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"><!-- 注意引入thymeleaf -->
<head lang="en">
<meta charset="UTF-8" />
<title>index</title>
</head>
<body>
你好
</body>
</html>
4 部署
專案右鍵Run As->Maven clean(清除快取),然後Run As->Maven install(打包成war)
之後就可以在target資料夾下找到打包好的war檔案(再次生成可以直接將target下的該war刪除,然後右鍵Run As->Maven clean,Run As->Maven install即可再次生成修改過的war包)
將該war包放入Tomcat的webapps資料夾下,執行Tomcat,Tomcat自動解壓war檔案後,筆者以自己機器的Tomcat 7.0.77為例(本機),開啟瀏覽器輸入http://127.0.0.1:8080/MavenSpringBoot/hello即可看到效果,最後附上筆者的完整war包供參考,CSDN下載:https://download.csdn.net/download/weixin_38187317/10279091
注:localhost與127.0.0.1與本機IP的區別(百度):
1、127.0.0.1是回送地址,指本地機,一般用來測試使用。回送地址是本機回送地址(Loopback Address),即主機IP堆疊內部的IP地址,主要用於網路軟體測試以及本地機程式間通訊,無論什麼程式,一旦使用回送地址傳送資料,協議軟體立即返回,不進行任何網路傳輸。
2、localhost是本地DNS解析的127.0.0.1的域名,這個你開啟本機的hosts檔案就可以看到,一般位於c:\windows\system32\driver\etc下,一般在最後有這麼一行:
127.0.0.1 localhost
而這個localhost你可以隨意更改,如果改成百度,新浪之類的www.baidu.com重啟你再試一下,就會發現很有意思了。
3、本機IP則指你連到網路上的IP地址,可以是內網地址,當然也可能是公網IP,這個就是你實際利用TCP/IP協議與網上計算機通訊時使用的IP了。
相關文章
- 把spring-boot專案部署到tomcat中的方法SpringbootTomcat
- springboot 專案部署到外部tomcatSpring BootTomcat
- springboot專案部署到tomcat容器Spring BootTomcat
- 使用 Docker 部署 Spring Boot 專案DockerSpring Boot
- 使用Docker部署Spring Boot專案DockerSpring Boot
- Springboot2專案配置(熱部署+war+外部tomcat+外部配置檔案)Spring Boot熱部署Tomcat
- Kubernetes中部署Spring Boot專案(七)Spring Boot
- 在Docker中部署Spring Boot專案DockerSpring Boot
- 如何將War檔案部署到Spring Boot嵌入式的Tomcat中 - Vojtech RuzickaSpring BootTomcat
- SpringBoot專案如何打包部署到tomcat中去Spring BootTomcat
- Jenkins部署Web專案到遠端tomcatJenkinsWebTomcat
- 配置springboot專案使用外部tomcatSpring BootTomcat
- Linux雲服務部署Spring boot專案LinuxSpring Boot
- 使用 Docker 部署 Spring Boot 專案,帶勁!!DockerSpring Boot
- 三分鐘把spring boot打成war包部署到tomcat中Spring BootTomcat
- Centos8部署jdk、mysql8、tomcat,並部署專案到tomcat中CentOSJDKMySqlTomcat
- 基於Jenkins自動化部署spring boot專案JenkinsSpring Boot
- spring-boot專案的docker整合化部署(一)SpringbootDocker
- Tomcat部署web專案流程TomcatWeb
- 在spring boot專案(maven)中引入其他 spring boot專案Spring BootMaven
- 使用springboot建立web專案,並使用外部TomcatSpring BootWebTomcat
- Spring Boot專案微信雲託管入門部署Spring Boot
- Spring Boot專案建立Spring Boot
- 精盡Spring Boot原始碼分析 - 支援外部 Tomcat 容器的實現Spring Boot原始碼Tomcat
- 多個springboot專案部署到tomcat,Error deploying web application archiveSpring BootTomcatErrorWebAPPHive
- Spring Boot入門(一):搭建Spring Boot專案Spring Boot
- SpringBoot部署到外部Tomcat無法註冊到Nacos服務端Spring BootTomcat服務端
- springboot 整合外部tomcat war包部署方式Spring BootTomcat
- spring boot 配置外接tomcatSpring BootTomcat
- Spring boot入門(一):快速搭建Spring boot專案Spring Boot
- 如何將React專案,部署到Web伺服器的Tomcat 上ReactWeb伺服器Tomcat
- 將普通web專案(FWGL 服務管理)用idea 部署到tomcatWebIdeaTomcat
- Spring Boot 專案整合RedisSpring BootRedis
- 如何打包部署一個tomcat專案Tomcat
- Tomcat 部署專案的三種方法Tomcat
- 專案部署到LinuxLinux
- idea建立spring boot專案慢()IdeaSpring Boot
- 如何執行Spring Boot專案Spring Boot