2014-03-24 41 views
2

我有以下配置在web.xml在web.xml中映射Spring MVC URL模式?

<servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>classpath:spring/mvc-dispatcher-servlet.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

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

我有控制器如下。

@Controller 
public class SomeController { 

    @RequestMapping("/somePath") 
    public String showExtendedUi() { 
     return "somePage"; 
    } 


} 

現在,客戶端將通過發送網址參數作爲貝羅調用控制器:

http://localhost:8080/myApp/somePath?param1=456&param2=456 

但控制器方法不會被調用。

我的網址是否正確?

回答

6

沒有被調用你的控制器的方法,因爲你已經映射到mvc-dispatcher*.do 改變servlet映射到

<servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
+1

當然也可以將註解和URL更改爲@RequestMapping(「/ somePath.do」)。在任何情況下都需要進行配置,以使規則不會相互衝突。 – Gimby

+1

如果配置'/',那麼springMVC調度器也會得到類似image/js/css的靜態資源嗎? –

2

至於調度servlet的URL模式設置爲*。做,該控制器將只叫只通過模式「something.do」的url請求。

因此,如果所有其他配置都正確,您的網址http://localhost:8080/myApp/somePath.do?param1=456&param2=456可以正常工作。