zoukankan      html  css  js  c++  java
  • tomcat运行springboot项目war包

    以最简单的spring boot demo项目来演示如何发布项目war包到tomcat,并成功运行(有很多小伙伴会出现404错误)

    一、准备一个最简单的demo项目

    在IDEA中新建一个项目,一直next,选择Dependencies中选择Web。

    点击Finish完成

    二、为了项目发布后方便排错,在DemoApplication中增加几行代码

    package com.example.demo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    public class DemoApplication{
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    
        @GetMapping("/hello")
        public String hello() {
            return "This is a demo project.";
        }
    }

    三、把项目打成war包

    把项目打成war包需要修改两个地方:

    1.DemoApplication继承SpringBootServletInitializer,重写configure方法

    package com.example.demo;
    
    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;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    public class DemoApplication extends SpringBootServletInitializer {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    
        @GetMapping("/hello")
        public String hello() {
            return "This is a demo project.";
        }
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(DemoApplication.class);
        }
    }

    2.修改POM文件,把packaging修改为war,并在build中新增finalName为demo,指定打包之后的名称为demo.war,完整的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>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.3.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>demo</name>
        <packaging>war</packaging>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <finalName>demo</finalName>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    3.在IDEA界面的左下角,找到Terminal,并点击。输入mvn clean package -Dmaven.skip.tree=true回车

     可以看到在target目录下,生成了demo.war

    四、将target下的demo.war包复制到tomcat的webapps目录下,并启动tomcat

    在浏览器访问localhost:8080,查看tomcat是否启动

    在浏览器访问localhost:8080/demo/hello

    表示项目已经部署成功。

    五、排错,特别是404错误

    排错步骤为:

    1.首先需要确保demo项目,在idea中启动时,能正常访问。

    2.如果localhost:8080无法看到tomcat的欢迎界面,需要排查端口是否正确,如果端口没有问题,则一定是tomcat的配置出现了问题。

    3.如果能看到tomcat的欢迎界面,但是访问项目出现404,则首先需要排查tomcat的启动日志,查看是否报错。

    4.如果启动日志没有报错,可则新建一个index.html,并把该index.html放入到tomcat/webapps/demo的根目录,通过localhost:8080/demo/index.html查看是否能正常访问。index.html的代码即为一个最简单的html默认页面。

    5.如果不能访问,说明tomcat加载demo项目失败。如果能正常访问index.html,但访问demo/hello出现404,则需要排查是否是个web项目,也就是引入了spring-boot-starter-web依赖,项目的打包方式是否是war包,并且特别是启动类(这里是DemoApplication)是否继承了SpringBootServletInitializer,并重写了configure方法。

    至于其他的业务报错,连接资源报错,不在此讨论范围。

  • 相关阅读:
    P1541 乌龟棋
    P1725 琪露诺
    P1622 释放囚犯
    P1417 烹调方案
    积木大赛
    换教室
    C#文件和目录的操作
    C#应用程序所有已经打开的窗体的集合
    C#winform自定义滚动条
    C#ADO.NET基础二
  • 原文地址:https://www.cnblogs.com/ztone/p/10565015.html
Copyright © 2011-2022 走看看