Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题

本文介绍了在使用Spring框架时遇到的静态资源(js/css/jpg等)加载问题,并提供了三种解决方案,包括修改web.xml配置、使用<mvc:default-servlet-handler/>以及配置静态资源映射。

我们在使用spring3的时候,如果使用了注解的话,我们会发现,有时候我们界面的js/css/jpg/gif等文件会出现找不到的情况,然而检查引用路径,发现无论是绝对路径还是相对路径,都没错。这下我们就纠结了,到底是什么问题呢?

楼主我也是苦思良久,不经意间看到了后台的日志,才发现是spring搞的鬼。


报错信息:<No mapping found for HTTP request with URI [/sandDemo001/images/1.jpg] in DispatcherServlet with name 'spring'>


解决方法1在spring的配置修改web.xml下对springDispatcherServlet请求url映射的配置,先来看看原配置

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
 </servlet-mapping>
<servlet-mapping><url-pattern>/</url-pattern>把所有的请求都交给spring去处理了,而所有available的请求url都是在Constroller里使用类似@RequestMapping(value = "/login/{user}", method = RequestMethod.GET)这样的注解配置的,这样的话对js/css/jpg/gif等静态资源的访问就会得不到。所以,在web.xml里添加如下的配置就可以解决该问题了。

<servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.css</url-pattern>
</servlet-mapping>
 
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>

 </servlet-mapping>
    
 <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.jpg</url-pattern>
 </servlet-mapping>
    
 <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.js</url-pattern>
 </servlet-mapping>

解决方法2:在spring的配置文件中添加如下一行:

<mvc:default-servlet-handler/>

注意,需要是spring3.0.5以上版本


解决方法3:在spring的配置文件中添加如下一行:

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
 
 <mvc:resources mapping="/resources/**" location="/resources/" /> 
  
这个配置告诉spring 静态资源的处理方式



`No mapping found for HTTP request with URI [/lesson04/]` 错误通常表示 Spring MVC 的 `DispatcherServlet` 无法找到与请求 URI 匹配的控制器方法。以下是一些可能的解决办法: #### 检查控制器配置 确保存在处理该请求的控制器方法。例如,创建一个简单的控制器: ```java import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class Lesson04Controller { @RequestMapping("/lesson04/") @ResponseBody public String handleRequest() { return "Hello from /lesson04/"; } } ``` #### 检查 Spring 配置文件 确保 Spring 能够扫描到控制器类。在 `springmvc.xml` 中添加组件扫描配置: ```xml <context:component-scan base-package="com.example.controllers"/> ``` 这里的 `base-package` 需要替换为实际控制器类所在的包名。 #### 检查 `web.xml` 配置 确保 `DispatcherServlet` 的配置正确: ```xml <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> ``` #### 检查静态资源处理 如果请求的是静态资源,需要配置 Spring MVC 来处理静态资源。在 `springmvc.xml` 中添加如下配置: ```xml <mvc:resources mapping="/resources/**" location="/resources/"/> ``` 这里的 `/resources/**` 是请求路径,`/resources/` 是静态资源所在的目录。 #### 检查项目部署 确保项目正确部署到服务器,并且没有遗漏任何依赖或配置文件。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值