You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除JPA后SpringBoot的@RequestMapping访问报错求助

问题排查:移除JPA后Spring Boot页面跳转异常

咱们来一步步拆解你遇到的问题:移除JPA和数据库依赖后启动没报错,但访问URL跳转到/error页面,之前用JPA时一切正常。结合你的代码和配置,问题主要出在这几个地方:

1. Controller注解用错了

你现在用的是@RestController,这个注解是@Controller + @ResponseBody的组合——它会让所有方法的返回值直接作为HTTP响应体(比如返回JSON或纯文本),而不是解析成视图名称来跳转页面。之前用JPA时可能因为其他配置掩盖了这个问题,但移除数据库相关依赖后就暴露出来了。

解决方案:把@RestController替换成@Controller,这样Spring才会把方法返回的字符串(比如"home.jsp")当作视图名称处理,进而跳转到对应的JSP页面。

修改后的Controller头部:

package me.thisGuy.controller;

// 省略其他import
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller // 这里改成@Controller
public class FitController {
    // 方法内容后续调整异常处理
}

2. 文件读取逻辑的异常未被捕获

你的clickMe方法里,文件操作代码在try-catch块外面:如果C:\\Users\\Me\\Documents\\XMLTest文件夹不存在、没有读取权限,或者folder.listFiles()返回null,执行for循环时会直接抛出NullPointerException,这个异常没被当前方法的try-catch捕获,会触发Spring Boot默认的错误页面跳转。

解决方案:把文件读取逻辑移到try块内部,同时增加非空判断:

@RequestMapping("/clickMe")
public ModelAndView change(Model model) {
    ModelAndView chapterView = new ModelAndView();
    List<String> chapterList = new ArrayList<String>();
    try {
        chapterView.setViewName("view.jsp");
        File folder = new File("C:\\Users\\Me\\Documents\\XMLTest");
        File[] files = folder.listFiles();
        // 增加非空判断,避免空指针异常
        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    chapterList.add("'" + file.getName() + "'");
                }
            }
        }
        chapterView.addObject("chapters", chapterList);
    } catch (Exception e) {
        chapterView.setViewName("home.jsp");
        // 打印完整异常栈,方便排查问题
        e.printStackTrace();
    }
    return chapterView;
}

3. 确认JSP视图的配置和位置

Spring Boot对JSP的支持有默认路径要求,默认会去/src/main/webapp/WEB-INF/jsp/目录下查找JSP文件。如果你的home.jsp和view.jsp不在这个位置,需要在application.properties(或application.yml)里配置视图解析器的前缀和后缀:

比如JSP直接放在/src/main/webapp/目录下,添加以下配置:

spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

如果放在/src/main/webapp/WEB-INF/jsp/下,配置为:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

最后验证步骤

  1. 替换Controller注解
  2. 调整文件读取的异常处理逻辑
  3. 确认JSP位置并配置视图解析器(如果需要)
  4. 重启项目,再次访问/和/clickMe,应该就能正常跳转页面了。

内容的提问来源于stack exchange,提问作者ThisGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:10:27