1.BUG原因
通过百度和其他大佬的博客,了解到了这是因为对服务器的保护措施导致的,服务器不能对外部暴露真实的资源路径,需要配置虚拟路径映射访问。
2.BUG解决
新建一个WebConfig类,实现自定义的资源映射函数addResourceHandlers。代码如下
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if(!registry.hasMappingForPattern("/static/**")){
registry.addResourceHandler("/static/image/**").addResourceLocations("file:E:\\dst\\src\\main\\resources\\static\\image\\"); /*绝对路径*/
}
super.addResourceHandlers(registry);
}
}
addResourceHandler()里配置需要映射的文件,
addResourceLocations()配置该文件的绝对路径。
3.新的BUG
当我兴冲冲的重启服务器时,然后悲哀的发现我的界面打不开了,报404错误。
这个错误是找不到页面。
4.解决方法
解决这个问题的办法就是在之前的WebConfig类中新增一个页面跳转的方法addViewControllers
代码如下:
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index.html");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
super.addViewControllers(registry);
}
5.又见新BUG
当我能重新进页面时,却发现页面加载不了JS,CSS等静态资源
6.BUG解决
经过一番查找资料,找到一个解决问题的方法,在WebConfig里面加上一下代码。
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
"classpath:/META-INF/resources/", "classpath:/resources/",
"classpath:/static/", "classpath:/public/" };
if (!registry.hasMappingForPattern("/webjars/**")) {
registry.addResourceHandler("/webjars/**").addResourceLocations(
"classpath:/META-INF/resources/webjars/");
}
if (!registry.hasMappingForPattern("/**")) {
registry.addResourceHandler("/**").addResourceLocations(
CLASSPATH_RESOURCE_LOCATIONS);
}
参考博客:
https://blog.csdn.net/qq_37756310/article/details/104070000