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

同一Java Web项目中Angular无法调用Spring REST接口报404错误求助

问题根因

你现在的核心问题是Spring DispatcherServlet接管了所有根路径请求,要么是没正确映射静态资源/REST接口,要么是接口路径匹配规则和前端请求路径不匹配。

具体解决步骤

  • 第一步:补全Spring MVC的基础配置
    你把DispatcherServlet的路径设为/,所有请求都会被Spring拦截,默认不会处理WebContent下的静态文件,也可能没开启注解识别,先在Spring的gcsc-servlet.xml配置文件里补加以下配置:
    <!-- 放行静态资源,所有js/css/html/img等资源直接读取WebContent目录下的对应文件 -->
    <mvc:default-servlet-handler />
    <!-- 开启注解驱动,确保@RequestMapping等注解能被正确识别 -->
    <mvc:annotation-driven />
    
    记得在配置文件头部引入mvc命名空间:
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation属性值中追加:http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
    
  • 第二步:对齐前后端接口路径
    你当前Controller映射的接口路径是/user/authenticate,报错里的请求路径是/user/authenticate/多了末尾斜杠,Spring MVC 3.x版本默认开启末尾斜杠匹配,如果未开启就会报404,要么前端发请求时去掉末尾斜杠,要么加全局配置开启匹配规则:
    // 如果用Java配置类的话添加以下配置
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        @Override
        public void configurePathMatch(PathMatchConfigurer configurer) {
            configurer.setUseTrailingSlashMatch(true);
        }
    }
    
    另外注意你项目的上下文根是GCSC,前端请求的完整路径应该是http://localhost:9080/GCSC/user/authenticate,不要漏了上下文根前缀,Angular可以统一配置baseHref为/GCSC/避免每次手写前缀。
  • 第三步:确认Spring包扫描配置
    检查gcsc-servlet.xml里有没有配置包扫描,确保能扫到LoginController所在的包:
    <context:component-scan base-package="LoginController对应的包全路径" />
    
    没有的话补充配置,否则Spring识别不到你写的Controller,自然找不到对应接口。

验证方式

改完后先用Postman调用http://localhost:9080/GCSC/user/authenticatePOST接口,能正常返回结果后再让前端调用,即可解决404问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:27:00