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

AJAX调用返回404(Spring Boot):JSP路径配置问题求助

解决AJAX调用JSP时的404路径问题

我来帮你搞定这个AJAX调用JSP的404问题,这类路径歧义在Java Web项目里太常见了,咱们一步步来排查和解决:

先搞懂路径的核心规则

你的JS文件放在src/main/resources/static下,这是Spring Boot等Java Web框架默认的静态资源目录,前端访问时会直接映射到项目的根路径(/)。但JSP文件的位置决定了它的可访问路径——如果JSP放在WEB-INF目录下,是无法直接通过前端AJAX访问的(WEB-INF是受保护目录,只能通过后端转发);如果放在src/main/webapp根目录下,才能直接通过路径访问。

针对你的场景的修复方案

方案1:用绝对路径(最稳妥,避免相对路径歧义)

直接从项目根路径指定JSP的位置,修改你的AJAX调用代码:

CGSHelper.ajaxHandler("/aSystemResults.jsp", getStdRequestText() + "&action=getRouterType");

方案2:检查项目上下文路径(如果你的项目带部署前缀)

如果你的项目部署时带有上下文路径(比如访问地址是http://localhost:8080/your-project/),那需要把上下文路径加上,你可以用JS动态获取,避免硬编码:

// 动态获取项目上下文路径
const contextPath = window.location.pathname.split('/')[1];
// 拼接路径发起请求
CGSHelper.ajaxHandler(`/${contextPath}/aSystemResults.jsp`, getStdRequestText() + "&action=getRouterType");

方案3:如果JSP在WEB-INF目录下(必须后端转发)

如果你的aSystemResults.jsp是放在WEB-INF文件夹里,那直接AJAX访问肯定会404,因为WEB-INF的资源无法被前端直接访问。这时候你需要写一个后端Controller来转发请求:

@Controller
public class RouterTypeController {
    @RequestMapping("/getRouterType")
    public String handleRouterTypeRequest(HttpServletRequest request) {
        // 可以在这里处理参数逻辑,再转发到JSP
        request.setAttribute("action", request.getParameter("action"));
        // 假设JSP在WEB-INF/jsp/aSystemResults.jsp,视图解析器配置了前缀/WEB-INF/jsp/、后缀.jsp
        return "aSystemResults";
    }
}

然后修改AJAX调用的路径为这个Controller的接口:

CGSHelper.ajaxHandler("/getRouterType", getStdRequestText());

最后排查几个容易忽略的坑

  • 文件名大小写!:Java Web服务器(比如Tomcat)对文件名是大小写敏感的,确认你的AJAX里写的aSystemResults.jsp和实际文件名完全一致,别出现ASystemResults.jsp这种拼写差异
  • 部署后的文件位置:检查项目打包部署后,JSP文件是否被正确放到了webapp目录下,有些构建工具可能会漏掉JSP的打包配置
  • 框架配置:如果是Spring Boot项目,要确保你已经正确配置了JSP的视图解析器,不然即使路径对了,服务器也找不到JSP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:35:51