最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決SpringMVC @RequestMapping不設(shè)置value出現(xiàn)的問(wèn)題

 更新時(shí)間:2021年08月17日 09:34:28   作者:不會(huì)Ayy的拉馬爾  
這篇文章主要介紹了解決SpringMVC @RequestMapping不設(shè)置value出現(xiàn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringMVC @RequestMapping不設(shè)置value

從上個(gè)項(xiàng)目拷貝過(guò)來(lái)的form的action屬性忘了修改了

在controller上沒(méi)有設(shè)置@RequestMapping,方法上設(shè)置了但忘記設(shè)置value值,沒(méi)想到還是能訪問(wèn)到,弄拙成巧,讓我發(fā)現(xiàn)了這個(gè)問(wèn)題

本以為會(huì)默認(rèn)按照方法名來(lái)訪問(wèn),當(dāng)我修改方法名后依然能訪問(wèn)到

猜想會(huì)以表單字段和參數(shù)列表的對(duì)應(yīng)關(guān)系來(lái)訪問(wèn),修改后依然能訪問(wèn)到

因?yàn)槲疫@個(gè)項(xiàng)目所有的controller的命名空間沒(méi)有一個(gè)是“account”,所以猜想當(dāng)SpringMVC無(wú)法匹配到對(duì)應(yīng)的controller時(shí)會(huì)訪問(wèn)@RequestMapping沒(méi)有配置value的方法, 于是新建一個(gè)Controller類,也是只在方法上配置了一個(gè)沒(méi)有設(shè)置value的@RequestMapping,

這時(shí)啟動(dòng)tomcat報(bào)錯(cuò):

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

說(shuō)明猜想正確,兩個(gè)controller沖突了

后經(jīng)測(cè)試,當(dāng)@RequestMapping設(shè)置method屬性,如一個(gè)方法上設(shè)置為GET,另一個(gè)設(shè)置為POST,http請(qǐng)求的方式不同,不會(huì)沖突,會(huì)找到對(duì)應(yīng)的方法執(zhí)行。

Spring mvc中@RequestMapping 6個(gè)基本用法小結(jié)

小結(jié)下spring mvc中的@RequestMapping的用法

1、最基本的,方法級(jí)別上應(yīng)用

例如:

@RequestMapping(value="/departments")  
public String simplePattern(){ 
  System.out.println("simplePattern method was called");  
  return "someResult"; 
}  

則訪問(wèn)http://localhost/xxxx/departments的時(shí)候,會(huì)調(diào)用 simplePattern方法了

2、參數(shù)綁定

@RequestMapping(value="/departments")  
public String findDepatment(  
  @RequestParam("departmentId") String departmentId){ 
    System.out.println("Find department with ID: " + departmentId);  
    return "someResult";  
}  

形如這樣的訪問(wèn)形式:

/departments?departmentId=23就可以觸發(fā)訪問(wèn)findDepatment方法了

3、REST風(fēng)格的參數(shù)

@RequestMapping(value="/departments/{departmentId}")  
public String findDepatment(@PathVariable String departmentId){  
  System.out.println("Find department with ID: " + departmentId);  
  return "someResult";    
}  

形如REST風(fēng)格的地址訪問(wèn),比如:

/departments/23,其中用(@PathVariable接收rest風(fēng)格的參數(shù)

4、REST風(fēng)格的參數(shù)綁定形式之2

先看例子,這個(gè)有點(diǎn)象之前的:

@RequestMapping(value="/departments/{departmentId}")  
public String findDepatmentAlternative(  
  @PathVariable("departmentId") String someDepartmentId){  
    System.out.println("Find department with ID: " + someDepartmentId);  
    return "someResult";  
}  

這個(gè)有點(diǎn)不同,就是接收形如/departments/23的URL訪問(wèn),把23作為傳入的departmetnId,,但是在實(shí)際的方法findDepatmentAlternative中,使用

@PathVariable("departmentId") String someDepartmentId

將其綁定為 someDepartmentId,所以這里someDepartmentId為23

5、url中同時(shí)綁定多個(gè)id

@RequestMapping(value="/departments/{departmentId}/employees/{employeeId}")  
public String findEmployee(  
  @PathVariable String departmentId,  
  @PathVariable String employeeId){  
    System.out.println("Find employee with ID: " + employeeId +   
      " from department: " + departmentId);  
    return "someResult";  
}  

這個(gè)其實(shí)也比較好理解了。

6、支持正則表達(dá)式

@RequestMapping(value="/{textualPart:[a-z-]+}.{numericPart:[\\d]+}")  
public String regularExpression(  
  @PathVariable String textualPart,  
  @PathVariable String numericPart){  
    System.out.println("Textual part: " + textualPart +   
      ", numeric part: " + numericPart);  
    return "someResult";  
}  

比如如下的URL:/sometext.123,則輸出:

Textual part: sometext, numeric part: 123.

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

东方市| 清水河县| 赤水市| 湘潭县| 罗定市| 天气| 新郑市| 共和县| 阳原县| 文安县| 寿宁县| 晋江市| 昌邑市| 莱阳市| 鹤山市| 宿州市| 克什克腾旗| 丰台区| 顺平县| 冕宁县| 丰城市| 九台市| 黄大仙区| 拜城县| 霞浦县| 镇沅| 清丰县| 江西省| 湟源县| 东兴市| 托克托县| 沅江市| 新源县| 昌乐县| 榆中县| 文登市| 澳门| 赤壁市| 辛集市| 静安区| 仙桃市|