【问题标题】:No mapping found for HTTP request with URI [] in DispatcherServlet with name ' [duplicate]在名称为“ [重复] 的 DispatcherServlet 中未找到带有 URI [] 的 HTTP 请求的映射
【发布时间】:2014-12-19 11:22:50
【问题描述】:

早上,我已经检查了这个问题 (No mapping found for HTTP request with URI.... in DispatcherServlet with name) 和 (No mapping found for HTTP request with URI [/ChickenTest/index] in DispatcherServlet with name 'dispatcherServlet') 的大部分答案,但我仍然收到“找不到带有 URI [/bmoa-surrounds/bmoa] 的 HTTP 请求的映射]在名为 'bmoa' 的 DispatcherServlet 中,因此,任何帮助都值得赞赏:

pom:

<dependencies>
        <!-- Junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!-- Testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8.5</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>


        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>    

        <!-- Log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.2.6</version>
        </dependency>
        <dependency>
            <groupId>javax.xml</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.1</version>
        </dependency>
    </dependencies>

然后是我的 web.xml

<display-name>bmoa-surrounds</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/bmoa-servlet.xml</param-value>
    </context-param>

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

     <servlet>
        <servlet-name>bmoa</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>bmoa</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

我的弹簧配置文件

<context:component-scan base-package="xxxx"/>
    <context:annotation-config/>
    <context:spring-configured/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

最后是我的控制器

@Controller
public class BMOAServlet implements HttpRequestHandler {


    /**
     * 
     */
    @RequestMapping("/bmoa-surrounds/bmoa")
    public void handleRequest(final HttpServletRequest request,
            final HttpServletResponse response) throws ServletException,
            IOException {

         response.getWriter().write("result=" + handleIncomingMessage(request));
    }

我正在调用“http:// localhost :8080/bmoa-surrounds/bmoa?juan=9898”,但在 DispatcherServlet 中仍然没有找到带有 URI [/bmoa-surrounds/bmoa] 的 HTTP 请求的映射名称为“bmoa”,有什么想法吗?我的环境是 java6 a 部署到 jboss

我也确定 bean 已加载,我在服务器日志中得到了这个

12:34:06,671 INFO  [org.springframework.beans.factory.support.DefaultListableBeanFactory] (MSC service thread 1-5) Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@57ffa0: defining beans [BMOABussinesDelegate,properties,BMOAServlet,.........]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@122d7c6

还有这个

12:34:06,753 INFO  [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] (MSC service thread 1-5) Mapped URL path [/bmoa-surrounds/bmoa] onto handler 'BMOAServlet' 12:34:06,754 INFO  [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] (MSC service thread 1-5) Mapped URL path [/bmoa-surrounds/bmoa.*] onto handler 'BMOAServlet' 12:34:06,755 INFO  [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] (MSC service thread 1-5) Mapped URL path [/bmoa-surrounds/bmoa/] onto handler 'BMOAServlet'

最后一个是否意味着映射已加载?请帮忙;(

【问题讨论】:

  • 根据stackoverflow.com/questions/12351777/…更改,我的日志文件已更改:INFO [RequestMappingHandlerMapping] Mapped "{[/bmoa-surrounds/bmoa],... 到 public void BMOAServlet.handleRequest(...)抛出 IOException 但我仍然收到相同的错误 WARN [PageNotFound] No mapping found for HTTP request with URI [/bmoa-surrounds/bmoa] in DispatcherServlet with name 'bmoa'
  • 将您的 servlet 映射 url 模式更改为:/*。让我知道这是怎么回事
  • 现在它甚至不加载 index.jsp 12:58:01,667 WARN [org.springframework.web.servlet.PageNotFound] (http--0.0.0.0-8080-1) 没有映射在 DispatcherServlet 中找到带有 URI [/bmoa-surrounds/bmoa] 的 HTTP 请求,名称为 'bmoa' 12:58:01,943 WARN [org.springframework.web.servlet.PageNotFound] (http--0.0.0.0-8080-2)在名称为“bmoa”的 DispatcherServlet 中找不到具有 URI [/bmoa-surrounds/index.jsp] 的 HTTP 请求的映射
  • 我猜是一些错过的配置,因为日志说它已经被映射,它说没有映射:s
  • 现在没人关心[spring]了吗? Almost 300 identical questions。规范副本在哪里?还是 Stack Overflow 和内容管理被误解了?

标签: java spring spring-mvc servlets


【解决方案1】:

我现在感觉真的很愚蠢....起初(感谢 Angad 的线索),url 模式是错误的,它应该指向 servlet,而且加载的 bean 是 BMOAServlet 而不是 bmoa ,所以当我更改 url-patter no bmoa 时,设法看到错误,最后我的 web.xml 需要看起来像这样:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/bmoa-servlet.xml</param-value>
    </context-param>

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

     <servlet>
        <servlet-name>bmoa</servlet-name>
        <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>bmoa</servlet-name>
        <url-pattern>/bmoa</url-pattern>
    </servlet-mapping>


    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

还有这样的 bean 类:

@Controller("bmoa")
public class BMOAServlet implements HttpRequestHandler {



    /**
     * 
     */
    @RequestMapping("/bmoa-surrounds/bmoa")
    public void handleRequest(final HttpServletRequest request,
            final HttpServletResponse response) throws ServletException,
            IOException {

         response.getWriter().write("result=" + handleIncomingMessage(request));
    }

现在一切顺利,我还像这样更改了 servlet 类:

<servlet>
        <servlet-name>bmoa</servlet-name>
        <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

【讨论】:

    【解决方案2】:

    检查这个配置文件:src\main\webapp\WEB-INF\spring\appServlet\controllers.xml

    内容如下:

    <context:component-scan base-package="org.springframework.samples.mvc" />
    

    你的控制器在“org.springframework.samples.mvc”中吗?

    【讨论】:

    • 是的,这些都在那里,实际上我找到了解决方案,我只是忘记标记为答案。
    【解决方案3】:

    在 pom.xml 中确保将包装设置为 war 就像 &lt;packaging&gt;war&lt;/packaging&gt; 一样,而不是 jar 或其他任何东西。

    【讨论】:

      猜你喜欢
      • 2013-09-12
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 2017-05-01
      • 1970-01-01
      • 2016-12-06
      相关资源
      最近更新 更多