SpringMVC结构如下:
流程:
- 客户端发起的请求,提交到前端控制器DispatcherServlet,由它来调用系统其他模块来处理请求;调用的依据是请求的信息(包括URL、HTTP协议方法、请求头、请求参数、Cookie等)以及HandlerMapping的配置找到处理该请求的Handler。
- 通过处理器适配器HandlerAdapter(它用统一的接口对各种Handler中的方法进行调用)对该Handler进行处理。最后,得到一个ModelAndView对象给DispatcherServlet,ModelAndView包含了数据模型以及相应的视图的信息。
- DispatcherServlet借助视图解析器ViewResolver完成从逻辑视图到真实视图对象的解析工作,最后,得到一个View视图对象。
- DispatcherServlet会利用得到的View视图对象对模型数据进行视图渲染,并将数据填充到request域。
- 最后客户端得到响应,结果可能是一个HTML页面、XML、JSON字符串,还可以是一张图片或者一个PDF文件。
重要模块:
- 前端控制器 (DispatcherServlet): DispatcherServlet减少了其他组件之间的耦合度,这就是一个中心点,由它来调用整个系统中的其他模块,最后也还是由它来将处理结果响应给客户端。
- 处理器映射器 (HandlerMapping): 根据请求的 url 查找 Handler。
- 处理器 (Handler):按照HandlerAdapter要求的规则编写Handler。
- 处理器适配器(HandlerAdapter) :执行Handler
- 视图解析器 (ViewResolver):进行视图解析,用真实数据将逻辑视图解析成真实的视图 (View)。
- 视图 (View):View 是一个接口实现类支持不同的 View 类型(jsp,pdf等等)