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.配置pom.xml

需要配置一下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.

jar和war的区别?

  • jar(java application archive)java应用程序库,通常为开发引用的通用类
  • war(web application archive)web应用程序

所以从jar和war的区别来看,网页程序打包成war格式也是很合适的。

如果需要修改生成文件的文件名称,可以设置build下的finalName属性,代码如下:

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也是一样的步骤。

四、知识扩展:Spring Boot 模板推荐

虽然上文我们详细介绍了JSP在Spring Boot 中使用,但是Spring Boot官方并不推荐使用JSP(原因见下文)。

Spring Boot推荐模板引擎:

  • Thymeleaf
  • Freemarker
  • Mustache
  • Groovy Templates

Spring为什么不推荐使用JSP?

Spring官方不推荐使用JSP的原因有这么几个:

  1. 官方文档JSP没有Thymeleaf好;
  2. Thymeleaf健康的开源项目,几乎每个月都有更新,而JSP已经好几年没有实质性的进展;
  3. Thymeleaf有迅速响应的用户论坛。

更多详情,点击查看:https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thymeleaf

总结:按照官方的说法,如果你有数百个JSP页面,我们并不建议您应该立即抛弃它们,重新使用Thymeleaf,但是,如果您开始开发一个新项目,强烈鼓励您比较其他模板引擎和JSP,以确认哪一个更适合您。

八、SpringBoot生产环境部署的更多相关文章

  1. Centos7 HyperLedger Fabric 1.4 生产环境部署

    Kafka生产环境部署案例采用三个排序(orderer)服务.四个kafka.三个zookeeper和四个节点(peer)组成,共准备八台服务器,每台服务器对应的服务如下所示: kafka案例网络拓扑 ...

  2. Spring Boot (二)集成Jsp与生产环境部署

    一.简介 提起Java不得不说的一个开发场景就是Web开发,也是Java最热门的开发场景之一,说到Web开发绕不开的一个技术就是JSP,因为目前市面上仍有很多的公司在使用JSP,所以本文就来介绍一下S ...

  3. HyperLedger Fabric 1.4 kafka生产环境部署(11.1)

    11.1 Kafka模式简介       上一章介绍的Solo模式只存在一个排序(orderer)服务,是一种中心化结构,一旦排序(orderer)服务出现了问题,整个区块链网络将会崩溃,为了能在正式 ...

  4. Spring Boot 集成Jsp与生产环境部署

    一.简介 提起Java不得不说的一个开发场景就是Web开发,也是Java最热门的开发场景之一,说到Web开发绕不开的一个技术就是JSP,因为目前市面上仍有很多的公司在使用JSP,所以本文就来介绍一下S ...

  5. springboot多环境部署(profile多环境支持)

    springboot多环境部署(profile多环境支持) 背景   项目开发过程中会有开发环境(dev),测试环境(test)和生产环境(prod),不同的环境需要配置不同的配置,profile提供 ...

  6. Django + Uwsgi + Nginx 的生产环境部署

    使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归 ...

  7. 深度学习Tensorflow生产环境部署(上·环境准备篇)

    最近在研究Tensorflow Serving生产环境部署,尤其是在做服务器GPU环境部署时,遇到了不少坑.特意总结一下,当做前车之鉴. 1 系统背景 系统是ubuntu16.04 ubuntu@ub ...

  8. Vue生产环境部署

    前面的话 开发时,Vue 会提供很多警告来帮助解决常见的错误与陷阱.生产时,这些警告语句却没有用,反而会增加载荷量.再次,有些警告检查有小的运行时开销,生产环境模式下是可以避免的.本文将详细介绍Vue ...

  9. 【原创】大数据基础之Airflow(2)生产环境部署airflow研究

    一 官方 airflow官方分布式部署结构图 airflow进程 webserver scheduler flower(非必须) worker airflow缺点 scheduler单点 通过在sch ...

随机推荐

  1. python实现加密的方式总结

    python实现加密的方式总结 原文地址 目录 基础知识扫盲 Base64 MD5 DES 3DES AES RSA 基础知识扫盲 对称加密 对称密钥加密 , 又叫私钥加密.即信息发送的方和接受方用一 ...

  2. python接口自动化 - Requests-3 高级用法

    高级用法 本篇文档涵盖了 Requests 的一些高级特性. 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 url ...

  3. 什么是file_sort?如何避免file_sort

    阿里巴巴编码规范有这么一例 [推荐]如果有order by场景,请注意利用索引的有序性. order by最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现file_sort的情况,影 ...

  4. 【leetcode 136】136. Single Number

    要求:给定一个整数数组,除了其中1个元素之外,其他元素都会出现两次.找出这个只出现1次的元素. 例: array =[3,3,2,2,1]    找出元素1. 思路:最开始的想法是用两次for循环,拿 ...

  5. linux vps定时备份网站、数据库命令sh

    vps定时备份数据库命令,将下面的代码保存为backsql.sh,然后设置定时任务运行即可. cd /home/admin/backup #切换到备份目录 btimes=$(date +%y%m%d% ...

  6. 深入理解JVM线程模型

    1. jvm内存模型在描述jvm线程模型之前,我们先深入的理解下,jvm内存模型.在jvm1.8之前,jvm的逻辑结构和物理结构是对应的.即Jvm在初始化的时候,会为堆(heap),栈(stack), ...

  7. dubbo 2.8.4(dubbox)的jar包制作【添加到maven本地仓库】

    1. 下载 网址:https://github.com/hongmoshui/dubbox 2.  解压zip文件 3.  用maven编译文件 如果没有配置全局maven,就直接使用cmd命令行[进 ...

  8. 一键部署lnmp脚本

    先下载好nginx安装包,解包之后可以执行下面的脚本,一键部署 cd nginx-1.12.2 useradd -s /sbin/nologin nginx./configuremakemake in ...

  9. idea控制台搜索框

    https://blog.csdn.net/honnyee/article/details/82772948

  10. 上传图片,正在加载,loading

    https://blog.csdn.net/yansong_8686/article/details/50361573