java - 未找到 HanderMapping - Spring 3.x - Controller

标签 java eclipse spring spring-mvc model-view-controller

我尝试了一切方法来使其正常工作..但无济于事。

Spring 3.0.5 Gradle eclipse 嵌入 jetty

它是一个简单的 Controller 。但我收到 No Handler Mapping 消息

web.xml

<display-name>Scheduling</display-name>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:/WEB-INF/spring/sch-rest.xml</param-value>
 </context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Spring MVC -->
<servlet>
    <servlet-name>scheduler</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:/WEB-INF/spring/sch-rest.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>scheduler</servlet-name>
    <url-pattern>/mvc/*</url-pattern>
</servlet-mapping>

Controller :

package com.test.sch.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {

   @RequestMapping(value="/job", method=RequestMethod.GET)
   @ResponseBody
   public String test(@RequestParam (value = "name", required = false) String name) throws Exception{

     System.out.println("name:" + name);
     return "Yes, I got it, " + name;
   }
}

sch-rest.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:mvc="http://www.springframework.org/schema/mvc" 
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

  <context:component-scan base-package="com.test.sch.controller"/>
  <mvc:annotation-driven />
  <context:annotation-config/>

</beans>

war 包含以下内容:

WEB=INF\
   classes
      com 
        test
          sch 
            controller
              TestController
   lib
     <all jars>
   spring
      sch-rest.xml
   web.xml

jetty 日志

2015-12-15 16:51:32 INFO  o.s.web.context.ContextLoader - Root WebApplicationContext: initialization started
2015-12-15 16:51:32 INFO  o.s.w.c.s.XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Tue Dec 15 16:51:32 CST 2015]; root of context hierarchy
2015-12-15 16:51:32 DEBUG o.s.b.f.xml.XmlBeanDefinitionReader - Loaded 0 bean definitions from location pattern [classpath*:/WEB-INF/spring/sch-rest.xml]
2015-12-15 16:51:32 DEBUG o.s.w.c.s.XmlWebApplicationContext - Bean factory for Root WebApplicationContext: org.springframework.beans.factory.support.DefaultListableBeanFactory@239e8159: defining beans []; root of factory hierarchy
2015-12-15 16:51:32 DEBUG o.s.w.c.s.XmlWebApplicationContext - Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@2965524d]
2015-12-15 16:51:32 DEBUG o.s.w.c.s.XmlWebApplicationContext - Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@245545e3]
2015-12-15 16:51:32 DEBUG o.s.u.c.s.UiApplicationContextUtils - Unable to locate ThemeSource with name 'themeSource': using default [org.springframework.ui.context.support.ResourceBundleThemeSource@609b7019]
2015-12-15 16:51:32 INFO  o.s.b.f.s.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@239e8159: defining beans []; root of factory hierarchy
2015-12-15 16:51:32 DEBUG o.s.w.c.s.XmlWebApplicationContext - Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@8384aed]
2015-12-15 16:51:32 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'lifecycleProcessor'
2015-12-15 16:51:32 DEBUG o.s.web.context.ContextLoader - Published root WebApplicationContext as ServletContext attribute with name [org.springframework.web.context.WebApplicationContext.ROOT]
2015-12-15 16:51:32 INFO  o.s.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 141 ms
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - Initializing servlet 'scheduler'
2015-12-15 16:51:33 INFO  o.s.web.servlet.DispatcherServlet - FrameworkServlet 'scheduler': initialization started
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - Servlet with name 'scheduler' will try to create custom WebApplicationContext context of class 'org.springframework.web.context.support.XmlWebApplicationContext', using parent context [Root WebApplicationContext: startup date [Tue Dec 15 16:51:32 CST 2015]; root of context hierarchy]
2015-12-15 16:51:33 INFO  o.s.w.c.s.XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'scheduler-servlet': startup date [Tue Dec 15 16:51:33 CST 2015]; parent: Root WebApplicationContext
2015-12-15 16:51:33 DEBUG o.s.b.f.xml.XmlBeanDefinitionReader - Loaded 0 bean definitions from location pattern [classpath*:/WEB-INF/spring/sch-rest.xml]
2015-12-15 16:51:33 DEBUG o.s.w.c.s.XmlWebApplicationContext - Bean factory for WebApplicationContext for namespace 'scheduler-servlet': org.springframework.beans.factory.support.DefaultListableBeanFactory@6fbf1be2: defining beans []; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@239e8159
2015-12-15 16:51:33 DEBUG o.s.w.c.s.XmlWebApplicationContext - Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@7cd95e35]
2015-12-15 16:51:33 DEBUG o.s.w.c.s.XmlWebApplicationContext - Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@22b8299c]
2015-12-15 16:51:33 DEBUG o.s.u.c.s.UiApplicationContextUtils - Unable to locate ThemeSource with name 'themeSource': using default [org.springframework.ui.context.support.DelegatingThemeSource@68b3d292]
2015-12-15 16:51:33 INFO  o.s.b.f.s.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@6fbf1be2: defining beans []; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@239e8159
2015-12-15 16:51:33 DEBUG o.s.w.c.s.XmlWebApplicationContext - Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@75c5a4f1]
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'lifecycleProcessor'
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - Unable to locate MultipartResolver with name 'multipartResolver': no multipart request handling provided
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver'
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - Unable to locate LocaleResolver with name 'localeResolver': using default [org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver@6685657]
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.theme.FixedThemeResolver'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.theme.FixedThemeResolver'
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - Unable to locate ThemeResolver with name 'themeResolver': using default [org.springframework.web.servlet.theme.FixedThemeResolver@1d8c8631]
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping'
2015-12-15 16:51:33 DEBUG o.s.w.s.h.BeanNameUrlHandlerMapping - Looking for URL mappings in application context: WebApplicationContext for namespace 'scheduler-servlet': startup date [Tue Dec 15 16:51:33 CST 2015]; parent: Root WebApplicationContext
2015-12-15 16:51:33 DEBUG o.s.w.s.h.BeanNameUrlHandlerMapping - Rejected bean name 'servletConfig': no URL paths identified
2015-12-15 16:51:33 DEBUG o.s.w.s.h.BeanNameUrlHandlerMapping - Rejected bean name 'messageSource': no URL paths identified
2015-12-15 16:51:33 DEBUG o.s.w.s.h.BeanNameUrlHandlerMapping - Rejected bean name 'applicationEventMulticaster': no URL paths identified
2015-12-15 16:51:33 DEBUG o.s.w.s.h.BeanNameUrlHandlerMapping - Rejected bean name 'lifecycleProcessor': no URL paths identified
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping'
2015-12-15 16:51:33 DEBUG o.s.w.s.m.a.DefaultAnnotationHandlerMapping - Looking for URL mappings in application context: WebApplicationContext for namespace 'scheduler-servlet': startup date [Tue Dec 15 16:51:33 CST 2015]; parent: Root WebApplicationContext
2015-12-15 16:51:33 DEBUG o.s.w.s.m.a.DefaultAnnotationHandlerMapping - Rejected bean name 'servletConfig': no URL paths identified
2015-12-15 16:51:33 DEBUG o.s.w.s.m.a.DefaultAnnotationHandlerMapping - Rejected bean name 'messageSource': no URL paths identified
2015-12-15 16:51:33 DEBUG o.s.w.s.m.a.DefaultAnnotationHandlerMapping - Rejected bean name 'applicationEventMulticaster': no URL paths identified
2015-12-15 16:51:33 DEBUG o.s.w.s.m.a.DefaultAnnotationHandlerMapping - Rejected bean name 'lifecycleProcessor': no URL paths identified
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping'
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - No HandlerMappings found in servlet 'scheduler': using default
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter'
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - No HandlerAdapters found in servlet 'scheduler': using default
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver'
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - No HandlerExceptionResolvers found in servlet 'scheduler': using default
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator'
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - Unable to locate RequestToViewNameTranslator with name 'viewNameTranslator': using default [org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator@42208e15]
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Creating instance of bean 'org.springframework.web.servlet.view.InternalResourceViewResolver'
2015-12-15 16:51:33 DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'org.springframework.web.servlet.view.InternalResourceViewResolver'
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - No ViewResolvers found in servlet 'scheduler': using default
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - Published WebApplicationContext of servlet 'scheduler' as ServletContext attribute with name [org.springframework.web.servlet.FrameworkServlet.CONTEXT.scheduler]
2015-12-15 16:51:33 INFO  o.s.web.servlet.DispatcherServlet - FrameworkServlet 'scheduler': initialization completed in 141 ms
2015-12-15 16:51:33 DEBUG o.s.web.servlet.DispatcherServlet - Servlet 'scheduler' configured successfully

更新1:

从 web.xml 中删除了以下内容

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:/WEB-INF/spring/sch-rest.xml</param-value>
 </context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

最佳答案

您应该做的第一件事就是删除 ContextLoaderListener声明及其context-param配置。目前,您正在尝试加载 sch-rest.xml文件两次,一次为ContextLoaderListenerWebApplicationContext一次为 DispatcherServlet的。这是不必要的、多余的,并且实际上可能会在注册时导致问题 @Controller处理程序方法。请在此处详细了解这两者之间的差异:

您目前拥有以下内容

<init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:/WEB-INF/spring/sch-rest.xml</param-value>
</init-param>

前缀classpath*:wildcard prefix它尝试加载在指定路径中找到的所有类路径资源,如果没有找到任何资源,也不会出错。这很可能就是这里发生的事情。

你的程序的布局如下

WEB=INF\
   [...]
   spring
      sch-rest.xml

我发现上面的内容不太可能在你的类路径上。

您可以简单地指定(不带 classpath*: )

<init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/sch-rest.xml</param-value>
</init-param>

Spring MVC 将使用 ServletContext来解决配置问题。

关于java - 未找到 HanderMapping - Spring 3.x - Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34301155/

相关文章:

java - 杰老板 : How can i execute a class at deploy time?

c - Eclipse 调试 C

java - 在 Acceleo 中包装 java 函数(在 Eclipse 中)

java - 在 Java 中检测端口可用性失败

java - 解析 WSDL 的简单方法

java - 我使用哪种 JVM 架构?

Spring Data JPA Java 配置 HibernatePersistence.class

java - 请求参数绑定(bind)和类型转换在spring-mvc中是如何工作的?

java - 如何仅使用命令行将环境变量传递给 gradle 包装器构建?

java - mvn 依赖 :tree does not list dependencies of a dependency