#前端笔记#导入js等静态文件时报错:No mapping found for HTTP request with URI

本文介绍了解决Spring MVC框架中静态资源如JS文件被错误拦截的问题,并提供了两种有效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近除了继续做Android老本行之外,也开始接触一些web端的开发工作,web后端的开发还好,SSM的框架已经相当成熟,按照框架的套路,还是比较容易上手的;不过web前端就不一样了,什么jquery啊,angular啊,node啊,vue啊,要学的东西实在太多...不过不怕,饭要一口一口吃,坑还是一个一个填呗...

今天就遇到一个坑,当我在自己的项目中引入jquery并运行项目后,控制台却提示我:No mapping found for HTTP request with URI [/js/jquery-3.2.1.min.js] in DispatcherServlet with name 'SpringMVC',意思是spring把我的js当作servlet去处理了!?,好吧,拦截器是在web.xml中设置的,那就去那看看呗,果然问题就出现这:

因为我将spring的url-pattern设置成了/,因此spring会拦截所有所有请求,所以js等静态文件也被拦截了,而且由于不是servlet而导致报错,解决这个问题的方法有两个:

1、在web.xml中为静态文件设置servlet-mapping:


2.在spring配置文件中设置mvc-resources:


好了,web之路的第一个坑总算是填了,next one~



### 解决 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的问题。同注意检查日志输出寻找更多线索帮助定位潜在错误源。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值