在IntelliJ中使用Spring无法解析MVC视图,Tomcat报404错误求助
解决Spring MVC 404错误及视图无法解析问题
看了你的代码,核心问题出在视图解析器的前缀(prefix)和后缀(suffix)配置颠倒,再加上几个必要的配置缺失,导致Tomcat找不到视图资源。下面是具体的修复步骤:
1. 修正视图解析器配置
你的InternalResourceViewResolver把prefix和suffix搞反了:
prefix应该是JSP文件所在的路径前缀suffix应该是JSP文件的后缀名(.jsp)
错误配置:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="suffix" value="/pages/"/> <property name="prefix" value=".jsp"/> </bean>
修正后(假设你的home.jsp放在WEB-INF/pages/目录下):
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean>
这样控制器返回"home"时,会拼接成/WEB-INF/pages/home.jsp,就能正确找到视图文件。
2. 添加Spring MVC注解驱动
在Spring配置文件(context.xml)中加入<mvc:annotation-driven/>标签,这个标签会自动注册Spring MVC处理请求必需的组件(比如请求映射处理器、参数绑定器等),缺失的话可能导致@RequestMapping注解不生效:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:ctx="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <ctx:annotation-config></ctx:annotation-config> <ctx:component-scan base-package="com.example"/> <!-- 新增注解驱动配置 --> <mvc:annotation-driven/> <!-- 修正后的视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
3. 确认JSP文件位置
确保home.jsp文件的实际路径和视图解析器配置匹配,比如:
你的项目 └── src └── main └── webapp └── WEB-INF └── pages └── home.jsp
4. IntelliJ部署相关检查
- 打开IntelliJ的Run/Debug Configurations,检查Tomcat的Deployment选项,确认你的项目Artifact被正确添加,且WEB-INF目录下的文件都包含在内
- 清理Tomcat的work目录(一般在
Tomcat安装目录/work),避免缓存旧的配置 - 执行
Build -> Rebuild Project,确保所有代码和配置都被重新编译部署
内容的提问来源于stack exchange,提问作者mohammad tadaiony
相关产品推荐
相关产品推荐

