首页 > 其他分享 >SpringMVC

SpringMVC

时间:2023-10-01 20:35:23浏览次数:36  
标签:控制器 SpringMVC MVC 视图 Handler 前端 View

什么是MVC模式?

在了解SpringMVC的工作原理之前,我们先来复习一下什么是MVC的设计模式。方便后面更能理解工作原理的架构。

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码。

举个例子,我们原本的JSP是将视图和业务写在了一起,后端和前端都要在一个页面上面进行代码的编写,实在是不方便。而使用了MVC的模式之后,我们将视图和业务分割开来了,实现了前后端分离。

MVC主要的是由三部分组成:

  • Model(模型)表示应用程序核心(比如数据库记录列表)。是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
  • View(视图)显示数据(数据库记录)。是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
  • Controller(控制器)是应用程序中处理用户交互的部分。是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

同样的,类似于该模式的还有我们的前端的MVVM模式,用于数据的双向绑定。

MVC模式的优缺点?

在上面了解MVC模式之后,我们继续看看MVC模式有哪些优缺点?

优点(也是MVC解决的问题)

(1)极大程度解耦。在MVC模式中,三个层各司其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其他层中的代码。

(2)分工明确。MVC模式按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层,对业务熟悉的开发人员可以开发业务层,而其他开发人员可开发控制层。

(3)提高了代码的复用性。分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。

缺点

(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

(2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

(3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

(4)目前,一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。

SpringMVC的工作原理

重要组件

前端控制器(DispatcherServlet)

由我们框架提供的一个组件,相当于是SpringMVC的入口函数。用于接收前端的HTTP请求,然后经过后台业务处理之后响应结果,相当于转发器,中央处理器。有了这个组件之后可以减少其他组件之间的耦合度,因为用户请求到达前端控制器,它就相当于mvc模式中的c,是整个流程控制的中心,由它调用其他组件处理用户的请求。

处理映射器(HandlerMapping)

根据请求的url查找Handler。HandlerMapping负责根据用户请求找到Handler即处理器(Controller),SpringMVC提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

处理适配器(HandlerAdapter)

按照特定规则(HandlerAdapter要求的规则)去执行Handler 通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

处理器Handler(Controller控制器)

编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。 由于Handler涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler。

视图解析器(View Resolver)

进行视图解析,根据逻辑视图名解析成真正的视图(view) View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。 SpringMVC框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。 一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由工程师根据业务需求开发具体的页面。

视图View

View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)

工作流程

具体的工作流程如图:

(1)首先呢我们的客户端发起了一个Request请求,请求到我们的前端控制器DispatcherServlet。

(2)DispatcherServlet根据请求信息调用HandlerMapping,解析请求对应的Handler。然后返回给我们的前端控制器。

(3)我们的前端控制器将解析的Handler请求Handler的适配器进行处理。

(4)HandlerAdapter会根据Handler来调用真正的处理器开始处理请求,也就是执行我们的Controller,并处理相应的业务逻辑。

(5)处理器处理完业务后,会返回一个ModelAndView对象给我们的前端控制器,Model是返回的数据对象,View是个逻辑上的View。

(6)前端控制器会将View交给我们的View Resolver,视图解析器根据逻辑View查找实际的View。

(7)前端控制器将返回的Model传给View进行视图渲染,并最后Response响应给请求者(浏览器)。

参考资料

关于优缺点参考自百度,很杂没有具体来源

工作原理参考自《JavaGuide》

标签:控制器,SpringMVC,MVC,视图,Handler,前端,View
From: https://www.cnblogs.com/zhou111f/p/17739223.html

相关文章

  • springMVC简介
    什么事springMVCSpringMVc是Spring框架的Web组件,它是一种基于Java实现的WebMVC的轻量级Web框架2.springMVC主要工作流程 3.DispatcherServlet(前端控制器)相当于总指挥的角色,负责接受请求,请求转发给页面控制器。DispatcherServlet(前端控制器)是SpringMVC的灵魂和心脏,它负......
  • springMVC参数传递方式
    1.springMVC参数传递方式1.2动态参数绑定  2.代码1packagecom.cn.param;23importcom.sun.org.apache.xpath.internal.operations.Mod;4importorg.springframework.stereotype.Controller;5importorg.springframework.ui.ModelMap;6importor......
  • springboot web开发springmvc自动配置原理
    前言我们也知道springboot启用springmvc基本不用做什么配置可以很方便就使用了但是不了解原理,开发过程中遇到点问题估计就比较头疼,不管了解的深不深入,先巴拉一番再说…下面我们先看看官网…我的版本是2.3.2版本,发现官网改动也比较大…不同版本自己巴拉下吧,结构虽然变化了,但......
  • springmvc 获取项目中的所有请求路径
    springboot/springmvc获取项目中的所有请求路径1.编写业务代码@Autowired privateWebApplicationContextapplicationContext;@GetMapping("/getAllURL") publicRestfulResultgetAllURL(){ //获取springmvc处理器映射器组件对象RequestMappingHandlerMapping无法......
  • SSM(Spring+SpringMVC+MyBatis)框架集成
    引言进行SSM(Spring+SpringMVC+MyBatis)集成的主要原因是为了提高开发效率和代码可维护性。SSM是一套非常流行的JavaWeb开发框架,它集成了Spring框架、SpringMVC框架和MyBatis框架,各自发挥优势,形成了一个完整的开发框架。首先,使用Spring框架可以实现组件的解耦和依赖注入,通过配置......
  • SpringMVC 的执行流程
    具体流程如下所示:用户发送出请求到前端控制器DispatcherServlet。DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。Dis......
  • 3、SpringMVC之RequestMapping注解
    3.1、环境搭建创建名为spring_mvc_demo的新module,过程参考2.1节3.1.1、创建SpringMVC的配置文件<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/......
  • springMVC调用流程和springmvc工作机制和请求生命周期
    servlet工作模式客户端发送请求至客户端服务器启动并调用servletservlet根据请求生成响应内容并传回给服务器服务器返回给客户端servlet生命周期由容器控制,第一次请求时被加载,存活直到应用服务器关闭SpringMVC工作机制DispatcherServlet接受到request解析后到uri获取到h......
  • springMVC
               ......
  • SpringMVC如何在web.xml中配置DispatcherServlet
    SpringMVC如何在web.xml中配置DispatcherServlet配置WEB-INF/web.xml===>配置前端控制器/中央控制器/分发控制器,用户所有的请求都会经过它的处理<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi......