Tomcat部署Spring MVC项目访问控制器404、仅显示index.jsp问题求助
问题排查结果及修复方案
核心问题点
- 配置文件名不匹配:web.xml中指定DispatcherServlet加载的配置文件为
/WEB-INF/spring-mvc-demo-servlet.xml,你实际提供的配置文件名为spring-mvc-demo.xml,Spring MVC核心配置未被正确加载 - 组件扫描路径错误:你的控制器类放在
com.controller包下,但Spring配置中的组件扫描规则仅扫描springtest包,控制器未被Spring容器识别,请求映射自然未注册 - 视图路径可能不匹配:视图解析器配置的前缀为
/WEB-INF/view/,若你实际存放jsp的目录名为views,路径会匹配失败
修复步骤
- 统一配置文件路径:
要么将spring-mvc-demo.xml重命名为spring-mvc-demo-servlet.xml放到WEB-INF目录下,要么修改web.xml中的初始化参数:<init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc-demo.xml</param-value> </init-param> - 修正组件扫描包路径:
修改spring-mvc-demo.xml中的组件扫描配置,改为你实际的控制器所在包:<context:component-scan base-package="com.controller" /> <!-- 若有多个Spring组件所在包,可写上层公共包如com即可 --> - 核对视图目录路径:
确认WEB-INF下存放jsp的目录名,若为views,修改视图解析器的前缀配置:<property name="prefix" value="/WEB-INF/views/" /> - 确认访问路径:
部署后项目默认上下文路径为war包名springtest,访问showForm接口的正确路径为http://你的服务器地址:端口/springtest/showForm,不要漏写上下文路径 - 可选兼容优化:
Spring 5.x最低支持JDK 8,可将pom.xml中的编译版本配置更新为1.8及以上:<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
内容的提问来源于stack exchange,提问作者Stephen Agbenu
相关产品推荐
相关产品推荐

