问题描述:项目jar包部署到服务器 ,可以正常登录访问,但是jsp的页面就报404,检测了一番后发现什么都不少,依赖jar包,静态资源jsp文件等。SpringBoot 默认内嵌 Tomcat 服务器启动项目之后,存在接口可以正常访问但是唯独访问不到 JSP 页面。
下面是我的打包依赖(正确的)
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.2.RELEASE</version>
<configuration>
<mainClass>ccom.opao.re.MainApplication</mainClass>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<!-- 过滤后缀为pkcs12、jks的证书文件 -->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>keystore</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>src/main/webapp</directory>
<includes>
<include>**/**</include>
</includes>
<targetPath>META-INF/resources</targetPath>
</resource>
</resources>
</build>
这里要特别注意spring-boot-maven-plugin的版本要用1.4.2其他的版本好像都不行,而且1.4.2的版本得添加启动类的路径<mainClass>ccom.opao.re.MainApplication</mainClass>
否则会报错Unable to find a single main class from the following candidates
相应的spring-boot的版本也得改成1.4.2
部署完成后等依赖包导入,重新打包发布就行了!
补充:静态资源过滤
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Component
public class WebConfig implements WebMvcConfigurer {
/*
* 添加静态资源文件,外部可以直接访问地址
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/").addResourceLocations("classpath:/static/index.html");
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}