Spring实战读书笔记
第五章:构建Spring Web应用程序
跟踪Spring MVC的请求
-
Spring MVC的所有请求都会通过一个前端控制器DispatcherServlet,它的任务就是将请求发送给Controller
-
DispatcherServlet会查询一个或多个处理器映射(handler mapping)来确定请求的下一站在哪。一旦选择了合适的控制器DispatcherServlet就会将请求发给选中的控制器
-
控制器在完成逻辑处理后,通常会产生一些数据来返回给用户,控制器所做的最后一件事就是将数据进行打包,并标示出用于渲染出的视图名称,最后将数据连同视图名称发送给DispatcherServlet。
-
DispatcherServlet会使用视图解析器(view resolver)来将逻辑视图匹配为一个特定的视图实现。
-
最后就是DispatcherServlet把数据交付给视图,视图将数据进行渲染输出,并响应给浏览器。
搭建Spring MVC
-
配置DispatcherServlet:安照传统的方式我们可能会将Servlet配置在web.xml文件内,但现在我们可以通过继承AbstractAnnotationConfigDispatcherServletInitializer类,重写getRootConfigClasses(Spring配置类)、getServletConfigClasses(Spring MVC配置类)、getServletMappings方法即可。
-
启用Spring MVC:在XML文件内使用<mvc:annotation-driven>元素启用注解驱动的MVC,或在Java配置类上加@EnableWebMvc注解。
-
配置Spring MVC视图解析器:一般来说,要跟据我们使用的前端引擎配置相应的视图解析器,使用jsp的话就配置InternalResourceViewResolver。
客户端的请求参数类型
-
查询参数:通过@RequestParam注解接收。
-
表单参数:我们可以在前端将表单内各标签的name设置的与POJO类的各属性一致,这样我们在Controller类中可以通过POJO类对象接收表单传过来的参数。
-
路径变量:@PathVariable注解接收。
表单的校验
-
Spring提供了对Java校验API(Java Validation API,又称JSR-303)的支持。我们只需要在POJO类的属性上使用Java校验API提供的校验注解即可。
-
前面已经说过通过POJO类对象接收表单数据,所以我们在使用了Java校验API的注解后,还要在接收表单数据的POJO对象参数前面加上@Valid注解。@Valid注解会告诉Spring,需要确保这个对象满足校验限制。
-
校验出错后我们还要得到错误信息,我们使用一个Errors类的对象接收错误信息,不过Errors对象的参数必须要紧跟在使用了@Valid注解参数的后面。