什么是MVC
-
视图层(View):此层主要是与用户进行交互,显示页面。
使用:HTML,CSS,JS,JSP 等实现 -
控制层(Controller):负责接收所有的用户请求参数,判断请求参数是否合法,根据请求的类型调用 JavaBean 执行操作,并将最终的处理结果交由视图层进行显示。相当于控制器做了调度员的工作。
使用:Servlet实现 -
模型层(Model):某个功能。完成一个个独立的业务操作组件,一般都是以 JavaBean 的形式进行定义的。
使用:Java实现
学过的传统Servlet的MVC:
- 在 web.xml 配置 url 映射,指明 Servlet 所在的包。
- 在前端 jsp 页面提交表单,向后台发送请求;(View)
- 在 servlet 层进行处理,包括:获取前端参数,业务逻辑判断且调用相关方法,视图跳转;(Controller)
- 使用页面重定向/请求转发的方式将数据传给前端及逆行展示。
第一个SpringMVC:
SpringMVC执行原理讲解:
图为 SpringMV C的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。
我们假设请求的 url 为 : http://localhost:8080/SpringMVC/hello
那么这个 URL 可以拆分成三部分:
- http://localhost:8080服务器域名
- SpringMVC部署在服务器上的web站点
- hello表示控制器
通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。
- DispatcherServlet 表示前置控制器,是整个SpringMVC的控制中心。用户发出如上的 url 请求,DispatcherServlet 接收请求并拦截请求。
- HandlerMapping 为处理器映射。DispatcherServlet调用 HandlerMapping, HandlerMapping根据请求 url 查找 Handler,并且执行。
- HandlerExecution 表示具体的 Handler, 其主要作用是根据 url 查找控制器,如上 url 被查找控制器为:hello。
- HandlerExecution 将解析后的信息传递给 DispatcherServlet, 如解析控制器映射等。
- HandlerAdapter 表示处理器适配器,其按照特定的规则去执行Handler。
- Handler 让具体的 Controller 执行。 (这里就是我们要写的部分,即 Controller 层进行处理)
- Controller 将具体的执行信息返回给 HandlerAdapter, 如我们将会用到的 ModelAndView。== 我们选择性的对 Model 进行返回 ==
- HandlerAdapter 将视图逻辑名或模型传递给 DispatcherServlet。
- DispatcherServlet 调用视图解析器 (ViewResolver) 来解析HandlerAdapter 传递的逻辑视图名。== 也可以说是我们进行 view 的传递 ==
- 视图解析器将解析的逻辑视图名传给 DispatcherServlet。
- DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。
- 最终视图呈现给用户。