本章内容:
- 映射请求到Spring控制器
- 透明地绑定表单请求
- 校验表单提交
1.Spring MVC起步
跟踪Spring MVC的请求:
搭建Spring MVC:
配置DispatcherServlet
当部署到Servlet3.0容器中的时候,容器会自动发现它,并用它来配置Servlet上下文。getServletMappings(),它会将一个或者多个路径映射到DispatcherServlet上。在本例中,它映射的是“/”,这表示它会是应用的默认Servlet。它会处理进入应用的所有请求。
为了理解其他的两个方法,我们需要理解DispatcherServlet和一个Servlet监听器(也就是ContextLoaderLister)的关系。当DispatcherServlet启动的时候,它会创建Spring应用上下文,并加载配置文件或配置类中声明的bean。在程序清单5.1的getServletConfigClasses()方法中,我们要求DispatcherServlet加载应用上下文时,使用定义在Webconfig配置类中的bean。但是在Spring Web应用中,通常还会有另外一个应用上下文,另外的应用上下文时由ContextLoaderListener创建的。我们希望DispatcherServlet加载包含Web组件的bean,如控制器、视图解析器以及处理器映射,而ContextLoaderListener要加载应用中的其他bean。这些bean通常是驱动应用后端的中间层和数据层组件。
实际上AbstractAnnotationConfigDispatcherServletInitializer会同时创建DispatcherServlet和ContextLoaderListener.getServletConfigClasses()方法返回的带有@Configuration注解的类将会用来定义DispatcherServlet应用上下文中的bean。getRootConfigClasses()方法放回的带有@Configuration注解的类将会用来配置ContextLoaderListener创建的应用上下文中的bean。
在本例中,根配置定义在RootConfig中,DispatcherServlet的配置声明在WebConfig中
启动Spring MVC
我们所能创建的最简单的Spring MVC配置就是一个带有@EnableWebMvc注解的类
搭建Spring MVC不要太纠结,在Spring Boot中Spring MVC是使用只需要导入Web的start POM和Thymeleaf包
2.编写基本的控制器
@Controller:声明控制器
@RequestMapping:声明要处理的请求
接受请求的输入:
Spring MVC允许以多种方式将客户端中的数据传送到控制器的处理器方法中:
处理查询参数: @RequestParam()获取查询参数,当控制器的处理方法有某个查询参数时,url中不带会报404
通过路劲参数接受输入: @PathVariable
处理表单:使用表单提交数据,并使用对应的对象接收数据,使用POST方法
检验表单:在控制器的处理方法上加上@Valid注解,并在对象上添加对应的验证,在处理方法参数中添加Error 参数,在验证请求后,盘点Error对象中的hasError属性是否为true,并执行对应的逻辑