Spring MVC http请求地址映射(三)

时间:2021-11-18 06:07:55

Spring MVC框架通过扫描将带有@Controller的类中的@RequestMapping的方法进行映射,然后调用映射的方法处理请求,这个分发过程默认是由DispaterServlet处理的。

http请求映射原理

  Spring MVC http请求地址映射(三)

Spring MVC进行映射的依据

Spring MVC http请求地址映射(三)

通过URL限定:URL表达式

Spring MVC的地址映射支持标准的URL,同时默认支持是ant风格的URL。列如:

URL 说明
/account/*/create 匹配/account/aaa/create、/account/bbb/create等URL
/account/**/create 匹配/account/create、/account/aaa/bbb/create等URL
/account/create?? 匹配/account/createaa、/account/createbb等URL
/account/{accountId} 匹配account/123、account/abc等URL
/account/**/{userId} 匹配account/aaa/bbb/123、account/aaa/456等URL
account/{accountId}/customer/{customerId}/detail 匹配account/1234/customer/0000/detail等的URL

通过URL限定:绑定路径中{xxx}的值

  

@RequestMapping("/{accountId}")
    public ModelAndView showDetail(@PathVariable("accountId")String accountId){
        ModelAndView mav= new ModelAndView();
        mav.setViewName("user/showDetail");
        mav.addObject("user", userService.getUserById(userId));
    return mav;
}

URL中的{xxx}占位符可以通过@PathVariable(“xxx”)绑定到操作方法的入参中。

在3.X中如果@PathVariable不指定参数名,只有在编译时打开debug开关(javac -debug=no)时才可行!!(不建议),貌似4.x没有这个问题了。