什么是SpringMVC?
Web组件
主要三层构成,Model,View,Controller
核心组件
DipatcherServlet : 前置控制器,负责调度其他组件的执行,是核心模块
Handler : 处理器,完成具体的业务逻辑
HandleMapping : 将请求映射到不同的Handler
HandlerInterceptor : 处理拦截器,一个接口,可以进行拦截
HandlerExecutionChain : 处理器执行链,将处理器和拦截器封装成一个 HandlerExecutionChain 对象返回给 DispatcherServlet
HandlerAdapter : 处理器适配器,Handler执行业务方法之前,进行数据验证,数据类型转换,将表单数据封装到POJO
ModelAndView : 封装了模型数据和视图信息,返回给DispatcherServlet
ViewResolver : 视图解析器,DispatcherServlet
执行流程

客户端请求到达前置控制器
前置控制器根据请求 url 去 HandlerMapping 找到对应的 Handler
Controller 接收请求后根据业务逻辑进行处理,返回ModelAndView 给前置控制器
前置控制器将 ModelAndView 交给 ViewResolver 解析视图
将解析后的 View 响应给客户端
整个Spring MVC 执行流程是一个典型的MVC模式,其中DipatcherServlet作为前置控制器处理所有请求,HandlerMapping作为控制器的选择器,负责将请求分发给对应的Controller,ViewResolver负责将ModelAndView对象解析成视图,最终呈现给客户端
常用注解
RequestMapping : 将URL请求进行映射
params : 对URL请求参数
RequestParams : 可以不需要指定参数名称,默认使用方法参数名作为参数名
如果需要处理URL路径上的参数,使用params
如果需要处理请求体中的参数,两个注解都可以使用,使用RequestParams更为简便
ModelAttribute : 将请求参数绑定到相应的模型树星尚
POJO(Plain Old Java Object)
Spring MVC 会根据请求参数名和POJO属性名进行匹配,自动为该对象填充填充属性值