java spring mvc Error:No mapping found for HTTP request with URI

问题描述:Spring MVC,报错【No mapping found for HTTP request with URI】,反复 百度了一把,里面各种解决方案,最终都不能够解决问题,反复检查配置文件,也没有看到哪里有错,最终还是在一个帖子的回复里面找到了解决方案。

解决方法:选择项目右键,bulid project。

导致这个问题的原因:可能是因为没有指定WEB工程的Build Path导致。由于,有些版本的ECLIPSE默认没有将WEB工程的CLASSPATH设置为WEB-INFO/classes,所以编译的Serlvet类就不在该路径下。而tomcat的web工程部署默认在该路径下寻找Servlet类,因而即使web.xml中正确配置了url-pattern也将出现上述错误。

解决方案是在该帖子里面找到的:http://bbs.youkuaiyun.com/topics/390401966

因为没有看到那个帖子专门说个这个事情,所以为了方便大家专门写一个帖子。

### 解决 Spring Boot 中 DispatcherServlet 找不到映射到 HTTP 请求 URI `/.html` 的问题 当遇到 DispatcherServlet 报告找不到映射到特定 URL 如 `/example.html` 或根路径下的 `.html` 文件时,通常是因为应用程序配置未能正确处理静态资源或视图解析。 #### 配置静态资源位置 默认情况下,Spring Boot 支持从多个预定义的位置加载静态文件,包括但不限于 `classpath:/static/`, `classpath:/public/`, `classpath:/resources/`, 和 `classpath:/META-INF/resources/`. 如果 HTML 页面位于这些目录之外,则需调整配置以包含自定义路径[^1]. 对于简单的HTML页面展示需求,建议将HTML文件放置于上述任一标准目录内。例如,在项目结构中的 `src/main/resources/static/index.html`. #### 启用WebMvc自动配置 确认已启用 Web MVC 自动配置功能。如果手动排除了该组件,可能需要重新引入它来确保基本的MVC特性正常工作: ```java @SpringBootApplication(exclude={org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration.class}) // 应移除此行或取消exclude参数设置 ``` #### 设置ViewResolver Bean (可选) 为了支持JSP或其他模板引擎渲染动态内容,可以通过创建一个内部资源视图解析器bean实现更灵活的内容呈现方式: ```java @Bean public InternalResourceViewResolver defaultViewResolver() { return new InternalResourceViewResolver(); } ``` 然而针对纯静态网页访问场景,默认行为已经足够满足需求,无需额外定制view resolver. #### 检查控制器方法签名 确保所有的@RequestMapping注解都指定了具体的方法类型(GET, POST等),并验证URL模式是否匹配实际请求地址。比如下面的例子适用于GET类型的根路径(`"/"`)请求返回index.html文档: ```java @Controller public class HomeController { @GetMapping("/") public String home(){ return "forward:index.html"; } } ``` 通过以上措施应该能够有效解决DispatcherServlet无法找到对应URI的问题。同时注意检查日志输出寻找更多线索帮助定位潜在错误源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值