SpringBoot 项目打成War 包 在tomact运行

8 篇文章 0 订阅
4 篇文章 0 订阅

Springboot项目需要打成War包的形式,然后放在tomact中运行,打包过程很简单 ,但是打包完成之后在tomact中运行会出现很多的问题需要解决,出现以下未知的错误,不常见的问题。先说一下打包过程:

1:需要的Jar包和移除的Jar包

(1)移除的:在pom.xml文件中找到:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>

</dependency>

将springboot内置的tomact移除,需要添加如下内容:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
             <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>

        </dependency>

(2) 需要添加的:

<!-- servlet 依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>

<!-- JSTL依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

    <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

以上三个是需要添加的

项目打包需要起一个名称:方式如下:

在pom.xml文件中找到如下的内容

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

在以上内容中新增一行

 <build>

<finalName>mybatis</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

finalName标签中的 mybatis就是你打包的名称,这个名称可以随意进行更改。

以上是需要移除的和新增的jar包。下面是配置启动文件

2:修改启动类

(1):新建一个SpringBootApplication  注意(这个类一个要和启动类是同级,不然会出错)

然后在这个类中继承 SpringBootServletInitializer 

然后实现 configure()  方法

具体代码如下

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class SpringBootApplication extends SpringBootServletInitializer {

     @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(MuCoinApplication.class);//注意  :这个类必须是启动类的名称
        }
    
}

启动类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
@ServletComponentScan
public class MuCoinApplication {

    public static void main(String[] args) {
        SpringApplication.run(MuCoinApplication.class, args);
    }
  
}

需要改动的地方已经准备好了,下面是具体的打包过程:

1:选中项目,在项目上右击,找到  run as --> Maven  build ... 

2:填写好以上的信息。在控制台会输出一下内容,如果在控制台输出的内容有 ERROR 级别的错误,一定要先处理之后再一次进行打包才可以。

3:找到打包文件

 

以上就是打包的过程,项目运行起来之后去访问一定要在地址中加上你打包的名字:

http:localhost:8080/mybatis/login.jsp  不加名称是无法进行访问的。

 

有的会碰到运行起来没有问题,但是有的页面访问不到静态的资源:CSS ,JS 文件,是因为打包之后引起的文件的路径不对导致的。

以下是解决方案:

在页面中加上如下:

<%
String path = request.getContextPath();
// 获得项目完全路径(假设你的项目叫MyApp,那么获得到的地址就是http://localhost:8080/MyApp/): 
String basepath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()+ path;
pageContext.setAttribute("basepath", basepath);
%>

静态资源这么访问:
  <link href="${basepath}/static/assets/global/plugins/font-awesome/css/font-awesome.min.css"  type="text/css" />
   <link href="${basepath}/static/assets/global/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
      

这样就没有问题了。

请大家一定要记住,打包放在tomact中一定要记得修改一些默认的配置,例如文件上传,文件的存放位置,需要配置一个虚拟的路径来引导,指向正确的位置,关于springboot 项目 文件上传问题 可以参考我的一个博客文章:https://blog.csdn.net/qq_34350964/article/details/84028262    这里有具体的说明。

以上是全部的过程,及个人遇到的问题和解决方法,这是个人的方法,还有别的方法可以使用,如果有更好的方法,欢迎留言探讨,谢谢

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值