Spring MVC spring Did not find handler method for 页面显示404问题【熟悉这个,才能定位问题不是freeMarker问题】


====我的mvc controller组件扫描位置:

<!-- 扫描所有controller组件 -->
    <context:component-scan base-package="com.ybl.**.controller" />
这就限制了 我的 
FreeMarkerTest

类的存放目录。确实是这个问题。



====转自:https://blog.csdn.net/llccf/article/details/51096885


====

最近项目需求,开始研究spring ,struts等框架,照着网上小例子配置,不甚懂的原理的情况下配起来真是麻烦啊

       环境: spring MVC , javaEE7.0  Spring 3.1.1

                    src目录是 

     package  com.mvc.rest

                  RestController.javac

     问题:

       打网页显示为:http://localhost:8080/springMVC/welcome

HTTP Status 404 -

type Status report

message

description The requested resource is not available.


  console: 日志为

2016-04-08 15:21:47 Looking up handler method for path /welcome
2016-04-08 15:21:47 Did not find handler method for [/welcome]
2016-04-08 15:21:47 No mapping found for HTTP request with URI [/springMVC/welcome] in DispatcherServlet with name 'spring'
2016-04-08 15:21:47 Successfully completed request


网上查了各种解决方法,最后定为问题是:

解决1:

<mvc:annotation-driven/>
       <context:component-scan base-package="com.mvc.rest/*"></context:component-scan>

   改为

<mvc:annotation-driven/>
       <context:component-scan base-package="com.mvc.rest"></context:component-scan>

  去掉/*

解决2: 

        或者改为

        <mvc:annotation-driven/>

       <context:component-scan base-package="com.mvc.*"></context:component-scan>

    

    原因component-scan base-package配置的是路径名称

           如  value='com.mvc.rest'  则 扫描这个包路径下的java bean, 如果配置的 com.mvc.*  则扫描com.mvc包下的子包, 如果是com.mvc.rest.*则扫描com.mvc.rest

下所有的子包,因为com.mvc.rest没有子包,所以此处显示“Did not find handler method for”日志





   

        


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: “did not find handler method for” 的意思是“没有找到处理程序方法”。这通常是因为程序中缺少相应的处理程序方法或者处理程序方法的名称或参数不正确。需要检查程序代码并修复错误。 ### 回答2: "Did not find handler method for"是指在调用某个接口时,系统没有找到相应的处理方法。在使用Spring MVC框架时,通常会在控制器中定义一些处理方法(handler method),用于响应用户请求。如果在调用接口时,系统无法找到对应的处理方法,就会抛出"Did not find handler method for"的异常。 造成这种异常的原因可能有几种。首先,可能是因为请求的URL路径与控制器中定义的路径不符合。例如,请求的路径是"/user/add",但控制器中定义的路径是"/user/register",导致系统无法找到相应的处理方法。 其次,可能是因为请求的HTTP方法与控制器中定义的方法不一致。例如,控制器中定义的方法是POST方法,但实际请求使用了GET方法,导致系统找不到相应的处理方法。 最后,可能是因为控制器中没有定义与请求对应的处理方法。在使用Spring MVC框架时,控制器中定义的处理方法需要与请求的路径和HTTP方法对应。如果控制器中没有定义与请求对应的处理方法,就会抛出"Did not find handler method for"异常。 为了解决这种异常,我们可以做以下几点: 1.检查请求的路径和HTTP方法是否与控制器中定义的处理方法对应。 2.检查控制器中是否定义了与请求对应的处理方法。如果没有定义,需要在控制器中添加相应的方法。 3.检查请求是否符合业务逻辑。如果请求不符合要求,需要调整请求参数或重新设计请求接口。 通过以上措施,我们就可以避免"Did not find handler method for"异常的发生,并保证系统的稳定性和可靠性。 ### 回答3: "Did not find handler method for"是一个错误的提示,通常是由于在编写代码时没有正确设置请求映射或请求参数的原因引起的。在Web应用程序中,处理程序方法负责处理特定HTTP请求,并返回相应的响应。 例如,在Spring MVC中,控制器类的每个方法都应该与一个@RequestMapping注释相关联,以便当请求到达时可以正确地调用该方法。如果没有设置正确的请求映射,则会出现“did not find handler method for”错误。 此外,还可能会发生请求参数不匹配的情况。如果请求中包含的参数与方法的参数不匹配,则无法正确调用处理程序方法,从而导致“did not find handler method for”错误。 解决此错误的方法是仔细检查代码,并确保已正确设置请求映射和请求参数。还可以启用调试模式,以便更轻松地诊断错误并定位问题。在处理程序方法中添加日志记录器也是一种有效的方法,可以记录请求和响应详细信息,以便更好地理解问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值