SpringMVC_配置和注解--跟海涛学SpringMVC(和自己在项目中的实际使用的对比)

Spring2.5 之前,我们都是通过实现Controller 接口或其实现来定义我们的处理器类,就像前面介绍的

这里介绍的是Spring3.1的新特性,虽然现在我用的是spring4.2.6,不过基本的用法差距不大,也可以参考一下

 

@Controller:用于标识是处理器类;

@RequestMapping:请求到处理器功能方法的映射规则;

@RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;

@ModelAttribute:请求参数到命令对象的绑定;

@SessionAttributes:用于声明session 级别存储的属性,放置在处理器类上,通常列出模型属性(如

@ModelAttribute)对应的名称,则这些属性会透明的保存到session 中;

@InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类

 

@CookieValue:cookie 数据到处理器功能处理方法的方法参数上的绑定;

@RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定;

@RequestBody:请求的body体的绑定(通过HttpMessageConverter 进行类型转换);

@ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);

@ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因;

@ExceptionHandler:注解式声明异常处理器;

@PathVariable:请求URI 中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful 架构风

格的URI;

 

<mvc:annotation-driven>:

自动注册基于注解风格的处理器需要的DefaultAnnotationHandlerMapping、AnnotationMethodHandlerAdapter

支持 Spring3的ConversionService 自动注册

支持 JSR-303验证框架的自动探测并注册(只需把JSR-303实现放置到classpath)

自动注册相应的HttpMessageConverter(用于支持@RequestBody 和 @ResponseBody)(如XML输入输出转换器

(只需将JAXP实现放置到classpath)、JSON 输入输出转换器(只需将Jackson 实现放置到classpath))等。

<mvc:interceptors>:注册自定义的处理器拦截器;

<mvc:view-controller>:和ParameterizableViewController 类似,收到相应请求后直接选择相应的视图;

<mvc:resources>:逻辑静态资源路径到物理静态资源路径的支持;

<mvc:default-servlet-handler>当在web.xml 中DispatcherServlet使用<url-pattern>/</url-pattern> 映射时,能映射静

态资源(当Spring Web MVC框架没有处理请求对应的控制器时(如一些静态资源),转交给默认的Servlet来响应静态

文件,否则报404 找不到资源错误,)。

 

Flash 属性和 RedirectAttribute:通过FlashMap 存储一个请求的输出,当进入另一个请求时作为该请求的输入,

典型场景如重定向(POST-REDIRECT-GET 模式,1、POST 时将下一次需要的数据放在FlashMap;2、重定向;3、通过

GET 访问重定向的地址,此时FlashMap 会把1 放到FlashMap 的数据取出放到请求中,并从FlashMap 中删除;从而支

持在两次请求之间保存数据并防止了重复表单提交)。

Spring Web MVC 提供FlashMapManager 用于管理FlashMap,默认使用SessionFlashMapManager,即数据默认存储

在session

 

@Validated:JSR-303 的javax.validation.Valid 一种变体(非JSR-303 规范定义的,而是Spring 自定义的),用于

提供对Spring 的验证器(org.springframework.validation.Validator)支持,需要Hibernate Validator 4.2及更

高版本支持;

@RequestPart : 提供对“ multipart/form-data ” 请求的全面支持, 支持Servlet 3.0 文件上传

(javax.servlet.http.Part)、支持内容的HttpMessageConverter(即根据请求头的Content-Type,来判断内容区数

据是什么类型,如JSON、XML,能自动转换为命令对象),比@RequestParam 更强大(只能对请求参数数据绑定,key-alue

格式),而@RequestPart 支持如JSON、XML 内容区数据的绑定;详见本章的第°¡°¡°¡节

posted @ 2017-01-22 13:37  lakeslove  阅读(184)  评论(0编辑  收藏  举报