@RequestMapping原码

作用:用于建立请求URL和处理请求方法之间的对应关系。
出现位置:
类上:请求URL的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的URL可以按照模块化管理:
例如:一个模块 /test01/add /test01/update /test01/delete
另一个模块 /test02/add /test02/add /test02/add
红色的部分就是把RequsetMappding写在类上,使我们的URL更加精细。
方法上:请求URL的第二级访问目录。
属性:
value:用于指定请求的URL。它和path属性的作用是一样的。 可以有多个,表示映射同一个方法
method:用于指定请求的方式。
params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样。
例如:params = {"accountName"},表示请求参数必须有accountName params = {"moeny!100"},表示请求参数中money不能是100。
headers:用于指定限制请求消息头的条件。
使用示例:
多个请求匹配一个处理器方法
@RequestMapping({"doSome.do","doSome2.do"})public ModelAndView doSome(){}

出现在类上,以后请求这些方法时都需要加上/test01,表示这个模块的value
@Controller()@RequestMapping("/test01")public class MyController2 {@RequestMapping({"doSome.do","doSome2.do"})public ModelAndView doSome(){}

对请求提交方式的定义method
Method 属性的取值为 RequestMethod 枚举常量。常用的为 RequestMethod.GET 与RequestMethod.POST ,分别表示提交方式的匹配规则为 GET 与 POST 提交。
@RequestMapping(value = "doOther.do",method = RequestMethod.POST)public ModelAndView doOther(){}
以上处理器方法只能处理 POST 方式提交的请求。
也就是说,只要指定了处理器方法匹配的请求提交方式为 POST ,则相当于指定了请求发送的方式 要么使用表单请求,要么使用 AJAX 请求。其它请求方式被禁用。
当然,若不指定 method 属性,则无论是 GET 还是 POST 提交方式,均可匹配。即对于请求的提交方式无要求。

对请求中携带参数的定义params
@RequestMapping中 params 属性中定义了请求中必须携带的参数的要求。以下是几种情况的说明。
@RequestMapping(value="/xxx .do", params={ "name" ,"age"}) :要求请求中必须携带请求参数 name 与 age
@RequestMapping(value="/xxx .do", params={params={"!name" ,"age "}) :要求请求中必须携带请求参数 age ,但必须不能携带参数 name
@RequestMapping(value="/xxx .do", params= {"name=zs", "age =23 "}) :要求请求中必须携带请求参数 name ,且其值必须为 zs ;必须携带参数 age ,其值必须为 23
@RequestMapping(value = "doOther.do",params= {"name=zs", "age=23"})public ModelAndView doOther(){}

可以设置请求头header
@RequestMapping(value = "doOther.do",headers = "Accept")public ModelAndView doOther(){}
请求头中必须包含Accept

喜欢转发
明天见





