@requestMapping里面的注解包含的参数如图:
requestMapping是一个用来处理请求地址映射的注释,可用在类或者方法上。用在类上,表示类中的所有响应请求的方法都是以该地址作为父路径,提供初步的请求信息,方法定义处的@RequestMapping 提供进一步的细分映射信息。
- 若类定义处未标注@requestMapping,则方法处标记的URL为web应用的根目录;
- 若类定义处标注@requestMapping,则URL为类上+方法上的映射路径组合。
requestMapping有8个属性,下面我们进行说明:
- value/path:指定请求的实际地址,指定地址可以是url template模式。
- method:指定请求的method类型,如GET,POST等。
- params:指定request中必须包含某些指定的参数值,方法才进行处理。
- headers:指定request中必须包含某些指定的header值,方法才进行处理。
- consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
- produces:指定返回的内容类型。仅当请求头中的(Accpet)类型中,包含指定类型,才返回
1.value/path
- controller
@RequestMapping("/webb")
public class DemoController {
@RequestMapping("/demo1")
public ModelAndView handle01(){
ModelAndView mv=new ModelAndView();
mv.addObject("msg","ModelAndView01");
mv.setViewName("handle01");
return mv;
}
- jsp页面
<a href="/webb/demo1.htm">demo1</a>
- controller
@PathVariable:路径变量绑定到参数
@RequestMapping(value="/demo3/{id}.htm")
public ModelAndView handle03(@PathVariable("id") int id){
ModelAndView mv=new ModelAndView();
mv.addObject("msg","ModelAndView03"+id);
mv.setViewName("handle01");
return mv;
}
- jsp页面
<a href="/webb/demo3/22.htm">demo3</a>
2.method
- controller
@RequestMapping(value="/demo2.htm",method={RequestMethod.GET,RequestMethod.POST})
public ModelAndView handle02(){
ModelAndView mv=new ModelAndView();
mv.addObject("msg","ModelAndView02");
mv.setViewName("handle01");
return mv;
}
- jsp页面
<a href="/webb/demo2.htm">demo2</a>
3.params
- controller
@RequestMapping(value="/demo4_1")
public String handle04_1(Model model, @RequestParam("name") String name, @RequestParam("age")int age){
model.addAttribute("name",name);
model.addAttribute("age",age);
return "handle01";
}
- jsp页面
<a href="/webb/demo4_1.htm?name=lissi&age=23">demo4_1</a>
- controller
@RequestMapping(value="/demo4_2",params={"name","age"})
public String handle04_2(){
return "handle01";
}
- jsp页面
<a href="/webb/demo4_2.htm?name=lissi&age=23">demo4_2</a>
4.consumes
- controller
@RequestMapping(value="/demo5",method=RequestMethod.POST,consumes = "application/x-www-form-urlencoded")
public String handle05(){
return "handle01";
}
- jsp页面
<form action="/webb/demo5.htm" method="post">
用户名:<input type="text" name="username"/>
<input type="submit" value="提交"/>
</form>
这里的Content-Type对应的值要是写错,如application/json,会出现以下异常
5.produces
- controller
@ResponseBody
@RequestMapping(value="/demo6",method=RequestMethod.GET,produces = "text/html")
public String handle06(Model model, User user){
model.addAttribute("user",user);
return "{name:'lisi',age:22,sex:'f'}";
}
- jsp页面
<a href="/webb/demo6.htm">demo6</a>
6.headers
- controller
@RequestMapping(value="/demo7",method=RequestMethod.GET,headers = {"Accept-Encoding=gzip, deflate, br"})
//@RequestMapping(value="/demo7",method=RequestMethod.GET,headers = "Accept-Encoding")
public String handle07(){
return "handle01";
}
- jsp页面
<a href="/webb/demo7.htm">demo7</a>
注意:headers将“:”改为“=”