1.打war包
pom.xml文件设置
(1)
<packaging>war</packaging>
(2)
<!--(就不用再排除内嵌tomcat和加入servlet-api了)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
(3)
<!-- war 插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.1</version>
<configuration> <warSourceExcludes>src/main/resources/**</warSourceExcludes>
<warName>springboot-api</warName>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
(4)Springboot启动类继承如下(用于支持将 Spring Boot 应用部署为 WAR 文件并在 Servlet 容器中运行)
public class SpringbootDemo01Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemo01Application.class, args);
}
}
(5).数据库链接地址不能叫localhost或127.0.0.1.找到本地ip地址(小黑窗口ipconfig)
(6)
(7)结果
2.war部署到tomcat
注意:确保JDK安装和环境变量完成配置、tomcat安装
(1)war包放到tomcat下的webapps路径下
(2).tomcat的bin文件夹下,执行如下命令(启动tomcat)
./startup.sh
(3)访问项目路径
IP地址:Tomcat端口号/项目名称/方法名称
3.问题
问题1:样式不生效问题
将静态资源文件放置在src/main/webapp目录下是因为这是传统的Java Web项目的约定和习惯。在传统的Java Web项目中,静态资源文件(如HTML、CSS、JavaScript、图片等)通常被放置在webapp目录下,这样它们可以直接被外部访问。
当你将Spring Boot应用部署到外部Tomcat服务器时,将静态资源文件放置在src/main/webapp目录下可以确保它们能够被正确处理和暴露给外部访问。这是因为外部Tomcat服务器会将webapp目录作为Web应用程序的根目录,并将其中的静态资源文件映射到访问路径上。
jsp页面引入
<link rel="stylesheet" type="text/css" href="/static/css/css.css">
<script type="text/javascript" src="/static/js/jquery-1.8.3.js"></script>
浏览器访问路径IP地址:Tomcat端口号/项目名称/方法名称
问题2:想要不带项目名称的解决办法
修改tomcat/conf/server.xml,添加如下代码(注意:在HOST标签内)
<Context docBase="springboot-api" path="" reloadable="true"></Context>
<Context> 标签中的 path 属性设置为空字符串 ""。这样,应用将会在 Tomcat 的根路径下访问。
docBase 值是war的名称
请注意,修改了 server.xml 配置文件后,需要重启 Tomcat 才能生效。