跟着别人的demo自己也做了个demo,在打包到服务器的时候,发现生成的war包根本不起作用,要么是空白页面,要么是404。
找了很久,在大佬的建议下,乖乖看了 英文文档,跟着做,才知道在IDEA的springboot war包应该是这样生成的。
1、添加依赖(tomcat的依赖,更准确的说是 打包的时候 不要加上 tomcat)、将jar改成war】
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> <!--表示生成war包的时候不要将tomcat打包进去-->
</dependency>
将<packaging>jar</packaging> 改成 <packaging>war</packaging>
2、重写启动类,让启动类继承SpringBootSerletInitializer,重写 configure函数
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;
//继承SpringBootServletInitializer
@SpringBootApplication
public class ZhangjifaPractice1Application extends SpringBootServletInitializer {
// 重写 configure方法
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
{
return application.sources(ZhangjifaPractice1Application.class);
}
//保持不变
public static void main(String[] args) {
SpringApplication.run(ZhangjifaPractice1Application.class, args);
}
}
3、用maven插件生成war包,maven插件是在IDEA的右边(“maven project”就是了),打开Lifecycle,双击clean,然后双击package,就能在项目目录下面的target文件夹上面找到war包,这时候,将war包放在配置号环境的tomcat目录下面的webspps目录下面,重启tomcat,会看见自动生成的项目文件夹,访问的时候就是用,IP:端口 / 项目文件夹名称 / 控制器的访问value 就可以访问页面了。
maven插件可能有些人没注意到在哪里,如下图,是在IDEA右边那里的
点击 Maven Projects后就会看到:
先双击clean,然后 双击 package 就能生成 war包了。生成的war包是放在项目文件加的 target文件夹下面,
4、本地tomcat测试:
然后将 war包放到tomcat目录下的webapps,重启tomcat,发现tomcat生成了一个文件夹了。
用浏览器 127.0.0.1:8080/zhang-0.0.1-SNAPSHOT/对应控制器的value就可以访问额。
5、云服务器测试
同样的,将 腾讯云服务器 配置jdk和tomcat环境后,(服务器的端口要打开),将war包上传(可以用WinSCP软件上传)到tomcat目录下webapps,重启tomcat,也可以访问了。
6、有个坑:
tomcat版本若果有点儿旧的话,可能war包会不起作用,刚开始用了电脑以前装的tomcat7,哪怕是用同学能正常访问的war包放在我自己的tomcat也不支持,后来tomcat更新了一下,就可以了。