web-dev-qa-db-ja.com

名前がDispatcherServletにURI ....のHTTPリクエストのマッピングが見つかりません

私はすでにstackoverflowに関するほぼすべての関連記事をチェックアウトしましたが、私は問題を解決することができません。

コードは次のとおりです。web.xml:

   <display-name>Spring3MVC</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <context-param>
        <param-name>contextConfigLocation</param-name> 
        <param-value>/WEB-INF/spring-servlet.xml</param-value> 
    </context-param> 
    <listener> 
        <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> 
    </listener>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>/</url-pattern>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
</web-app>

spring-servlet.xml:

<context:component-scan base-package="com.mycompany.elso" />
    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>   

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

myController:

public class myController {
    @RequestMapping("/hello")
    public ModelAndView helloWorld() {

        String message = "Hello World, Spring 3.0!";
        return new ModelAndView("hello", "message", message); 
    }
}

Webページ/ index.jsp:

<html>
<head>
    <title>Spring 3.0 MVC Series</title>
</head>
<body>
    <a href="hello.html">Say Hello</a>
</body>
</html>

Webページ/ WEB-INF/jsp/hello.jsp:

<html>
<head>
    <title>Spring 3.0 MVC Series: Hello World - ViralPatel.net</title>
</head>
<body>
    ${message}
</body>
</html>

そのため、アプリケーションを起動するとindex.jspが正しくロードされますが、hrefをクリックしてhello.jspに移動すると404エラーが発生し、サーバーログに次のように表示されます。

No mapping found for HTTP request with URI [/Elso/hello.html] in DispatcherServlet with name 'spring'

私はそのような数十の記事をチェックアウトしました、しかし私はただ間違いを見つけることができません、誰もがそれが何でありえるかについて何か考えを持っていますか?

68
erik.c

MyControllerクラスの上に@Controllerアノテーションを追加して、次のURL /<webappname>/my/hello.htmlを試すことができます。これは、org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMappingがmyControllerクラスの各RequestMappingの先頭に/ myを付加するためです。

38
Nils

追加する

  <mvc:default-servlet-handler/>

spring-servlet.xmlへのリンク

68
user965884

あなたが使っているなら

<mvc:annotation-driven/> 

spring-servlet.xmlが正しいことを確認してください。

<context:component-scan base-package="com.....controller" /> tag. 

基本的には、注釈を使用したすべてのパッケージをJavaコードに含める必要があります。

また、component-scan(beanの検出用)の重複がないことを確認してください。設定XMLにすでに要素が含まれている場合は、@ ComponentScan(basePackages = ...というアノテーションが付けられているControllerクラスのいずれかで、前述のアノテーションを削除する必要があります。

27
ssk

私は私の問題を解決した:Java Build Path - > JREシステムライブラリ - > Edit - > Alternate JRE - > - > Finish

JDKフォルダに設定されているので例外が発生していた

14
ASHISH GUPTA

確認してください

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

コントローラを含む適切なパッケージを指します。

9
prayagupd

[PROJECT_NAME]\target\classesディレクトリを調べて、myController.classが生成されるかどうかを確認してください。

そうでない場合は、コンパイルエラーがないかどうか、すべてのJavaソースコードを確認してください。

9
kishore

試してください:

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

私のために働いた!

9
Udeep Shakya

Spring MVC設定に基づくJavaコードを使用している場合は、DefaultServletHandlerConfigurerオブジェクトでWebMvcConfigurerAdapterを有効にします。

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
        configurer.enable();
}
6
Gaurav Goyal

Ur Bean xmlnsを確認してください。

私も同様の問題を抱えていた、しかし私はmvc xmlnsを加えることによってそれを解決した。

<?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:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd 
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">


    <context:component-scan base-package="net.viralpatel.spring3.controller" />
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>
3
Vishal Gupta

.htmlファイルを提供したい場合は、この<mvc:default-servlet-handler />をSpringの設定ファイルに追加する必要があります。 .htmlファイルは静的です。これが誰かに役立つことを願っています。

