MVC其实是Model、View和Controller的缩写,他分别代表着Web应用程序的三个不同的功能作用:
- Model(模型):用来存储数据和处理用户请求的业务逻辑。
- View(视图):向控制器提交数据,展示模型提供的数据。
- Controller(控制器):根据视图提交的请求来判断把请求和数据交给哪个模型处理以及判断处理后的结果信息交给哪个视图来更新展示。
1. 基于Servlet的MVC模式的实现
- 模型:Bean对象,用来做实体模型(存储数据,由JavaBean类创建)和业务模型(处理业务逻辑,由Java类创建)。
- 视图:JSP页面,给控制器提交数据和展示模型提供的数据信息。JSP页面主要使用HTML标记和JavaBean标记来显示数据。
- 控制器:Servlet对象,根据视图提交的请求来进行控制,也就是把请求转发给处理业务逻辑的JavaBean,并把处理的结果存放到实体模型JavaBean中,传送给视图用来展示。
流程如下图所示:
2. Spring MVC工作流程
- 客户端发送HTTP请求到DispatcherServlet.所有请求都经过这个servlet。
- 由DispatchServlet控制器寻找一个/多个控制器HandlerMapping(通过请求方法、url查找Controller)。
- 处理器映射器(HandlerMapping)就可以找到具体的处理器,生成处理器对象及处理器拦截器(如果存在的话)一同返回给DispatcherServlet。
- DispatcherServlet调用HandlerAdapter处理器适配器。
- HandlerAdapter处理器适配器通过适配调用到具体的处理器Controller。
- Controller调用业务逻辑处理后返回ModelAndView(返回页面时的绑定类型)。
- HandlerAdapter适配器再将Controller执行的结果ModelAndView返回给DispatcherServlet。
- DispatcherServlet 将ModelAndView传给ViewReslover视图解析器,解析后返回具体的View。
- DispatcherServlet再把模型数据填入到视图中。
- 视图最终负责把结果显示到客户端。