2012-04-07 4 views
2

Ich versuche, eine sehr einfache Spring @mvc-App zum Laufen zu bringen, und ich stoße auf einen Mapping-Fehler.Was verursacht den Mappingfehler in dieser Spring MVC App?

Von web.xml:

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

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

Der Controller:

@Controller 
@RequestMapping("/test") 
public class TESTController { 
    private static Logger appLogger = Logger.getLogger("AppLogFile"); 

    public String serviceRequest( Model model) 
    { 
     appLogger.info("======================= TESTController GET ==============================="); 
     model.addAttribute("returnString","TESTController handled the request") ; 
     return "SingleStringView"; 
    } 

Werke-servlet.xml:

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

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> 
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> 

    <bean id="TESTController" class="com.ami.dbconnect.controller.TESTController"></bean> 

    <!-- view resolver not shown --> 

Die App auf Tomcat 7 bei/webapps eingesetzt wird/funktioniert. Die Tomcat Dateistruktur ist:

webapps 
    /works 
     /WEB-INF 
      /classes 
      /lib 

Ich versuche, den Controller mit der URL aufzurufen: localhost: 8080/Werke/Test

In tomcat7-stdout ich sehe:

1106 [Pool -2-thread-1] DEBUG org.springframework.web.servlet.DispatcherServlet - Veröffentlicht WebApplicationContext von Servlets 'funktioniert' als ServletContext mit attribute name [org.springframework.web.servlet.FrameworkServlet.CONTEXT.works]

1106 [pool-2-thread-1] INFO org.springframework.web .servlet.DispatcherServlet - FrameworkServlet 'funktioniert': Initialisierung in 728 ms abgeschlossen

1106 [pool-2-Faden-1] DEBUG org.springframework.web.servlet.DispatcherServlet - Servlets 'Arbeiten' erfolgreich konfiguriert

14068 [http-apr-8080-exec-2] DEBUG org.springframework.web.servlet.DispatcherServlet - DispatcherServlet mit dem Namen 'funktioniert' GET Anfrage ist für [/ Werke/test]

14071 [http-apr-8080 -exec-2] WARN org.springframework.web.servlet.PageNotFound - Keine Zuordnung für HTTP-Anforderung mit URI [/ works/test] in DispatcherServlet mit dem Namen 'works' gefunden

Also meine Frage (endlich!): Erkennt Spring die Anmerkungen im Controller nicht? Wenn nicht, was könnte bei dieser einfachen Einrichtung falsch sein?

Vielen Dank für jede Hilfe oder Beratung, beeky

Antwort

2

Sie benötigen @RequestMapping Anmerkung zu Ihrer serviceRequest Methode zu bewegen.

@RequestMapping auf Klassenebene kann für alle @RequestMapping -annotated dieser Klasse gemeinsame Pfadpräfix angeben verwendet werden, aber es braucht nicht irgendeine Wirkung ohne Annotationen bei Methode Ebene.

1

Vielleicht Problem im Servlet Mapping-Abschnitt? Versuchen zu ändern:

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

Und versuchen Sie es erneut.