● 從上個項目拷貝過來的form的action屬性忘了修改了,在controller上沒有設定@RequestMapping,方法上設定了但忘記設定value值,沒想到還是能通路到,弄拙成巧,讓我發現了這個問題

● 本以為會預設按照方法名來通路,當我修改方法名後依然能通路到
● 猜想會以表單字段和參數清單的對應關系來通路,修改後依然能通路到
● 因為我這個項目所有的controller的命名空間沒有一個是“account”,是以猜想當SpringMVC無法比對到對應的controller時會通路@RequestMapping沒有配置value的方法, 于是建立一個Controller類,也是隻在方法上配置了一個沒有設定value的@RequestMapping,
這時啟動tomcat報錯:
Caused by: java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'testController' bean method
public java.lang.String com.ld.controller.TestController.login(java.lang.String,java.lang.String,java.lang.String,javax.servlet.http.HttpServletRequest)
to {[]}: There is already 'loginController' bean method
public java.lang.String com.ld.controller.LoginController.login(java.lang.String,java.lang.String,java.lang.String,javax.servlet.http.HttpServletRequest) mapped.
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:212)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:184)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:144)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:123)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:126)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
... 36 more
說明猜想正确,兩個controller沖突了
後經測試,當@RequestMapping設定method屬性,如一個方法上設定為GET,另一個設定為POST,http請求的方式不同,不會沖突,會找到對應的方法執行