it-swarm.com.de

Keine Zuordnung für HTTP-Anforderung mit URI gefunden [/WEB-INF/pages/apiForm.jsp]

Mein Handler leitet die interne Ressourcenansicht 'apiForm' weiter, aber dann erhalte ich den Fehler 404 RequestURI =/WEB-INF/pages/apiForm.jsp. Ich bin sicher, dass sich apiForm.jsp in/WEB-INF/pages/befindet.

13: 45: 02,034 DEBUG [org.springframework.web.servlet.view.JstlView] - Weiterleiten an Ressource [/WEB-INF/pages/apiForm.jsp] in InternalResourceView 'apiForm'
13: 45: 02,035 DEBUG [org.springframework.web.servlet.DispatcherServlet] - DispatcherServlet mit dem Namen 'testapp2', der den zuletzt geänderten Wert für [/ WEB-INF/pages/apiForm.jsp]
13: 45: 02,038 DEBUG [org.springframework.web.servlet.DispatcherServlet] - Kein Handler in getLastModified gefunden
13: 45: 02,038 DEBUG [org.springframework.web.servlet.DispatcherServlet] - DispatcherServlet mit dem Namen 'testapp2', das die Anforderung für [/WEB-INF/pages/apiForm.jsp verarbeitet ]
13: 45: 02,038 WARN [org.springframework.web.servlet.PageNotFound] - Keine Zuordnung für HTTP-Anforderung mit URI gefunden [/WEB-INF/pages/apiForm.jsp] im DispatcherServlet mit dem Namen 'testapp2'
13: 45: 02,045 DEBUG [org.springframework.web.servlet.DispatcherServlet] - Anforderung erfolgreich abgeschlossen
13: 45: 02,048 DEBUG [org.springframework.web.servlet.DispatcherServlet] - Anforderung erfolgreich abgeschlossen

so sieht meine dispatcher.xml aus ..

<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/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>
92
cometta

Anscheinend versucht DispatcherServlet, die Anforderung für apiForm.jsp zu verarbeiten. Dies deutet darauf hin, dass Ihre web.xml-Servletzuordnung Anforderungen für diesen Speicherplatz an DispatcherServlet weiterleitet.

Sie könnten so etwas haben?

