2016-04-20 17 views
0

Ich weiß, es gibt eine Menge solcher Fragen, aber ich habe alle Antworten gelesen und sie haben mir nicht geholfen.RequestMapping funktioniert nicht, 404

Ich werde 404 Fehler die ganze Zeit, die ich versuche, meine JSP vom Controller zu bekommen.

Mein web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

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

    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.html</url-pattern> 
     <url-pattern>*.htm</url-pattern> 
     <url-pattern>*.json</url-pattern> 
     <url-pattern>*.xml</url-pattern> 
    </servlet-mapping> 

</web-app> 

(. Ich habe versucht, auch nur ein <url-pattern>/</url-pattern> zu verwenden, es hat nicht geholfen)

Mein Dispatcher-servlet.xml:

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:component-scan base-package="olegshan.agg.jba.controller"/> 

</beans> 

Mein IndexController.java:

package olegshan.agg.jba.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 


@Controller 
public class IndexController { 

    @RequestMapping("/index") 
    public String index() { 
     return "/WEB-INF/jsp/index.jsp"; 
    } 
} 

Wenn ich schreibe in meine Adresszeile zum Beispiel http://localhost:8080/index.html es nicht funktioniert, werde ich 404.

ich kann immer noch mein index.jsp auch durch direkte Eingabe in der Adresszeile http://localhost:8080/WEB-INF/jsp/index.jsp nicht reich - ich werde 404 Error.

Ich kann die Dateien aus meinem Web-Ordner reichen, zum Beispiel http://localhost:8080/hello.jsp und es funktioniert OK. Aber wenn ich meine Controller-Methode frage, diese Datei wie folgt zurückzugeben: return "/hello.jsp"; es funktioniert immer noch nicht.

Ich verwende Spring 4.2.5, Tomcat 8.0.33, Intellij Idea 2016.1.1.

Bitte, hilf mir.

+0

Die Adresse sollte http sein: // localhost: 8080/index richtig? Oder Ihr @RequestMapping ("/ index") sollte @RequestMapping ("/ index.html") sein. – Aravind

Antwort

0

Versuchen Sie es.

Mein web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

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

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

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

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

</web-app> 

und geben Sie in Ihrem Browser so etwas wie Ihr @RequestMapping, Beispiel http://localhost/your_context/hello

einmal Darüber hinaus ist die Anforderung in die Steuerung wird, sollte die Ansicht von handhaben werden eine AnsichtResolver.

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

Dann brauchen Sie dies in Ihrem Controller.

@RequestMapping(value = "/hello") 
public String index(){ 

    return "index"; 
} 
+0

Vielen Dank, aber jetzt habe ich ein anderes Problem - java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener Und Tomcat startet überhaupt nicht. –

+0

Fügen Sie den Spring-Web, Glas in Ihrem Pom. http://mvnrepository.com/artifact/org.springframework/spring-web – Dani

+0

Ich habe gelesen, dass dieses Problem durch Spring-Web verursacht werden kann, aber es ist da von Anfang an. –

0

ich mein Problem gefunden, es Waw in pom.xml - Ich habe vergessen, dass: <packaging>war</packaging>

So richtig mein Code.

Danke Ihnen allen für den Versuch, mir zu helfen.