MVC 设计模式
MVC 框架提供了模型-视图-控制
的体系结构和可以用来开发灵活、松散耦合的 Web 应用程序的组件。MVC 模式导致了应用程序的不同方面(输入逻辑、业务逻辑和 UI 逻辑)的分离,同时提供了在这些元素之间的松散耦合。
- 视图层(View):负责格式化数据并把它们呈现给用户,包括数据展示、用户交互、数据验证、界面设计等功能。
- 控制层(Controller):负责接收并转发请求,对请求进行处理后,指定视图并将响应结果发送给客户端。
- 模型层(Model):模型对象拥有最多的处理任务,是应用程序的主体部分,它负责数据逻辑(业务规则)的处理和实现数据操作(即在数据库中存取数据)。
下面先看看两种 Web 应用程序的开发模式。即 JSP+JavaBean
和 Servlet+JSP+JavaBean
。
JSP+JavaBean
JSP+JavaBean 中 JSP 用于处理用户请求,JavaBean 用于封装和处理数据。该模式只有视图和模型,一般把控制器的功能交给视图来实现,适合业务流程比较简单的 Web 程序。
通过上图可以发现 JSP 从 HTTP Request(请求)中获得所需的数据,并进行业务逻辑的处理,然后将结果通过 HTTP Response(响应)返回给浏览器。从中可见,JSP+JavaBean 模式在一定程度上实现了 MVC,即 JSP 将控制层和视图合二为一,JavaBean 为模型层。
JSP+JavaBean 模式中 JSP 身兼数职,既要负责视图层的数据显示,又要负责业务流程的控制,结构较为混乱,并且也不是我们所希望的松耦合架构模式,所以当业务流程复杂的时候并不推荐使用。
Servlet+JSP+JavaBean
Servlet+JSP+JavaBean 中 Servlet 用于处理用户请求,JSP 用于数据显示,JavaBean 用于数据封装,适合复杂的 Web 程序。
相比 JSP+JavaBean 模式来说,Servlet+JSP+JavaBean 模式将控制层单独划分出来负责业务流程的控制,接收请求,创建所需的 JavaBean 实例,并将处理后的数据返回视图层(JSP)进行界面数据展示。
Servlet+JSP+JavaBean 模式的结构清晰,是一个松耦合架构模式,一般情况下,建议使用该模式。
Spring MVC
Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet。在 Spring MVC 框架中,Controller 替换 Servlet 来担负控制器的职责,用于接收请求,调用相应的 Model 进行处理,处理器完成业务处理后返回处理结果。Controller 调用相应的 View 并对处理结果进行视图渲染,最终客户端得到响应信息。
Spring MVC 优点
- 分离角色:Spring MVC 分离每个角色,其中可以由专门的对象来实现模型对象,控制器,命令对象,视图解析器,DispatcherServlet,验证器等。
- 轻量:它使用轻巧的 Servlet 容器来开发和部署您的应用程序。
- 强大的配置:它为框架和应用程序类提供了可靠的配置,其中包括跨上下文的轻松引用,例如从 Web 控制器到业务对象和验证器。
- 快速开发:Spring MVC 促进了快速并行的开发。
- 可重复使用的业务代码:无需创建新对象,它使我们可以使用现有业务对象。
- 易于测试:在 Spring 中,通常我们创建 JavaBeans 类,使您可以使用 setter 方法注入测试数据。
- 灵活的映射:它提供了可轻松重定向页面的特定注释。
Spring MVC 执行流程
Spring MVC 的执行流程如下:
- 用户发起一个 HTTP Request 请求,该请求会被提交到
DispatcherServlet
(前端控制器); - 由 DispatcherServlet 请求一个或多个
HandlerMapping
(处理器映射器); - 返回一个执行链(
HandlerExecutionChain
); - DispatcherServlet 将执行链返回的 Handler 信息发送给
HandlerAdapter
(处理器适配器); - HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(常称为
Controller
); - Handler 执行完毕后会返回给 HandlerAdapter 一个
ModelAndView
对象(Spring MVC 的底层对象,包括 Model 数据模型和 View 视图信息); - HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet ;
- DispatcherServlet 接收到 ModelAndView 对象后,会请求
ViewResolver
(视图解析器)对视图进行解析; - ViewResolver 根据
View
信息匹配到相应的视图结果,并返回给 DispatcherServlet; - DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将
Model
中的模型数据填充到 View 视图中的 Request 域,生成最终的 View(视图); - 视图负责将结果显示到浏览器(客户端)。
搭建 Spring MVC 程序
搭建步骤大致如下:
- 创建 Web 应用并引入 JAR 包;
- Spring MVC 配置:在 web.xml 中配置 Servlet,创建 Spring MVC 的配置文件;
- 创建 Controller(处理请求的控制器);
- 创建 View(本教程使用 JSP 作为视图);
- 部署运行;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/78363.html