3
Alee

<mvc:annotation-driven/>の追加は私のために働きました。 <context:component-scan ............/>行の前に追加してください

3
Nilay Deshmukh

まったく同じエラーがあり、それを理解しようとするのに長い時間がかかりました。ほとんどの場合、コンパイルエラーが原因で、Javaクラスがサーブレットに公開されませんでした。サーバーで\ tmp1\wtpwebapps [PROJECT_NAME]\WEB-INF\classes \を使用していることを確認し、コントローラークラスが公開されているかどうかを確認してください。そうでない場合は、コンパイルエラーをすべて解決する必要があります。

2
Jan

あなたがmavenを使っているなら、それはあなたのコントローラのためのクラスファイルを生成するのであなたがサーバ上であなたのWebアプリを実行する前にmaven installコマンドを実行してください。

2
Ashish Jagga

コントローラに@Controllerを追加するか、どこにあなたがあなたのために@RequestMappingを持っているかをエンドポイントにします。

これは私には似たようなアプリケーションをデプロイしている間うまくいきました。

2

Mavenをプロジェクトのビルドツールとして使用している場合は、プロジェクトを正しくビルドしてください。コードおよびxmlファイルの変更はコンパイル後に反映されません。

2
nat

私は同じ問題を抱えていました、そして多くの調査の後で私はクラスが私の目標フォルダーで公表されていないのを発見しました。だから私はcmdから以下の2つのコマンドを実行していた

  1. mvnクリーンインストール
  2. mvnパッケージ

驚いたことに私はページにアクセスすることができ、エラーは消えました。あなたが以前欠けていた遵守クラスを見つけることができるでしょうターゲットフォルダから同じことを確認することができます。

2
anshu

Spring Social に依存している場合は、WebコントローラBeanが設定されていることを確認してください。

import org.springframework.context.annotation.Bean;
import org.springframework.social.connect.web.ConnectController;
import org.springframework.social.connect.ConnectionFactoryLocator;
import org.springframework.social.connect.ConnectionRepository;

...

@Bean
public ConnectController connectController(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) {
    return new ConnectController(connectionFactoryLocator, connectionRepository);
}
2
naXa

それはコントローラを見つけていない、これは基本的な問題です。次のような原因が考えられます。

A. WEB-INFフォルダ内に、dispatcherServletを参照するweb.xmlファイルがあります。ここでそれはこの場合mvc-config.xmlです

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

B.このmvc-config.xmlファイルには名前空間があり、コントローラをスキャンする必要があります。

<context:component-scan base-package="org.vimal.spring.controllers" />
<mvc:annotation-driven />

C.コントローラがあるパッケージ名が正しいことを確認します。それはうまくいくはずです。

All Controllers must be Annotated with @Controller.
2
vimal krishna

Tomcatサーバを削除し、Eclipseに新しいTomcat設定を追加することで私の問題は解決しました。

1
D8Sasi

私も同じ問題に直面しましたが、以下に名前空間を置いた後、それはうまく機能します:

xmlns:mvc="http://www.springframework.org/schema/mvc" 
1
Ravikumar D G

Pom.xmlで、パッケージングが<packaging>war</packaging>のようにwarに設定されていることを確認してください。jarやその他のものには設定されていません。

1
Hadi Rasouli

Mavenを使用している場合は、これらをpom.xmlに追加してください。

<dependency>
<groupid>javax.servlet</groupid>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
<dependency>
<groupid>taglibs</groupid>
<artifactId>standard</artifactId>
<version>1.1.2</version>
<scope>runtime</scope>
1
Medini Patki

/ Elsoとは何ですか?

試してみて:

@RequestMapping("/Elso")
public class myController {

    @RequestMapping("/hello")
    public ModelAndView helloWorld() {

        String message = "Hello World, Spring 3.0!";
        return new ModelAndView("hello", "message", message); 
    }
}
0
Dalton Dias