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

Spring Web应用视图无法访问,控制台报No mapping错误求助

排查Spring MVC视图无法访问的问题

嘿,我来帮你搞定这个问题!你遇到的控制台警告 No mapping for GET /FirstSpringWebExample/WEB-INF/hello.html 是Spring MVC里非常典型的配置小坑,咱们一步步来拆解原因和解决办法:

问题根源分析

你的DispatcherServlet在web.xml里配置了url-pattern: /*,这个模式会拦截所有请求——包括浏览器发来的外部请求,还有视图解析器转发时的内部请求。当InternalResourceViewResolver处理完Controller的返回值,试图转发到/WEB-INF/hello.html时,DispatcherServlet会把这个转发请求当成一个新的外部请求去匹配Controller映射,但你根本没写对应/WEB-INF/hello.html的Controller方法,自然就报了“找不到映射”的警告,视图也就加载不出来了。

解决方案

1. 修正DispatcherServlet的URL映射

这是最关键的一步:把web.xml里的servlet-mapping部分的url-pattern从/*改成/:

<servlet-mapping>
    <servlet-name>HelloWeb</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

为什么改这个?/是Spring MVC官方推荐的映射模式,它只会拦截非静态资源的请求(比如你写的/hello、/hellot接口),不会干扰容器对静态资源(HTML、CSS、JS等)的内部转发处理。这样视图解析器转发到/WEB-INF/hello.html时,就能正常被容器找到并返回给浏览器了。

2. 确认视图文件位置

检查一下你的hello.html是不是确实放在项目的WEB-INF目录下,要和HelloWeb-servlet.xml里配置的prefix="/WEB-INF/"完全对应。如果文件放错了位置(比如放到了WEB-INF外面或者子目录里),视图解析器也找不到它。

3. 验证修复效果

重启你的Web应用,然后访问http://localhost:8080/FirstSpringWebExample/hello(替换成你的实际端口和项目名称),这时候应该就能正常看到hello.html页面,并且显示Hello Spring MVC Framework!了。

额外小提示

如果之后你需要在项目里引入CSS、JS这类静态资源,可能会遇到加载问题,这时候可以在HelloWeb-servlet.xml里加上<mvc:default-servlet-handler/>(记得先引入mvc命名空间),让Spring委托Web容器来处理静态资源的请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:07:29