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

Spring MVC基础Web应用运行时出现404错误求助

解决Spring MVC中"The origin server did not find a current representation..."错误

这个404错误通常意味着请求的资源找不到,结合你提供的代码,我整理了几个最可能的原因和对应的修复方案:

1. 检查控制器类的包路径是否匹配组件扫描配置

你的spring-servlet.xml里配置了组件扫描的包是com.javatpoint:

<context:component-scan base-package="com.javatpoint" />

但你的HelloController.java代码里没有显示包声明,必须确保控制器类确实在com.javatpoint包下。如果你的控制器在其他包(比如默认包或者自定义的其他包),Spring就无法扫描到这个控制器,自然找不到/hello的映射。

修复:给HelloController添加正确的包声明,比如:

package com.javatpoint; // 必须和component-scan的base-package一致

import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {
    // ... 你的原有代码
}

2. 修正Servlet API依赖的版本和范围

你pom.xml里的servlet-api依赖有两个问题:

  • 版本是3.0-alpha-1,这是一个非常早期的测试版本,稳定性差,建议换成稳定版,比如3.1.0或者更高;
  • 没有设置<scope>provided</scope>,这个依赖是Web容器(比如Tomcat)已经提供的,如果不设置provided,打包时会把它加入到war包,容易和容器自带的Servlet API冲突。

修复后的依赖:

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

(注意:artifactId也从servlet-api改成了javax.servlet-api,这是规范的写法)

3. 确保视图文件的位置符合视图解析器配置

你的视图解析器配置是:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

这意味着viewpage.jsp和errorpage.jsp必须放在WEB-INF/jsp/目录下,而不是直接放在WEB-INF或者项目根目录。如果你的这两个jsp文件位置不对,Spring找不到视图,也会触发404。

修复:创建WEB-INF/jsp/目录,把viewpage.jsp和errorpage.jsp移到这个目录里。

4. 修正表单提交的路径(避免上下文路径问题)

你的表单action是hello,如果你的项目部署时有上下文路径(比如项目名是SpringMVC,访问路径是http://localhost:8080/SpringMVC/),直接写hello会导致提交路径变成http://localhost:8080/hello,而不是正确的http://localhost:8080/SpringMVC/hello。

修复:使用JSP的内置对象获取上下文路径,修改表单的action:

<form action="${pageContext.request.contextPath}/hello">

5. 检查DispatcherServlet的配置文件位置

你的web.xml配置看起来没问题,但要确保spring-servlet.xml确实在WEB-INF目录下(因为默认情况下,DispatcherServlet会加载WEB-INF/[servlet-name]-servlet.xml,这里servlet-name是spring,所以是WEB-INF/spring-servlet.xml)。如果你的配置文件放在了其他位置,需要在<servlet>标签里添加<init-param>指定配置路径:

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value> <!-- 这里写你的配置文件实际路径 -->
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

按照上面的步骤逐一检查修复,应该就能解决这个404问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:07:34