前后端分离项目,整合成jar包,刷新404或空白页,解决方法

问题解决

1、注销遇到404,或刷新遇到404

shell 复制代码
# 添加错误跳转
@Component
public class ErrorConfig implements ErrorPageRegistrar {

    @Override
    public void registerErrorPages(ErrorPageRegistry registry) {
        ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/");  
        registry.addErrorPages(error404Page);
    }
}

# 这个"/"为之前设置过的
@Controller
public class loginController {
//    首页
    @GetMapping("/")
    public String index(){
        return "index";
    }
}

2、遇到刷新后空白页

前提提要:前后端分离项目,单独运行时毫无问题,路由可以正常跳转,但是我将前端vue打包后放入后端的static文件夹下,并在后端使用Thymeleaf来调用静态资源,添加了路由跳转的controller

java 复制代码
@Controller
 public class loginController {
     首页
 @GetMapping("/")
 public String index(){
 return "index";
 }
 },

以及mvc配置

java 复制代码
 public class pictureConfig extends WebMvcConfigurationSupport{

/**
 * springboot 2.0配置WebMvcConfigurationSupport之后,会导致默认配置被覆盖,要访问静态资源需要重写addResourceHandlers方法
 */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**")
            .addResourceLocations("classpath:/resources/")
            .addResourceLocations("classpath:/static/")
            .addResourceLocations("classpath:/public/");
    registry.addResourceHandler("/webjars/**")
            .addResourceLocations("classpath:/META-INF/resources/webjars/");

    registry.addResourceHandler("/static/**")
            .addResourceLocations("classpath:/static/");
    registry.addResourceHandler("/uploads/**")    // 虚拟路径
            // file: 表示以本地的路径方式去访问绝对路径。
            .addResourceLocations("file:D:\\bus_system\\service\\bus_service\\src\\main\\resources\\static\\");    // 绝对路径
    // 添加Swagger的访问路径
    registry.addResourceHandler("swagger-ui.html")
            .addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**")
            .addResourceLocations("classpath:/META-INF/resources/webjars/");
    super.addResourceHandlers(registry);
},

和发生404跳转回index也就是登录页

java 复制代码
@Component
 public class ErrorConfig implements ErrorPageRegistrar {
@Override
public void registerErrorPages(ErrorPageRegistry registry) {
    ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/");
    registry.addErrorPages(error404Page);
}},

现在我登录进页面,点击列表,url=http://localhost:8013/Books/list,可以访问,但是当我点击页面的刷新,页面空白路径还是http://localhost:8013/Books/list,但是访问的css和js的路径资源为http://localhost:8013/Books/static/js/chunk-6dbb.969838d0.js,多了Books,请问怎么解决

解决方法:

shell 复制代码
# mvc配置添加
registry.addResourceHandler("/Books/static/**")
    .addResourceLocations("classpath:/static/");

但是这又会有个问题,当我有多个路由,Books/list,Teacher/list等等,我都要加上registry.addResourceHandler("/Teacher/static/**")

.addResourceLocations("classpath:/static/");吗

最终解决:

shell 复制代码
 registry.addResourceHandler("/{module}/static/**")  //"{module}"部分可以匹配任何路由的名称
         .addResourceLocations("classpath:/static/");
相关推荐
AI多Agent协作实战派2 分钟前
AI多Agent协作系统实战(二十二):从6列到12列——任务监控报告的进化之路
java·人工智能·uni-app·bug
千桐科技16 分钟前
DataX 执行引擎正式加入:qData 开源版 v1.6.0 新增 Quartz + DataX 轻量运行模式!
java·大数据·开源·数据治理·数据中台·qdata
Irene199126 分钟前
Oracle PL/SQL Developer 版本差异(11g、14)实战总结
java·开发语言
AI人工智能+电脑小能手27 分钟前
【大白话说Java面试题 第191题】【08_Kafka篇】第7题:消息队列的优缺点
java·消息队列·系统设计·分布式架构·技术选型
用户4461394302731 分钟前
Spring Boot 接入大模型:从配置到实战的完整指南
java
青石路32 分钟前
如果写Redis序列化与读Redis序列化不一致,你觉得会发生什么
java·redis
煎饼学大模型37 分钟前
架构决定上限:Skill 知识架构的三次重构实践
java·重构·架构·skill
llwszx44 分钟前
【Java/Go后端手撸原生Agent(第五篇):多工具并行调用 + BashTool执行引擎 + Judge证据链升级】
java·后端·golang·状态机·pydantic·agnet·llm-as-judge
奈何不吃鱼1 小时前
【SpringBoot】业务多线程四大实战场景
java·spring boot·多线程
问商十三载1 小时前
2026法律行业AI引擎生成式优化怎么优化?三层专业加固提排名,零成本提33%引用率附适配表
java·前端·人工智能·算法