本来是默认使用的jar包,但是当程序发布到服务器上运行时产生了跨域问题。网上查找有几种方法可以解决jar运行的跨域问题,考虑到本身服务器上有tomcat(已解决跨域),为简便,直接将,程序打包成war,扔tomcat下!
1、修改pom.xml,jar——war
2、排除内嵌的tomcat,引入javax.servlet-api
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 打成war的时候打开注释,本地开发用内嵌tomcat时加上注释 -->
<!-- 此处要用compile,开始用provided运行会报错 -->
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.5.79</version>
<scope>provided</scope>
</dependency>
3、引入maven-war-plugin插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
4、修改Application类,修改项目默认启动方式,启动类继承SpringBootServletInitializer类重写configure()方法
@SpringBootApplication
public class ServerApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(ServerApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
5、修改项目的context-path与warName一致 修改application.properties的context-path和port等信息和实际部署的情况改为一致:
server.port=8080
server.context-path=mongophotos
用maven install编译后,即可在工程target目录下生成war包,将war包拷贝到服务器tomcat下,搞定!