p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #941100 }
Spring2.5 之前,我们都是通过实现Controller 接口或其实现来定义我们的处理器类,就像前面介绍的
这里介绍的是Spring3.1的新特性,虽然现在我用的是spring4.2.6,不过基本的用法差距不大,也可以参考一下
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #ff2600 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.5px Helvetica }
span.s1 { font: 10.5px Helvetica; color: #000000 }
span.s2 { font: 12.0px Helvetica; color: #ff2600 }
@Controller:用于标识是处理器类;
@RequestMapping:请求到处理器功能方法的映射规则;
@RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;
@ModelAttribute:请求参数到命令对象的绑定;
@SessionAttributes:用于声明session 级别存储的属性,放置在处理器类上,通常列出模型属性(如
@ModelAttribute)对应的名称,则这些属性会透明的保存到session 中;
@InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.5px Helvetica }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #ff2600 }
span.s1 { font: 12.0px Helvetica; color: #ff2600 }
span.s2 { font: 10.5px Helvetica; color: #000000 }
@CookieValue:cookie 数据到处理器功能处理方法的方法参数上的绑定;
@RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定;
@RequestBody:请求的body体的绑定(通过HttpMessageConverter 进行类型转换);
@ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);
@ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因;
@ExceptionHandler:注解式声明异常处理器;
@PathVariable:请求URI 中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful 架构风
格的URI;
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.5px Helvetica; color: #ff40ff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.5px Helvetica }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.5px Times }
span.s1 { color: #000000 }
span.s2 { color: #ff40ff }
span.s3 { font: 10.5px Times; color: #ff40ff }
span.s4 { font: 10.5px Helvetica; color: #ff40ff }
span.s5 { font: 10.5px Helvetica }
span.s6 { font: 10.5px Times }
<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 找不到资源错误,)。
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.5px Helvetica }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Courier }
span.s1 { color: #ff40ff }
span.s2 { font: 10.0px Courier }
span.s3 { font: 10.0px Helvetica }
span.s4 { font: 10.5px Helvetica }
Flash 属性和 RedirectAttribute:通过FlashMap 存储一个请求的输出,当进入另一个请求时作为该请求的输入,
典型场景如重定向(POST-REDIRECT-GET 模式,1、POST 时将下一次需要的数据放在FlashMap;2、重定向;3、通过
GET 访问重定向的地址,此时FlashMap 会把1 放到FlashMap 的数据取出放到请求中,并从FlashMap 中删除;从而支
持在两次请求之间保存数据并防止了重复表单提交)。
Spring Web MVC 提供FlashMapManager 用于管理FlashMap,默认使用SessionFlashMapManager,即数据默认存储
在session中。
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.5px Helvetica }
span.s1 { color: #ff40ff }
@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 内容区数据的绑定;详见本章的第°?°?°?节