2017-02-05 4 views
1

Ich bin neu in Spring-Framework und Arbeiten am HelloSpring-Projekt und ich bekomme immer noch den HTTP-Status 404-Fehler. Ich bin gerade ziemlich verzweifelt. Kann mir bitte jemand sagen, was ist das Problem?Spring MVC: Tomcat 404 Die angeforderte Ressource ist nicht verfügbar

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.1" 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"> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 
<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> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<welcome-file-list> 
    <welcome-file>redirect.jsp</welcome-file> 
</welcome-file-list> 

Dispatcher-servlet.xml

<?xml version='1.0' encoding='UTF-8' ?> 
<!-- was: <?xml version="1.0" encoding="UTF-8"?> --><beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/> 

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

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
     <props> 
      <prop key="index.htm">indexController</prop> 
     </props> 
    </property> 
</bean> 

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
     p:prefix="/WEB-INF/jsp/" 
     p:suffix=".jsp" /> 

<!-- 
The index controller. 
--> 
<bean name="indexController" 
     class="org.springframework.web.servlet.mvc.ParameterizableViewController" 
     p:viewName="index" /> 

IndexController.java

@Controller 
public class IndexController{ 
@RequestMapping("welcome") 
public String index(ModelMap map, HttpServletRequest r){ 
    System.out.println("Kontrola do konzole"); 
    map.put("msg", "This is index page"); 
    return "index"; 
} 
} 

redirect.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%><% response.sendRedirect("welcome"); %> 

Tomcat Log

05-Feb-2017 14:14:00.583 WARNING [http-nio-8084-exec-495] org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI [/MavenHello/welcome] in DispatcherServlet with name 'dispatcher' 

Wenn ich die Anwendung starten, habe ich immer 404 Fehler auf URL http://localhost:8084/MavenHello/welcome

+0

Probieren Sie dieses @RequestMapping ("/ MavenHello/welcome") anstelle von @RequestMapping ("Willkommen") –

+0

Fertig. Immer noch das selbe Problem :( –

+0

Was ist mit RequestMapping ("/ welcome")? –

Antwort

0

ist also wieder ganz von vorne anfangen lassen:

1 # Fügen Sie dieses Snippet in Ihre web.xml ein (raiden Sie redirect.jsp, wir brauchen es nicht mehr)

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 

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

    <load-on-startup>1</load-on-startup> 
</servlet> 

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

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

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

2 # In Dispatcher-servlet.xml setzen diese Schnipsel (RAID aller anderen configs erhalten):
Seien Sie sicher, xx.yy.zz.controllers mit Ihrem realen Paket ändern (wo Sie befinden sich Putting-Controller)

<context:component-scan base-package="xx.yy.zz.controllers" /> 
<mvc:annotation-driven /> 

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

3 # Stellen Sie sicher, Ihre Indexcontroller wie folgt aussehen:.

package xx.yy.zz.controllers; 

//imports here... 

@Controller 
public class IndexController { 

    @RequestMapping(value={"/", "/index", "/welcome"}, method = RequestMethod.GET) 
    public String index(Map<String, Object> model) { 

     System.out.println("Kontrola do konzole"); 

     map.put("msg", "This is index page"); 

     //it will be redirected to /WEB-INF/jsp/index.jsp (make sure that have this page) 
     return "index"; 
    } 
} 

# 4 und schließlich ein /WEB-INF/jsp/index.jsp hinzufügen

<html> 
<body> 
    <c:if test="${not empty msg}"> 
     Hello ${msg} 
    </c:if> 
</body> 
</html> 

Das ist es, jetzt können Sie testen Sie Ihre App eine der folgenden URLs:

Lassen Sie mich wissen, ob etw falsch, viel Glück geht.

+0

Ich schätze deine Antwort sehr, ich habe deinen Code benutzt und jetzt funktioniert alles wie oben erwähnt in der Post.Danke :) –

+0

Wenn ich noch eine Frage stellen kann, um die Dinge klarer zu machen. Warum haben Sie @RequestMapping (value = {"/", "/ index", "/ welcome"} anstelle von @RequestMapping ("/", "/ index", "/ welcome"} ohne den "Wert" verwendet) habe das in verschiedenen Artikeln gesehen ... Was ist der Unterschied? :) –

+0

Normalerweise wird RequestMapping verwendet wie @RequestMapping (value = {your_mapping_goes_here}, Methode = http_method_goes_here) zum Beispiel: @RequestMapping (value = {"/", "/ index", "/ welcome"}, method = RequestMethod.GET), aber RequestMethod.GET ist die Standardmethode http_method in springMVC, so dass wir einen Raid bekommen könnten, so dass das Mapping nun wie folgt aussieht: @RequestMapping (value = {"/", "/ index", "/ welcome"}), Und jetzt haben wir noch einen einzigen Parameter, so dass wir den Namen des Raids auch "value" @RequestMapping ({"/", "/ index" , "/herzlich willkommen"}) .. –

Verwandte Themen