1.@RequestMapping注释简介
开发者需要在控制器内部为每一个请求动作开发相应的处理方法。org.springframework.web.bind.annotation.RequestMapping注释指示Spring用哪一个类或方法处理请求动作,该注释可用于类或方法。
@RequestMapping注释可以用来注释一个控制器类,在这种情况下,所有方法都将映射为相对于类级别的请求,表示该控制器处理的所有请求都被映射到value属性所指示的路径下。
使用@RequestMapping注释可指定下表所示的属性
package masterSpringMvc.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.ui.Model; @Controller public class HelloController { @RequestMapping("/") public String hello(Model model) { model.addAttribute("message","123456"); return "hello"; } @RequestMapping("/hello_page") public String helloPage(Model model) { return "helloPage"; } }
属性 | 类型 | 必填 | 说明 |
value | String | 否 | 用于将指定请求的实际地址映射到方法上 |
name | String | 否 | 给映射地址指定一个别名 |
method | RequestMethod | 否 | 映射指定请求的方法类型,包括GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE,TRACE |
consumes | String | 否 | 指定处理请求的提交内容类型(content-type),例如application、json |
produces | String | 否 | 指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型 |
params | String | 否 | 指定request中必须包含某些指定的header值时,才能让该方法处理请求 |
headers | String | 否 | 指定request中必须包含某些指定的header值,才能让该方法处理请求 |
path | String | 否 | 在Servlet环境中只有:uri路径映射(/myPath.do)。也支持如ant的基于路径模式,(/myPath/*,)。在方法层面上,支持相对路径,如(edit.do) |
(1)value属性
@RequestMapping是一个用来处理请求地址映射的注释,可以使用@RequestMapping注释一个方法或类
@RequestMapping(value="/“)
该示例使用@RequestMapping注释的value属性将URL映射到方法上。
由于value属性是@RequestMapping注释的默认属性,因此,如果只有唯一的属性,则可以省略属性名,即如下两个注释含义相同
@RequestMapping("/“)
@RequestMapping(value="/“)
但如果有超过一个属性,就必须写上value属性名称。
(2)method属性
该属性用来指示该方法仅处理哪些HTTP请求方式
@RequestMapping(value="/hello_page",method=RequestMethod.POST)
(3)consumes属性
该属性指定处理请求的提交内容类型(Content-Type)
@RequestMapping(value="/hello_page",method=RequestMethod.POST,consumes="application/json”)
(4)produces属性
该属性指定返回的内容类型,返回内容类型必须是request请求头(Accept)中所包含的类型。
@RequestMapping(value="/hello_page",method=RequestMethod.POST,consumes="application/json",produces="application/json”)
(5)params属性
该属性指定request中必须包含某些参数时,才让该方法处理:
@RequestMapping(value="/hello_page",method=RequestMethod.POST,consumes="application/json",produces="application/json",params="myParam=myValue”)
(6)header属性
该属性指定request中必须包含某些指定的header值,才能让该方法处理请求。
@RequestMapping(value="/hello_page",method=RequestMethod.POST,consumes="application/json",produces="application/json",params="myParam=myValue",headers="Referer=http://www.fkit.org")