"这篇文档介绍了如何在Spring MVC中使用注解进行数据校验,并提到了Spring MVC 3.0的新特性及其框架结构。通过在控制器方法的参数上使用`@Valid`注解,可以触发JSR 303定义的校验规则。文档还概述了Spring MVC的基本组件和工作流程,包括DispatcherServlet、HandlerMapping、HandlerAdapter以及视图解析等。"
在Spring MVC中,注解驱动的校验是一种高效且灵活的数据验证方式。JSR 303(JavaBeans Validation)提供了一套标准的注解,用于在对象属性上定义验证规则。例如,`@NotNull`表示某个字段不能为空,`@Size(max=10)`表示字段长度不能超过10。当控制器方法的参数前加上`@Valid`时,Spring MVC会在处理请求时自动执行这些验证规则。
如示例代码所示,`UserController`类中的`handle91`方法处理了一个`/user/handle91`的请求。方法参数`User user`前的`@Valid`注解指示Spring MVC在将请求参数绑定到`User`对象后进行校验。`BindingResult bindingResult`参数用于接收校验结果。如果`bindingResult`中存在错误,表示校验失败,那么方法将返回注册页面("/user/register3"),否则返回用户展示页面("/user/showUser")。
Spring MVC框架的核心组件包括DispatcherServlet,它是整个流程的调度者,负责接收请求并分发给合适的处理器。`@Controller`和`@RequestMapping`注解用于标记控制器类和处理方法,它们定义了控制器所处理的URL映射。`@RequestMapping`的value属性指定了处理方法对应的具体URL路径。
Spring MVC 3.0引入了许多新特性,包括对RESTful风格URL的支持,更多的注解驱动功能,如`@RequestParam`、`@PathVariable`等,以及与数据转换、格式化和验证框架的无缝集成。HttpMessageConverter接口允许自定义HTTP输入输出的转换。此外,框架对静态资源的处理也得到了优化,控制器方法的签名更加灵活,可以完全独立于Servlet API。
Spring MVC框架结构包括以下几个主要部分:
1. DispatcherServlet:前端控制器,负责接收请求并分发给相应的处理器。
2. HandlerMapping:处理器映射,将URL映射到处理器(Controller)。
3. HandlerAdapter:处理器适配器,封装了不同类型的处理器(Controller)的执行逻辑。
4. Handler:实际的业务逻辑处理类,通常由`@Controller`注解的类实现。
5. ModelAndView:包含了模型数据和视图信息,是控制器方法的返回值。
6. ViewResolver:视图解析器,负责将逻辑视图名解析为实际视图。
7. Model:模型数据,用于在控制器和视图之间传递数据。
8. View:视图,可以是JSP、XML、PDF等形式,用于呈现结果。
Spring MVC提供了一个强大且灵活的MVC框架,通过注解驱动的校验机制,可以方便地实现数据验证,保证应用程序的数据质量。