赞
踩
Springboot项目需要打成War包的形式,然后放在tomact中运行,打包过程很简单 ,但是打包完成之后在tomact中运行会出现很多的问题需要解决,出现以下未知的错误,不常见的问题。先说一下打包过程:
(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包。下面是配置启动文件
(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 这里有具体的说明。
以上是全部的过程,及个人遇到的问题和解决方法,这是个人的方法,还有别的方法可以使用,如果有更好的方法,欢迎留言探讨,谢谢
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。