2014-12-15 17 views
5

ho qualche problema con Spring MVC Ecco la mia configurazione web.xmlSpring MVC - Nessuna mappatura trovata per l'URI della richiesta?

<!-- config spring --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/classes/applicationContext.xml, 
       /WEB-INF/classes/xfire-servlet.xml, 
       /WEB-INF/classes/mvc-servlet.xml, 
       classpath:org/codehaus/xfire/spring/xfire.xml 
    </param-value> 
</context-param> 
<listener> 
    <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 
<listener> 
    <listener-class> 
      org.springframework.web.util.IntrospectorCleanupListener 
    </listener-class> 
</listener> 
<!-- spring mvc --> 
<servlet> 
    <servlet-name>mvc</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>mvc</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 

mio controller è seguendo

@Controller 
@RequestMapping("/searchCase.do") 
public class SearchCaseController { 

     public String getCaseDetailInfo() { 
      return "forward:caseDetail"; 
     } 

} 

e il mio config MVC è

<!--auto scan annotation --> 
<context:component-scan base-package="com.thunisoft.shxt.webservice.model.searchCase.logic" /> 

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

Poi chiedo attraverso l'url: http: // {indirizzo: porta}/{nome-applicazione} /searchCase.do, ma non riesce a trovare il controller per risolvere la mia richiesta con

No handler found in getLastModified 
DispatcherServlet with name 'mvc' processing request for [/{application-name}/searchCase.do] 
No mapping found for HTTP request with URI [/{application-name}/searchCase.do] in DispatcherServlet with name 'mvc' 
Successfully completed request 

la mia primavera versione MVC è 2.5.6 sto aspettando le vostre domande per aiutarmi a risolvere questo problema, grazie!

+0

qual è il nome del file xml di configurazione? –

+0

Il nome del file XML è mvc.xml – Gmx

+1

renderlo springMVC-servlet.xml, quindi provare. –

risposta

0

Ciò che le persone sono suggerendo nei commenti è ciò che il docs descrivono

Su inizializzazione di un DispatcherServlet, Spring MVC cerca un file chiamato [servlet-name] -servlet.xml nel WEB-INF directory dell'applicazione web e crea i bean definiti lì, ignorando le definizioni di qualsiasi bean definito con lo stesso nome nell'ambito globale .

Tuttavia, utilizzando la configurazione

<init-param> 
    <param-name>namespace</param-name> 
    <param-value>mvc</param-value> 
</init-param> 

avete sovrascritto questo, quindi il file DispatherServlet esaminerà il seguente percorso

DEFAULT_CONFIG_LOCATION_PREFIX + getNamespace() + DEFAULT_CONFIG_LOCATION_SUFFIX 

così nel tuo esempio, sarà

/WEB-INF/mvc.xml 

Vedo per il tuo commento che in origine avevi il nome proprio (corrispondente alla tua configurazione). Quindi è che non lo hai messo sotto WEB-INF, o i tuoi problemi sono altrove.

Detto questo, considerare la configurazione alternativa (più esplicita a mio parere), basata sul parametro contextConfigLocation, ad es.

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

    <servlet-mapping> 
    <servlet-name>springMVC</servlet-name> 
     <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 

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

Speranza che aiuta

+0

Innanzitutto, grazie per la tua risposta, e lo faccio seguendo i tuoi consigli, ma non ho risolto il problema, e ho modificato il mio 'web.xml', per favore aiutami a dare un'occhiata se ha qualche problema. – Gmx

3

Si prega di cambiare il modello di controllo URL come ho già detto qui di seguito

.DO volontà viene automaticamente aggiunto a tutti mappatura richiesta di controllo dal momento che si è configurato nel web.xml

@Controller 
@RequestMapping("/searchCase") 
public class SearchCaseController { 

     public String getCaseDetailInfo() { 
      return "forward:caseDetail"; 
     } 

} 

codice JSP:

<a href="/searchCase.do">Click</a> 
+0

Immagino tu intenda Click Lo faccio seguendo i tuoi consigli, ma non ho funzionato etere, più un metodo 'init()' nel mio controller per vedere se è stato trovato e inizializzato, e 'init()' invocato mentre il server si avvia, non riesco a trovarlo, dov'è il problema! – Gmx

+0

Che errore hai effettivamente? Inserisci l'errore. – sankar

+0

Salve, ecco l'errore "Nessuna mappatura trovata per richiesta HTTP con URI [/{application-name}/searchCase.do] in DispatcherServlet con nome 'mvc'' – Gmx

1

Prova ad aggiungere un'annotazione livello di metodo come questo:

@Controller 
@RequestMapping("/searchCase") 
public class SearchCaseController { 

    @RequestMapping(method = RequestMethod.GET) 
    public String getCaseDetailInfo() { 
     return "forward:caseDetail"; 
    } 

} 

come è descritto nella documentazione: Mapping Requests With @RequestMapping

17,3 .2 Richiesta di mappatura s Con @RequestMapping

È possibile utilizzare il @RequestMapping annotazioni per mappare gli URL come /appointments su un'intera classe o di un particolare metodo di gestore. In genere l'annotazione a livello di classe esegue il mapping di un percorso di richiesta specifico (o modello di percorso ) su un controller di modulo, con annotazioni a livello di metodo restringendo il mapping primario per un metodo HTTP specifico metodo di richiesta ("GET", "POST" , ecc.) o una condizione del parametro di richiesta HTTP .

0

Ho installato il progetto sul mio computer. Per prima cosa eseguo il progetto con maven-jetty-plugin. Quindi non si è verificato alcun errore di rilevamento della mappatura. Dopo un sacco di modifiche ho finalmente provato maven-tomcat7-plugin quindi ha funzionato.

Aggiungere plug Tomcat al pom.xml

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.2</version> 
      </plugin> 
     </plugins> 
    </build> 

quindi avviare il server di mvn tomcat7:run

la mappatura del controller dovrebbe essere simile a questo:

@RequestMapping(value="/searchCase", method = RequestMethod.GET) 
public ModelAndView helloWorld() { 
0

Ho avuto lo stesso errore. Dopo aver provato tutto ciò che ho trovato in overflow dello stack senza alcun risultato, mi sono reso conto che avevo il mio controller nella cartella src/main/resources/com/controllers, dove com.controllers doveva essere un pacchetto.

La creazione di un'altra cartella di origine src/main/java e lo spostamento della cartella com/controllers hanno risolto il problema. (Ha rilevato la cartella com/controller come pacchetto mentre in src/main/resources è stata considerata come una directory ordinaria.)

+0

Inoltre, non dimenticare di aggiungere al file xml servlet, altrimenti non rileverà il controller. – user2648421

Problemi correlati