一、什么是MVC
MVC是 model、view、和controller的缩写,分别代表web应用程序中的三种职责:
model-模型:用于存储数据以及能处理用户请求的业务逻辑
view-视图:向控制器提交数据,显示模型中的数据
controller-控制器:根据视图提出的请求,判断将请求和数据交给哪个模型处理,处理后的有关结果交给哪个视图更新显示
二、SpringMVC模型
SpringMVC其实就一种基于Servlet的MVC模型:
模型:一个或多个java bean对象,用于存储数据和业务逻辑。
视图:一个和多个JSP页面,向控制器提交数据和为模型提供数据显示。JSP页面主要使用HTML标记和JavaBean标记来显示数据。
控制器:一个或多个Servlet对象,根据视图提交的请求进行控制,即将请求转发给业务逻辑的java bean,并将处理记过存放到实体模型java bean中,输出给视图显示。
三、SpringMVC的工作原理
1、 用户客户端发送请求至前端控制器 DispatcherServlet。
2、 DispatcherServlet收到请求调用 HandlerMapping(处理器映射器)。
3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成),一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter(处理器适配器)。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView。
7、 HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(将模型数据填充至视图中)。
11、 DispatcherServlet响应用户客户端。
ps:
handler跟controller有啥区别?
controller 是 handler,但是handler不是controller。
handler接管所有的DispatchServlet给与的处理信息,包括静态请求(http://……/style.css),并且可以改变请求所指向的资源参数如 String target参数。
controller只做三件事接收参数、调用业务、使用业务结果渲染页面。