<servlet-mapping>
  <servlet>dispatcher</servlet>
  <url-pattern>/*</url-pattern>
</servlet-mapping>

Rufen Sie Ihre Controller mit einer anderen Erweiterung auf (z. B. .do) und aktualisieren Sie die Servlet-Zuordnung entsprechend

 <servlet-mapping>
  <servlet>dispatcher</servlet>
  <url-pattern>*.do</url-pattern>
</servlet-mapping>
155
ptomli

Ja, ich weiß, dass ich zu spät zu dieser Party komme, aber es könnte anderen helfen.

Der Servlet-Container wählt die Zuordnung basierend auf dem längsten übereinstimmenden Pfad aus. Sie können dieses Mapping also für Ihre JSPs einfügen und es wird anstelle des Mappings/* ausgewählt.

<servlet-mapping>
  <servlet-name>jsp</servlet-name>
  <url-pattern>/WEB-INF/pages/*</url-pattern>
 </servlet-mapping>

Eigentlich ist das alles, was Sie für Tomcat brauchen, da jsp ein Servlet ist, das sofort verfügbar ist. Für andere Container müssen Sie entweder den Namen des JSP-Servlets herausfinden oder eine Servlet-Definition wie folgt hinzufügen:

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.Apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
90
sourcedelica

Einfach hinzufügen <mvc:default-servlet-handler /> zu Ihrer DispatcherServlet-Konfiguration und Sie sind fertig!

17
James Jithin

sie erhalten eine No mapping found for HTTP request with URI Fehlermeldung

wenn Sie das falsche Paket gescannt haben

beispiel: Ihr Controller befindet sich in my.package.abc, aber Sie haben es fälschlicherweise angegeben

<context:component-scan base-package="my.package.efg*" />

oder

@ComponentScan("my.package.efg*")

dies bedeutet, dass Ihr Controller nicht in den Webanwendungskontext gescannt wird, wenn die Anforderung nicht nur über die URL eingeht, sondern nicht die gesamte Klasse gefunden wird.

13
Junchen Liu

Die Lösung, die mir geholfen hat, ist: Ordnen Sie DispatcherServlet nicht /* Zu, sondern /. Die endgültige Konfiguration ist dann:

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

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
9
AlexZam

Ich glaube, ich habe das gesamte Internet gelesen, um herauszufinden, wie Sitemesh meine HTML-Pfade ohne Erweiterung + API-Pfade ohne Erweiterung handhabt. Ich war in eine Zwangsjacke gewickelt, um das herauszufinden. Jede Kurve schien etwas anderes zu zerbrechen. Dann bin ich endlich auf diesen Beitrag gestoßen.

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.Apache.jasper.servlet.JspServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>/WEB-INF/views/*</url-pattern>
 </servlet-mapping>

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>/WEB-INF/decorators/*</url-pattern>
</servlet-mapping>

Tragen Sie dies in Ihre dispatcher-servlet.xml ein

<mvc:default-servlet-handler/>
9
motoprog

Mit Spring 3.1 und Tomcat 7 habe ich folgenden Fehler bekommen:

org.springframework.web.servlet.DispatcherServlet noHandlerFound Keine Zuordnung für HTTP-Anforderung mit URI [/ baremvc /] in DispatcherServlet mit dem Namen 'appServlet' gefunden

Und ich musste die nächste Konfiguration zu web.xml hinzufügen:

<welcome-file-list>
    <welcome-file/>
</welcome-file-list>

Und die Anwendung hat funktioniert!

8
Chem

Eine einfache Überprüfung kann durchgeführt werden. Ich verwende derzeit die Spring MVC-Architektur zusammen mit dem Ruhezustand. Ich hatte es versäumt, @Controller-Annotationen direkt über dem Klassennamen zu schreiben. Dies verursachte das Problem für mich.

@Controller
public class MyClass{
    ...
}

Hoffe, diese einfache Prüfung löst Ihr Problem.

8
Karthik N G

Ich hatte das gleiche Problem. Natürlich gab es einen kleinen Unterschied. Die Geschichte war, als ich die folgende Zeile entfernte:

<mvc:resources mapping="/resources/**" location="classpath:/resources/" />

Alles war in Ordnung, aber in Gegenwart dieser Zeile wurde derselbe Fehler ausgelöst.

Nach einigem Ausprobieren habe ich festgestellt, dass ich die folgende Zeile zu meiner Kontextdatei für Spring-Anwendungen hinzufügen muss:

<mvc:annotation-driven />

Ich hoffe es hilft!

3
Vahid Hassani

Gleiche Antwort wie Brad Parks ... mehr Text

Ich hatte genau das gleiche Problem und habe die obigen Lösungen zusammen mit vielen anderen ausprobiert, alle mit negativen Ergebnissen. Ich habe sogar mit einem neuen, frischen Dev-Env angefangen und einfach ein Spring-MVC-Template installiert und versucht, es direkt nach der Installation auszuführen (sollte funktionieren, ist aber bei mir fehlgeschlagen)

Für mich bestand das Problem darin, dass ich jdk1.6 in meinem Projekt verwendete, aber meine ausgewählte Ausführungsumgebung in Eclipse jdk1.7 war. Die Lösung bestand darin, die projektspezifischen Einstellungen der Ausführungsumgebung so zu ändern, dass dieses Projekt auf jdk1.6 gesetzt ist. Klicken Sie mit der rechten Maustaste auf project -> Properties -> Java Compiler -> Aktivieren Sie "Projektspezifische Einstellungen aktivieren", falls dies nicht bereits aktiviert ist -> wählen Sie das entsprechende JDK aus (oder fügen Sie es hinzu, falls es nicht installiert ist).

Ich hoffe, dies kann jemandem helfen und ihm Zeit sparen, da ich in den letzten Tagen in jeder Ecke des Internets nach Antworten gesucht habe. Ich bin aus Versehen darauf gestoßen, als ich anfing, verzweifelt nach der Lösung zu suchen, in Bereichen, in denen es (laut meinem Gehirn) weniger wahrscheinlich war, dass sie gefunden wurde. =)

Meine 2 Cent. Vielen Dank!

Edit1: Projektspezifische Einstellungen verwenden

Edit2: Habe gerade gemerkt, dass Brad Parks dies bereits in diesem Thread beantwortet hat. Naja, zumindest habe ich das "Editor" -Zeichen aus diesem herausgeholt = D

1
Roger

Ich habe dieses Problem in Eclipse Luna EE festgestellt. Meine Lösung bestand darin, Eclipse einfach neu zu starten und das Servlet auf magische Weise richtig zu laden.

1
Evald

Leider handelt es sich hierbei um eine eher breite Klassenfehlermeldung. Noch eine andere Sache, die schief gehen könnte, ist, wenn Sie einige Klassen/Gläser vermissen. Wenn Sie beispielsweise die JAR-Datei spring-expression vermissen, kann das JAR-Servlet dispatch-servlet Ihren Controller nicht finden, unabhängig davon, wie sehr Sie sich bemühen und wie Richtig, alles andere ist konfiguriert.

1
demongolem

Dies kann auch der Fall sein, wenn Ihre App nicht kompiliert wurde und dennoch in Tomcat gestartet wird. Als ich dies sah, wurde es nicht kompiliert, da für das Projekt ein "projektspezifisches" JDK angegeben war und der Code auf einem Computer ausgecheckt wurde, auf dem dieses spezielle JDK nicht vorhanden war. Eclipse verwendete stattdessen standardmäßig eine JRE, kein JDK, und die App wurde dann nicht kompiliert.

Um dies in unserem speziellen Fall zu beheben, haben wir hier "Projektspezifische Einstellungen" deaktiviert:

"Projekt | Eigenschaften | Java Compiler"

Weitere Informationen dazu finden Sie hier: https://stackoverflow.com/a/2540730/2651

1
Brad Parks

"/ openStudentPage" ist die Seite, die ich zuerst öffnen möchte.

 @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index(Model model) {
     return "redirect:/openStudentPage";
    }

@RequestMapping(value = "/openStudentPage", method = RequestMethod.GET)
public String listStudents(Model model) {
    model.addAttribute("student", new Student());
    model.addAttribute("listStudents", this.StudentService.listStudents());
    return "index";
}
0
Tarnveer Kaur

Was Sie brauchen, ist ein Controller, der zuerst auf die URL reagiert und dann Ihre JSP rendert. Siehe dies Link für eine Lösung .

0
NA.