Spring Boot(三) 将war文件部署到tomcat 、 Thymeleaf示例
Spring Boot(三) 将war文件部署到tomcat 、 Thymeleaf示例
一 、 将war文件部署到tomcat
- 对于Spring Boot WAR部署,需要执行三个步骤:
- 扩展SpringBootServletInitializer
- 根据提供标记嵌入式servlet容器。
- 更新包装为 War
- 测试工具
- Spring Boot 1.4.2.RELEASE
- Tomcat 8.5.9
- Maven 3
- 注:在Spring Boot中,具有嵌入服务器解决方案的最终可执行JAR文件可能不适合所有生产环境,特别是部署团队(具有良好的服务器优化和监控技能知识,但缺乏开发经验的团队),他们希望完全控制服务器,并且不能接触代码。
扩展SpringBootServletInitializer
使现有的 @SpringBootApplication 类扩展 SpringBootServletInitializer
SpringBootWebApplication.java 文件内容如下:
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication public class SpringBootWebApplication {public static void main(String[] args) throws Exception {SpringApplication.run(SpringBootWebApplication.class, args);}}
SpringBoot war 部署
SpringBootWebApplication.java 文件的内容如下 -
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 public class SpringBootWebApplication extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(SpringBootWebApplication.class);}public static void main(String[] args) throws Exception {SpringApplication.run(SpringBootWebApplication.class, args);}}
如果要为部署创建了一个额外的SpringBootWebApplication类,请确保告诉Spring Boot要从哪个主类开始启动程序:在 pom.xml 文件中增加以下内容指定 -
<properties><start-class>com.yiibai.NewSpringBootWebApplicationForWAR</start-class> </properties>
提供标记嵌入式Servlet容器
在 pom.xml 文件中增加以下内容指定 -
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- marked the embedded servlet container as provided --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency></dependencies>
更新包装为War
在pom.xml中添加
<packaging>war</packaging>
完成,mvn打包并将$project/target/xxx.war复制到Tomcat发布目录进行部署。
完整的Spring Boot War + Tomcat 部署
- 以Spring Boot Thymeleaf为例,更新它并手动部署到Tomcat。
- 更新现有的SpringBootWebApplication并让它扩展SpringBootServletInitializer类
SpringBootWebApplication.java文件的完整代码如下所示 -
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 public class SpringBootWebApplication extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(SpringBootWebApplication.class);}public static void main(String[] args) throws Exception {SpringApplication.run(SpringBootWebApplication.class, args);}}
更新打包包,并按提供的标记spring-boot-starter-tomcat。pom.xml文件的完整代码如下所示 -
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><artifactId>spring-boot-web-thymeleaf</artifactId><packaging>war</packaging><name>Spring Boot Web Thymeleaf Example</name><description>Spring Boot Web Thymeleaf Example</description><url>http://www.yiibai.com</url><version>1.0</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.2.RELEASE</version></parent><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- marked the embedded servlet container as provided --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><!-- hot swapping, disable cache for template, enable live reload --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency><!-- Optional, for bootstrap --><dependency><groupId>org.webjars</groupId><artifactId>bootstrap</artifactId><version>3.3.7</version></dependency></dependencies><build><plugins><!-- Package as an executable jar/war --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>
这是可选的,将contextPath更新为/yiibai以方便稍后作为演示。准备好WAR部署文件。application.properties 文件的完整内容如下所示 -
welcome.message: Hello Yiibaiserver.contextPath=/yiibai
- 使用maven执行打包 ,后在target目录下得到一个war文件 。 放到Tomcat的webapps目录下 开启tomcat即可
- 访问:http://localhost:8080/yiibai/ ,程序没有错误问题,应该会看到以下结果 -
二 、Thymeleaf示例
- 这是一个Spring Boot Web应用示例,使用嵌入式Tomcat + Thymeleaf模板引擎,并将其作为可执行JAR文件。
- 使用相关技术
- Spring Boot 1.4.2.RELEASE
- Spring 4.3.4.RELEASE
- Thymeleaf 2.1.5.RELEASE
- Tomcat Embed 8.5.6
- Maven 3
- Java 8
- 项目目录
项目依赖
- 声明 spring-boot-starter-thymeleaf以获得开发Spring + Thymeleaf Web应用程序所需的任何程序类库。
pom.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?> <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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><artifactId>spring-boot-web-thymeleaf</artifactId><packaging>jar</packaging><name>Spring Boot Web Thymeleaf 示例</name><description>Spring Boot Web Thymeleaf 示例描述</description><url>http://www.yiibai.com</url><version>1.0</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.2.RELEASE</version></parent><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- hot swapping, disable cache for template, enable live reload --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency><!-- Optional, for bootstrap --><dependency><groupId>org.webjars</groupId><artifactId>bootstrap</artifactId><version>3.3.7</version></dependency></dependencies><build><plugins><!-- Package as an executable jar/war --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>
- 显示项目依赖关系:
- 提示: spring-boot-devtools这个spring-boot-devtools有助于禁用缓存并启用热插拔,以便开发人员总是看到最后的更改。 有利于发展。 阅读这篇 - Spring Boot - 开发工具。尝试修改Thymeleaf模板或属性文件,刷新浏览器以查看更改立即生效。
Spring Boot
使用@SpringBootApplication进行注释。 运行此类来启动Spring Boot Web应用程序。
SpringBootWebApplication.java
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication public class SpringBootWebApplication {public static void main(String[] args) throws Exception {SpringApplication.run(SpringBootWebApplication.class, args);}}
一个简单的Spring控制器类: WelcomeController.java 代码如下 -
import java.util.Map;import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;@Controller public class WelcomeController {// inject via application.properties@Value("${welcome.message:test}")private String message = "Hello World";@RequestMapping("/")public String welcome(Map<String, Object> model) {model.put("message", this.message);return "welcome";}}
Thymeleaf+资源+静态文件
对于Thymeleaf模板文件,放入 src/main/resources/templates/ 目录下, src/main/resources/templates/welcome.html 文件代码如下 -
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Spring Boot Thymeleaf Hello World示例</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css"href="webjars/bootstrap/3.3.7/css/bootstrap.min.css" /><link rel="stylesheet" th:href="@{/css/main.css}"href="../../css/main.css" /></head> <body><nav class="navbar navbar-inverse"><div class="container"><div class="navbar-header"><a class="navbar-brand" href="#">Spring Boot</a></div><div id="navbar" class="collapse navbar-collapse"><ul class="nav navbar-nav"><li class="active"><a href="#">首页</a></li><li><a href="#about">关于</a></li></ul></div></div></nav><div class="container"><div class="starter-template"><h1>Spring Boot Web Thymeleaf示例</h1><h2><span th:text="'Message: ' + ${message}"></span></h2></div></div><!-- /.container --><script type="text/javascript"src="webjars/bootstrap/3.3.7/js/bootstrap.min.js"></script></body> </html>
对于静态文件,如CSS或Javascript,将它们放入 /src/main/resources/static/ 目录, /src/main/resources/static/css/main.css文件代码如下 -
h1{font-size: 20pt; } h2{font-size: 16pt; }
对于属性文件,放入 /src/main/resources/ 目录中, /src/main/resources/application.properties 文件中的代码内容如下 -
welcome.message: Hello, Spring Boot
- 运行
- 启动Spring Boot Web应用程序,使用Maven命令:mvn spring-boot:run,运行结果输出结果如下 - 可以再浏览器中访问localhost:8080测试
- 创建可执行jar
- 打包项目以创建可执行的JAR文件。使用Maven命令:mvn clean package,
- 执行可执行jar:F:\worksp\springboot\spring-boot-web-thymeleaf> java -jar target/spring-boot-web-thymeleaf-1.0.jar
- 在浏览器中访问localhost:8080测试
Spring Boot(三) 将war文件部署到tomcat 、 Thymeleaf示例相关推荐
- IDEA下spring boot项目打包war包部署外部tomcat问题
第一步,修改配置pom.xml文件 <packaging>war</packaging> <dependency> <groupId>org.sprin ...
- 将WAR文件部署到Tomcat的5种方法
如果要开发Web应用程序,而Apache Tomcat是目标Web服务器,则需要了解如何将WAR文件部署到Tomcat,以便可以查看应用程序是否在运行时起作用. 这是将WAR文件部署到Tomcat的五 ...
- 打包tomcat没有xml文件_Spring Boot 项目打包 War 并部署到 Tomcat
之前使用 SpringBoot 所做的开发,都是将项目打包成 Jar 的,但是如果是作为一个 Web 项目,最好是将项目打包成 War. 1. Jar 包和 War 包的区别 1.概念 jar 包:J ...
- spring boot 项目打成war包部署到服务器
这是spring boot学习的第二篇了,在上一篇已经整合了spring boot项目了,如果还有小伙伴没有看得可以先去看第一篇 基础整合spring boot项目 到这里的小伙伴应该都是会整合基本的 ...
- Spring boot如何打war包发布到tomcat
前言: 平时在使用java做项目开发时,首先想到利用框架来提升开发效率,和提高可维护性.选择spring可以使用ssm(spring框架,springMVC,mybatis),而且企业中应用也比较广泛 ...
- 精选Spring Boot三十五道必知必会知识点!
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家.本文精选了三十五个常见的Spring Boot知识点,祝你一臂之力! 问题一 Spr ...
- idea打包war包方法,以及将war包部署到tomcat详细步骤
一.idea打包war包方法 1.在项目中找到pom.xml文件 在pom.xml文件中加入 <packaging>war</packaging> ....<name&g ...
- Spring Boot项目打war包(idea:多种方式)
Spring Boot项目打war包(idea:多种方式) 前言:在idea中,经常会对web项目进行打jar包或者war包.jar包在Java环境中运行,war包在Tomcat服务器中跑.对于打wa ...
- Spring Boot Executable jar/war 原理
spring boot executable jar/war spring boot里其实不仅可以直接以 java -jar demo.jar的方式启动,还可以把jar/war变为一个可以执行的脚本来 ...
最新文章
- 查询两张表 然后把数据并在一起_工作表数据查询时,类似筛选功能LIKE和NOT LIKE的应用...
- java表或视图不存在_Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在...
- 深度丨我们可以有多信任人工智能
- js 日历插件开发
- JVM - 常见的JVM种类
- 自定义模板类(循环队列)
- 为什么很多公司转型Go语言开发?Go语言能做什么
- 3分钟了解带参数的main函数
- 图的遍历DFS与BFS(邻接表)
- 大院大所合作对接会7天倒计时!亮点抢先看
- python指定进程断网_python通过scapy模块进行arp断网攻击
- mysql sqlstate 08001_关于Toad连接DB2的sqlstate=08001错误
- linux 扫描开放的端口命令,在Linux系统中检查(扫描)开放端口的方法
- luogu P1892 团伙
- AUTOCAD——射线命令
- python 获取复数的实部和虚部
- python3之微信文章爬虫
- Hive执行Python脚本错误解决【return code 20003】
- 使用Docker提交代码参加天池比赛流程
- 爱了爱了!丰巢智能政务柜真的太实用了
热门文章
- 我----大抵是个废人
- 有意思的onerror的用法
- ASP.NET中的数据绑定:哪个更快? (转)
- 开机动画适配方案_2020 年 4 月前 App 启动画面、屏幕调整需按要求适配,否则存拒审风险!...
- matlab and操作,系统建模 | Control Tutorials for Matlab and Simulink
- Vite与webpack优势
- Java黑皮书课后题第7章:7.26(完全相同的数组)如果两个数组list1和list2的对应元素都相等,认为完全相同。编写一个测试程序,提示用户输入两个整数列表,然后显示这两个列表是否完全相同
- webform 的路由
- VirtualBox中的Linux读取Windows共享目录
- pandas,apply并行计算的一个demo