Java RequestMappingHandlerMapping.getHandlerInternal:230-未找到的处理程序方法

Java RequestMappingHandlerMapping.getHandlerInternal:230-未找到的处理程序方法,java,spring,controller,web.xml,dispatcher,Java,Spring,Controller,Web.xml,Dispatcher,尝试编写一些spring示例程序-不断地得到错误-我的控制器无法处理/hello请求。这里是来自log4j的调试信息 13:50:58,502 {TRACE} DispatcherServlet.initContextHolders:1018 - Bound request context to thread: org.apache.catalina.connector.RequestFacade@636f2067 13:50:58,503 {DEBUG} DispatcherS

尝试编写一些spring示例程序-不断地得到错误-我的控制器无法处理/hello请求。这里是来自log4j的调试信息

    13:50:58,502 {TRACE} DispatcherServlet.initContextHolders:1018 - Bound request context to thread: org.apache.catalina.connector.RequestFacade@636f2067
    13:50:58,503 {DEBUG} DispatcherServlet.doService:823 - DispatcherServlet with name 'springtest' processing GET request for [/springtest_2/hello]
    13:50:58,504 {TRACE} DispatcherServlet.getHandler:1088 - Testing handler map         
[org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping@7bab2c3] in DispatcherServlet with name 'springtest'
    13:50:58,504 {DEBUG} RequestMappingHandlerMapping.getHandlerInternal:220 - Looking          
    up handler method for path /hello
    13:50:58,504 {DEBUG} RequestMappingHandlerMapping.getHandlerInternal:230 - Did not find handler method for [/hello]
    13:50:58,504 {TRACE} DispatcherServlet.getHandler:1088 - Testing handler map [org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping@722e242b] in         DispatcherServlet with name 'springtest'
    13:50:58,505 {TRACE} BeanNameUrlHandlerMapping.getHandlerInternal:127 - No handler mapping found for [/hello]
    13:50:58,505 {WARN} PageNotFound.noHandlerFound:1108 - No mapping found for HTTP request with URI [/springtest_2/hello] in DispatcherServlet with name 'springtest'  
    13:50:58,505 {TRACE} DispatcherServlet.resetContextHolders:1028 - Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@636f2067
    13:50:58,505 {DEBUG} DispatcherServlet.processRequest:966 - Successfully completed request
    13:50:58,506 {TRACE} XmlWebApplicationContext.publishEvent:332 - Publishing event in WebApplicationContext for namespace 'springtest-servlet': ServletRequestHandledEvent: url=[/springtest_2/hello]; client=[0:0:0:0:0:0:0:1]; method=[GET]; servlet=[springtest]; session=[null]; user=[null]; time=[9ms]; status=[OK]
我的项目中的web.xml

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Spring3-Hibernate DEMO</display-name>

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>

<!-- The front controller of this Spring Web application, responsible for handling all  application requests -->
<servlet>
    <servlet-name>springtest</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/springtest-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
    <servlet-name>springtest</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

</web-app>

事实上,日志说明了一切:

  • 或者将您的url从客户端更改为just
    /hello
    路径

  • 或者将您的
    @控制器映射为:

    @Controller
    @RequestMapping("/springtest_2")
    public class ControllerMain {
    
@控制器


您的控制器类缺少批注。

对我来说,Spring配置文件中有一个错误,指向包:

是:


用正确的拼写修复:

<context:component-scan base-package="com.something.web.controllers" />

ControllerMain.java需要在@Controller之后使用@RequestMapping(“/”)语句

更改:

@Controller
public class ControllerMain {

@RequestMapping(value = "/hello", method = RequestMethod.GET)
....
....
致:


可能重复更改Url模式以\n解决问题。springtest/不理解您的意思,重复Spring-阅读链接,看不到与我的问题相关的任何内容。它显示了错误的文件名/WEB-INF/springtest-servlet.xml它应该是Spring-test-servlet.xml有问题的错误文件名,它应该是springtest-servlet.xml。谢谢您的回答,但是映射控制器(“/springtest_2”)没有帮助仍然得到相同的错误。你的上下文真的为你的注释类配置了映射吗?你的
ControllerMain
在web应用程序类加载器中吗?你的意思是-是的控制器在com.denmroot.Controller容器中。-请随意在github.Right上检查我的项目。我明白了。但它真的是应用程序c中的一个bean吗对我来说,你似乎可以在日志中看到应用程序启动的一些映射信息。Arrrr-对我来说就是这样。>>>案例很重要。
<context:component-scan base-package="com.something.web.controlers" />
<context:component-scan base-package="com.something.web.controllers" />
@Controller
public class ControllerMain {

@RequestMapping(value = "/hello", method = RequestMethod.GET)
....
....
@Controller
@RequestMapping("/")
public class ControllerMain {

@RequestMapping(value = "/hello", method = RequestMethod.GET)
....
....
....