spring No mapping found for HTTP request with URI

学习spring,配置了DispatcherServlet,结果发现对静态资源的访问出问题了,报404.


后来发现由于配置的DispatcherServlet针对所有请求进行转发了,所以针对静态资源访问进行下特殊处理。

1.对servlet-mapping进行处理。

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

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


2.使用mvc的资源映射。

<mvc:resources mapping="/resources/**" location="/resources/"/>


3.使用spring的3.0.5的新方案。

<mvc:default-servlet-handler/>


经过3种方案,都正常访问了静态资源,ok。



这个错误信息通常出现在使用Spring框架的Web应用程序中,特别是当使用了Spring MVC时。`DispatcherServlet.noHandlerFound` 错误表示请求的URL没有找到对应的处理器(handler)。具体来说,这个错误信息表明有一个HTTP请求发送到服务器的`/untitled30_war_exploded`路径,但是没有找到对应的处理器来处理这个请求。 这个错误通常由以下几个原因引起: 1. **URL路径配置错误**:请求的URL路径没有在Spring MVC的控制器(Controller)中定义对应的处理方法。 2. **控制器未正确扫描**:Spring容器没有扫描到对应的控制器类,导致无法找到处理请求的方法。 3. **视图解析器配置问题**:视图解析器配置不正确,导致无法找到对应的视图。 解决方法如下: 1. **检查URL路径**:确保请求的URL路径在控制器中有对应的处理方法。例如,如果请求的URL是`/untitled30_war_exploded/hello`,那么在控制器中应该有对应的`@RequestMapping`注解的方法来处理这个请求。 ```java @Controller public class HelloController { @RequestMapping("/hello") public String hello() { return "hello"; } } ``` 2. **确保控制器被扫描**:确保你的控制器类在Spring的扫描路径中,可以通过在配置类上使用`@ComponentScan`注解来扫描控制器所在的包。 ```java @Configuration @ComponentScan(basePackages = "com.example.controller") public class AppConfig { } ``` 3. **检查视图解析器配置**:确保视图解析器配置正确,能够找到对应的视图文件。 ```xml <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> ``` 通过以上步骤,可以逐步排查并解决`DispatcherServlet.noHandlerFound`错误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值