72

スタックオーバーフローに関するほぼすべての関連記事をチェックアウトしましたが、問題を解決できません。

コードは次のとおりです: 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>

春サーブレット.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>

私のコントローラー:

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'

私はそのような記事を何十もチェックアウトしましたが、間違いを見つけることができません。

4

23 に答える 23

71

追加

  <mvc:default-servlet-handler/>

spring-servlet.xml へ

于 2014-04-17T19:35:05.730 に答える
40

@ControllermyController クラスの上に注釈を追加して、次の url を試すことができます/<webappname>/my/hello.html。これは、myController クラスの各 RequestMapping の前に /my を追加するためorg.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMappingです

于 2013-09-08T19:07:34.607 に答える
30

使用している場合

<mvc:annotation-driven/> 

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

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

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

また、コンポーネント スキャン(Bean の検出用)が重複していないことを確認してください。構成 XML に既に要素が含まれている場合は、@ComponentScan(basePackages= ... で注釈が付けられた Controller クラスのいずれかから、前述の注釈を削除する必要があります。

于 2015-01-30T21:21:51.180 に答える
15

私は次の問題を解決しました: Java Build Path -> JRE system library -> Edit -> Alternate JRE -> -> Finish

JDKフォルダーに構成されているため、例外が発生していました

于 2015-02-10T09:50:17.740 に答える
12

確実に

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

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

于 2015-07-13T02:32:02.257 に答える
10

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

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

于 2013-10-23T20:38:10.390 に答える
9

試す:

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

私のために働いた!  

于 2013-09-08T18:51:29.477 に答える
9

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

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
        configurer.enable();
}
于 2016-02-19T18:27:57.780 に答える
3

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

于 2015-01-16T10:05:03.990 に答える
3

コントローラーが見つからない、これは基本的な問題です。以下の理由が考えられます。

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.
于 2016-05-07T22:34:31.240 に答える
2

コントローラーに追加するか、 json エンドポイント@Controllerがある場所に追加します。@RequestMapping

これは、同様のアプリケーションをデプロイしているときにうまくいきました。

于 2016-07-01T14:15:00.663 に答える
2

プロジェクトのビルド ツールとして Maven を使用している場合、プロジェクトを適切にビルドすると、コンパイル後にコードと xml ファイルの変更が反映されません。

于 2015-08-01T18:29:31.517 に答える
2

私は同じ問題を抱えていましたが、多くの調査の結果、クラスがターゲットフォルダーに公開されていないことがわかりました。したがって、cmdから以下の2つのコマンドを実行しました

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

驚いたことに、ページにアクセスでき、エラーがなくなりました。以前に欠落していたコンパイルされたクラスを見つけることができるターゲットフォルダーから同じことを確認できます。

于 2016-04-24T15:17:42.307 に答える
2

Maven を使用している場合は、サーバーで Web アプリを実行する前に maven install コマンドを実行してください。コントローラーのクラス ファイルが生成されるためです。私の経験では、それがアプリケーションに欠けていたものです。

于 2016-02-09T12:58:52.097 に答える
1

Tomcat サーバーを削除し、Eclipse で新しい tomcat 構成を追加すると、問題が解決しました。

于 2015-07-08T06:41:13.327 に答える
1

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>

于 2014-05-27T14:02:38.550 に答える
1

私も同じ問題に直面しましたが、名前空間を下に置くと、正常に動作します。

xmlns:mvc="http://www.springframework.org/schema/mvc" 
于 2014-07-04T16:23:53.290 に答える
1

pom.xml で、パッケージングがjar などではなくwarlikeに設定されていることを確認します。<packaging>war</packaging>

于 2015-07-22T08:37:20.003 に答える