it-swarm.com.de

Keine Zuordnung für HTTP-Anforderung mit URI .... in DispatcherServlet mit dem Namen gefunden

Ich habe fast jeden relevanten Artikel über Stackoverflow bereits ausgecheckt, kann aber mein Problem nicht beheben.

Hier ist der Code: 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); 
    }
}

Webseiten/index.jsp:

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

Webseiten/WEB-INF/jsp/hello.jsp:

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

Wenn ich die Anwendung starte, wird die Datei index.jsp korrekt geladen. Wenn ich jedoch auf die href klicke, um zur Datei hello.jsp zu navigieren, wird ein 404-Fehler angezeigt und im Serverprotokoll wird Folgendes angezeigt:

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

Ich habe Dutzende solcher Artikel durchgesehen, aber ich kann den Fehler einfach nicht finden. Hat jemand eine Idee, woran es liegen könnte?

70
erik.c

Sie könnten versuchen, ein @Controller Anmerkung oben auf Ihrer myController-Klasse und versuchen Sie die folgende URL /<webappname>/my/hello.html. Das ist weil org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping stellt / my vor jedes RequestMapping in der Klasse myController.

38
Nils

Hinzufügen

  <mvc:default-servlet-handler/>

zu spring-servlet.xml

69
user965884

Wenn Sie verwenden

<mvc:annotation-driven/> 

stellen Sie sicher, dass Ihre Datei spring-servlet.xml korrekt ist

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

Grundsätzlich müssen Sie alle Pakete, in denen Sie die Annotation verwendet haben, in Ihren Java Code einfügen.

Stellen Sie außerdem sicher, dass Sie keine Duplizierung von Komponenten-Scan (für die Entdeckung von Beans) haben. Wenn Ihre Konfigurations-XML das Element bereits enthält, müssen alle Controller-Klassen, die mit @ ComponentScan (basePackages = ... beschriftet sind, von dieser Beschriftung befreit werden.

27
ssk

Ich löste mein Problem mit: Java Build Path -> JRE-Systembibliothek -> Edit -> Alternate JRE -> -> Finish

Da es für den JDK-Ordner konfiguriert wurde, gab es eine Ausnahme

14
ASHISH GUPTA

Bitte prüfe dein [PROJECT_NAME]\target\classes Verzeichnis, um zu sehen, ob myController.class wird generiert oder nicht.

Wenn nicht, überprüfen Sie bitte Ihren gesamten Java Quellcode auf Kompilierungsfehler.

10
kishore

Versicher dich

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

verweist auf das richtige Paket, das Controller enthält.

9
prayagupd

Versuchen:

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

Arbeitete für mich!

9
Udeep Shakya

Wenn Sie Java Code verwenden, der auf der Spring MVC-Konfiguration basiert, aktivieren Sie DefaultServletHandlerConfigurer im Objekt WebMvcConfigurerAdapter.

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

Überprüfen Sie Ihre Bean xmlns ..

Ich hatte auch ein ähnliches Problem, aber ich habe es gelöst, indem ich mvc xmlns hinzugefügt habe.

<?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

Wenn Sie HTML-Dateien bereitstellen möchten, müssen Sie diesen <mvc:default-servlet-handler /> in Ihrer Spring-Konfigurationsdatei. HTML-Dateien sind statisch. Hoffe, dass dies jemandem helfen kann.

3
Alee

der Zusatz von <mvc:annotation-driven/> hat bei mir funktioniert. Füge es vor der Zeile ein <context:component-scan ............/>

3
Nilay Deshmukh

Hatte genau den gleichen Fehler und ich habe lange gebraucht, um ihn zu verstehen. Es liegt höchstwahrscheinlich an Kompilierungsfehlern. Die Java) - Klassen wurden nicht in Ihrem Servlet veröffentlicht. Bitte überprüfen Sie dies, indem Sie auf dem Server gehen, auf dem Sie\tmp1\wtpwebapps [PROJECT_NAME]\WEB verwenden -INF\classes\und versuchen Sie, die Controller-Klassen zu finden, um festzustellen, ob sie veröffentlicht wurden oder nicht. Wenn nicht, müssen Sie Kompilierungsfehler auf den Grund gehen.

2
Jan

wenn Sie maven verwenden, führen Sie den Befehl maven install aus, bevor Sie Ihre Web-App auf einem Server ausführen, da dadurch eine Klassendatei für Ihren Controller generiert wird. Nach meiner Erfahrung fehlt Ihrer Anwendung diese Datei.

2
Ashish Jagga

Fügen Sie @Controller Zu Ihrem Controller hinzu oder wo immer Sie den @RequestMapping Für Ihren json-Endpunkt haben.

Dies funktionierte bei mir während der Bereitstellung einer ähnlichen Anwendung.

2

Wenn Sie maven als Erstellungswerkzeug für ein Projekt verwenden, erstellen Sie Ihr Projekt ordnungsgemäß. Ihre Änderungen in den Code- und XML-Dateien werden nach der Kompilierung nicht wiedergegeben.

2
nat

Ich hatte das gleiche Problem und nach vielen Nacharbeiten stellte ich fest, dass die Klassen nicht in meinem Zielordner veröffentlicht wurden. Also hatte ich die folgenden zwei Befehle von cmd ausgeführt

  1. mvn sauber installieren
  2. mVN-Paket

Überraschenderweise konnte ich auf die Seite zugreifen und der Fehler war verschwunden. Gleiches kann im Zielordner überprüft werden, wo Sie die entsprechenden Klassen finden können, die früher fehlten.

2
anshu

Wenn Sie von Spring Social abhängig sind, überprüfen Sie, ob Sie eine Web-Controller-Bean konfiguriert haben:

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

Die Controller werden nicht gefunden, dies sind grundlegende Probleme. Dies kann folgende Gründe haben.

A. Im Ordner WEB-INF befindet sich die Datei web.xml, die auf das DispatcherServlet verweist. Hier ist es in diesem Fall 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. Diese mvc-config.xml-Datei hat Namespaces und muss die Controller scannen.

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

C. Überprüfen Sie, ob der Paketname, auf dem sich die Controller befinden, korrekt ist. Es sollte funktionieren.

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

Das Entfernen des Tomcat-Servers und das Hinzufügen einer neuen Tomcat-Konfiguration in Eclipse hat das Problem für mich behoben.

1
D8Sasi

Ich hatte auch das gleiche Problem, aber nachdem ich den Namespace unten angegeben habe, funktioniert es:

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

Stellen Sie in pom.xml sicher, dass die Verpackung auf war wie <packaging>war</packaging> Gesetzt ist, nicht auf jar oder irgendetwas anderes.

1
Hadi Rasouli

Wenn Sie Maven verwenden, fügen Sie diese zu Ihrer pom.xml hinzu

<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

Was ist/Elso?

Sie versuchen:

@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