war包部署
1.下載安裝Tomcat
下載地址:https://tomcat.apache.org/download-90.cgi
如下圖所示:
2.入口類繼承SpringBootServletInitializer重寫configure方法
如果要進行生產環境部署,需要單獨配置一下Spring Boot 的入口類,需要繼承SpringBootServletInitializer類,重寫configure方法,因為默認情況外部Tomcat不能讀取到Spring Boot 入口類的main方法啟動程序加載,使用需要繼承,代碼如下:
package com.luzhanshi.springBootFrame; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class SpringBootFrameApplication extends SpringBootServletInitializer { /** * Spring Boot 默認main方法 * @param args */ public static void main(String[] args) { SpringApplication.run(SpringBootFrameApplication.class, args); } /** * 重寫configure方法,加載啟動類 * @param builder * @return */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(SpringBootFrameApplication.class); } }
部分不熟悉IDEA的同學可能不知道怎么重新父類的方法,參照下圖即可:
3.排除內置tomcat
需要配置一下pom.xml,排除一下內置tomcat的jar包,防止打包之后與外面Tomcat jar 包沖突,導致項目啟動失敗,配置如下:
<!--排除內置tomcat jar包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
主要的代碼是provided,設置打包不會包含進去,由其他設施提供。
4.IDEA生成war文件
idea打war包步驟可參考鄙人:https://www.cnblogs.com/luzhanshi/p/10924640.html文章
如果打包為jar包的時候,不會包含JSP文件,所以訪問的時候回404,而打包為war的時候回包含JSP文件,所以需要把打包格式修改為war.
5.配置Tomcat運行項目
步驟一:把war文件復制到tomcat的webapps目錄下
步驟二:配置conf/server.xml
在Host標簽內添加Context設置,docBase屬性填寫war文件名稱,配置如下:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="此處填寫war包名" debug="0" privileged="true" reloadable="true" /> <!-- 其他代碼 --> </Host>
步驟三:啟動tomcat
運行bin/shutdown.bat文件,啟動tomcat
到此項目部署成功,雖然本人部署到Windows服務器了,Linux也是一樣的步驟。
如果我們不想加8080端口訪問,那么我們可以將tomcat默認的8080端口修改為80,這樣因為瀏覽器在我們沒有輸入端口時,默認的端口時80,那么我們就不用輸入端口了:
打開tomcat文件夾-->找到conf-->server.xml-->用記事本打開:
此時我們不用輸入端口也可以訪問項目了
jar包部署
ecliplse獲得jar:
IDEA獲得jar:
上面生成的jar包都會出現在target目錄下面
把上面的jar包復制到一個新建的文件夾:
將項目里面的下面這個文件也拷貝到該文件夾:
最后在該文件夾新建一個startup.bat文件,並編輯如下內容:
項目發布時最終文件如下:
application.properties是工程的配置文件,配置數據庫庫接參數、日志文件、日志等級、服務使用的端口等配置信息,把工程中文件拷貝出來即可
startup.bat啟動服務的批處理,也可包含配置信息,參考如下圖,
最后以管理員身份運行bat文件,項目就啟動了
訪問地址和本地訪問地址一樣:
jar和war的區別?
- jar(java application archive)java應用程序庫,通常為開發引用的通用類
- war(web application archive)web應用程序
所以從jar和war的區別來看,網頁程序打包成war格式也是很合適的。
四、知識擴展:Spring Boot 模板推薦
雖然上文我們詳細介紹了JSP在Spring Boot 中使用,但是Spring Boot官方並不推薦使用JSP(原因見下文)。
Spring Boot推薦模板引擎:
- Thymeleaf
- Freemarker
- Mustache
- Groovy Templates
Spring為什么不推薦使用JSP?
Spring官方不推薦使用JSP的原因有這么幾個:
- 官方文檔JSP沒有Thymeleaf好;
- Thymeleaf健康的開源項目,幾乎每個月都有更新,而JSP已經好幾年沒有實質性的進展;
- Thymeleaf有迅速響應的用戶論壇。
更多詳情,點擊查看:https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thymeleaf
總結:按照官方的說法,如果你有數百個JSP頁面,我們並不建議您應該立即拋棄它們,重新使用Thymeleaf,但是,如果您開始開發一個新項目,強烈鼓勵您比較其他模板引擎和JSP,以確認哪一個更適合您。