2014-04-03 87 views
0

我已經定義了控制方法在春天像下面RequestMapping春季怪異圖案

@RequestMapping(value = "/register", method = RequestMethod.GET) 
public ModelAndView register(HttpSession session) {  

,當我嘗試訪問寄存器頁它是工作的罰款。

localhost:8080/myapp/register 

但問題是它給我相同的頁面與所有這些模式

localhost:8080/myapp/register.htm 
localhost:8080/myapp/register.abc 
localhost:8080/myapp/register.pqrasdfdadf 

我想停止這種行爲。誰能建議?

+0

調度程序servlet映射到哪個URL模式? –

+0

在web.xml中,一切都重定向到彈簧,即「/ *」 – Kishore

回答

4

根據您的Web MVC配置,您必須將RequestMappingHandlerMappinguseSuffixPatternMatch屬性設置爲false

如果你通過WebMvcConfigurationSupport子類做你的配置,簡單地做

@Override 
public RequestMappingHandlerMapping requestMappingHandlerMapping() { 
    RequestMappingHandlerMapping mapping = super.requestMappingHandlerMapping(); 
    mapping.setUseSuffixPatternMatch(false); 
    return mapping; 
} 

使用XML配置,你需要顯式聲明RequestMappingHandlerMapping id爲requestMappingHandlerMapping,並設置相應的<property>

此屬性,這是true默認,確定

是否使用後綴模式匹配(".*")匹配模式來 請求時。如果啓用,映射到「/ users」的方法也與 "/users.*"匹配。

0

我想如果您使用@RequestMapping(value = "/register/", method = RequestMethod.GET),您可以輕鬆解決您的問題。

另一種解決方案:

使用正則表達式。

@RequestMapping(value = "{varName:/register$}") 

這裏$表示字符串的結尾。

+0

現在'localhost:8080/myapp/register'將不起作用。 –

+0

您必須使用localhost:8080/myapp/register /進行請求。 –

+0

哪種打敗他們想要的目的。另外,如果你發送本地主機會發生什麼:8080/myapp/register/.whatever? –