1.@RequestMapping:是用来映射请求的,该注解可以用在类或者方法上,如果用在类上,表示所有请求的父路径。
2.@PathVariable:用来映射请求url绑定的占位符,通过@PathVariable可以将url中占位符的参数绑定到controller处理方法的入参中。类似这种请求参数“springmvc/testRest/1,
1 @RequestMapping(value="/testRest/{id}", method=RequestMethod.PUT) 2 3 public String testRestPut(@PathVariable(value="id") Integer id){}
3.@RequestParam:“springmvc/testRequestParam?username=jackie&age=12”这种参数的获取方式
1 @RequestMapping(value="/testRequestParam") 2 3 public String testRequestParam(@RequestParam(value="username") String username, @RequestParam(value="age", required=false, defaultValue="0") int age){ 4 System.out.println("testRequestParam" + " username:" + username + " age:" +age); 5 return SUCCESS; 6 }
4.@CookieValue:映射的是一个cookie值,
获取方式
1 @RequestMapping(value="/testCookieValue") 2 3 public String testCookieValue(@CookieValue("JSESSIONID") String cookieValue){ 4 System.out.println("testCookieValue: " + cookieValue); 5 return SUCCESS; 6 }
5.@RequestHeader:
1 @RequestMapping(value="/testRequestHeader") 2 public String testRequestHeader(@RequestHeader(value="Accept-Language") String language){ 3 System.out.println("testRequestHeader Accept-Languge:" + language); 4 return SUCCESS; 5 }
我们知道一个请求如get请求或post都有请求头和响应头,这里我们想获取的是请求头中“Accept-Language”的具体信息,所以就用上了@RequestHeader注解来获取。
6. 请求参数为POJO
1 @RequestMapping(value="/testPojo") 2 public String testPojo(User user){ 3 System.out.println("testPojo: " + user); 4 return SUCCESS; 5 }
7.Spring MVC处理http请求的大致过程:
一旦HTTP请求到来,DispatcherServlet负责将请求分发。
在DispatcherServlet将请求分发给Spring Controller之前,需要借助Spring提供的HandlerMapping定位到具体的controller。
Spring controller处理请求, Controller处理完客户请求,则返回ModelAndView对象给DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和视图(View)。
ModelAndView返回的视图只是逻辑名,则需要借助Spring提供的视图解析器(ViewResoler)在Web应用中查找View对象,从而将响应结果渲染给客户。
8.ModelAndView
1 @RequestMapping(value="/testModelAndView") 2 public ModelAndView testModelAndView(){ 3 String viewname = SUCCESS; 4 ModelAndView modelAndView = new ModelAndView(viewname); 5 modelAndView.addObject("time", new Date()); 6 return modelAndView; 7 }