文章目录
1 SpringMVC开发流程
- 用户发送请求, 前端控制器DispatcherServlet对请求进行拦截;
2.1 前端控制器DispatcherServlet收到请求后调用处理器映射器HandlerMapping,为了更加灵活和增强功能, SpringMVC 还会给处理器加入拦截器,所以还可以在处理器执行前后加入自己的代码,这样就构成了一个处理器的执行链(HandlerExecutionChain );
2.2 处理器映射器HandlerMapping根据请求的url找到具体的处理器,生成处理器对象Handler及处理器拦截器HandlerIntercepter(如果有则生成)一并返回给前端控制器DispatcherServlet。
- 前端控制器DispatcherServlet通过处理器适配器HandlerAdapter调用处理器Controller;
- controller向前端控制器DispatcherServlet返回ModelAndView;
5.1 前端控制器DispatcherServlet将ModelAnView传给视图解析器ViewResolver;
5.2 视图解析器ViewResolver解析后返回具体的视图View;
- 前端控制器DispatcherServlet对视图View进行渲染视图,返回给用户。
2 核心组件
- DisPatcherServlet 前端控制器
SpringMVC的核心,用户在访问web系统,发起请求,实际就是向后端发送一个url地址。这个url地址首先会被DisPatcherServlet拦截,由它来调用其他组件来配合工作的完成。所有的组件都由 DisPatcherServlet来进行调度,而不是所有组件形成一条执行链,大大降低了组件之间的耦合性。 - HandlerMapping 处理器映射器
记录url与处理器的映射,方式有注解、XML配置等。如用户的请求url为/user/findAll,HandlerMapping 会找到@RequestMapping("/user/findAll“”)的方法,并把这个结果返回给前端控制器。 - HandlerAdapter 处理器适配器
前端控制器会根据HandlerMapping 传过来的controller与已经注册好了的HandlerAdapter进行一一匹配,看哪一种HandlerAdapter是支持该controller类型的,如果找到了其中一种HandlerAdapter是支持传过来的controller类型,那么该HandlerAdapter会调用自己的handle方法,并执行该Handler。 - Handler 处理器
后端控制器(就是Controller层所写的业务代码),对用户的请求进行处理 。 - ViewResolver 视图解析器
ViewResolver负责解析view视图,并进行渲染(数据填充),将处理结果通过页面展示给用户看。 - View 视图
View是一个接口,实现类支持不同的View类型(jsp、freemarker、velocity) 。一般情况下需要通过页面标签或者页面模板技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。