Spring MVC 之诠注试控制器
Spring MVC 之注解试控制器
发展历程
1. Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类。已经不建议使用了。
2. pring2.5引入注解式处理器支持,通过@Controller 和 @RequestMapping注解定义我们的处理器类。
并且提供了一组强大的注解:
@Controller:用于标识是处理器类;
@RequestMapping:请求到处理器功能方法的映射规则;
@RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;
@ModelAttribute:请求参数到命令对象的绑定;
@SessionAttributes:用于声明session级别存储的属性,放置在处理器类上,通常列出
模型属性(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session中;
@InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型;
3. Spring3.0引入RESTful架构风格支持(通过@PathVariable注解和一些其他特性支持),且又引入了更多的注解支持:
@CookieValue:cookie数据到处理器功能处理方法的方法参数上的绑定;
@RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定;
@RequestBody:请求的body体的绑定(通过HttpMessageConverter进行类型转换);
@ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);
@ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因;
@ExceptionHandler:注解式声明异常处理器;
@PathVariable:请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful架构风格的URI;
4. Spring3.1使用新的HandlerMapping 和 HandlerAdapter来支持@Contoller和@RequestMapping注解处理器。
新的@Contoller和@RequestMapping注解支持类:处理器映射RequestMappingHandlerMapping和处理器适配器RequestMappingHandlerAdapter组合来代替Spring2.5开始的处理器映射DefaultAnnotationHandlerMapping和处理器适配器AnnotationMethodHandlerAdapter,提供更多的扩展点。
请求的映射分为如下几种:
1. URL路径映射:使用URL映射请求到处理器的功能处理方法;
2. 请求方法映射限定:如限定功能处理方法只处理GET请求;
3. 请求参数映射限定:如限定只处理包含“abc”请求参数的请求;
4. 请求头映射限定:如限定只处理“Accept=application/json”的请求。
记住http请求的六个部分
1. 请求方法,如GET或POST,表示提交的方式;
2. URL,请求的地址信息;
3. 协议及版本;
4. 请求头信息(包括Cookie信息);
5. 回车换行(CRLF);
6. 请求内容区(即请求的内容或数据),如表单提交时的参数数据、URL请求参数(?abc=123 ?后边的)等。