问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MVC原理(mvc原理是服务端渲染吗)

发布网友 发布时间:2024-09-17 06:19

我来回答

1个回答

热心网友 时间:2024-09-29 09:44

试阐述MVC模式(模型-视图-控制器)的语境和原理

模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。1、模型(Model)

模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.

2、视图(View)

视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

3、控制器(controller)

控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

MVC式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性

早期的程序中,如果不注意对数功能和显示的解耦合,常常会导致程序的复杂及难以维护。很多VB,Delphi等RAD程序都有这种问题。甚至现在的C#,Java有时候也会出现把业务逻辑写在显示模块中的现象

管MVC设计模式很早就提出,但在Web项目的开发中引入MVC却是步履维艰。主要原因:一是在早期的Web项目的开发中,程序语言和HTML的分离一直难以实现。CGI程序以字符串输出的形式动态地生成HTML内容。后来随着脚本语言的出现,前面的方式又被倒了过来,改成将脚本语言书写的程序嵌入在HTML内容中。这两种方式有一个相同的不足之处即它们总是无法将程序语言和HTML分离。二是脚本语言的功能相对较弱,缺乏支持MVC设计模式的一些必要的技术基础。直到基于J2EE的JSPModel2问世时才得以改观。它用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean技术实现模型的功能

JSPModel1与JSPModel2

SUN在JSP出现早期制定了两种规范,称为Model1和Model2。虽然Model2在一定程度上实现了MVC,但是它的应用用并不尽如人意JSPmodel1JSPmodel2model2容易使系统出现多个Controller,并且对页面导航的处理比较复杂

有些人觉得model2仍不够好,于是CraigR.McClanahan2000年5月提交了一个WEBframework给JavaCommunity.这就是后来的Struts.

2001年7月,Struts1.0,正式发布。该项目也成为了ApacheJakarta的子项目之一

Struts质上就是在Model2的基础上实现的一个MVC架构。它只有一个中心控制器,他采用XML定制转向的URL。采用Action来处理逻辑

写出MVC的工作原理

1.当用户在浏览器中点击一个链接或者提交一个表单时,那么就会产生一个请求(request)。当请求离开浏览器时,它会携带用户请求的信息。

2.请求的第一站到达的是Spring的DispatcherServlet,它是一个前端控制器,工作是将用户的请求委托给其他的组件(这里是交给SpringMVC的控制器)去处理。

这里DispatcherServlet要决定将请求传给哪一个控制器(Controller)去处理,那么这时就需要处理器映射(HandlerMapping)了。

处理器映射会看请求的URL信息,然后决定将请求交给哪一个控制器去处理。比如说有两个控制器ControllerA和ControllerB,分别处理后缀名为.html和.jsp送来的请求,那么当请求者的后缀名为.html时,那么DispatcherServlet就将请求交给ControllerA进行处理。

C代表Controller,负责用户界面和业务逻辑层的通信控制,一方面解释来自用户界面的输入,识别用户动作(如点击按钮等),调用相应Model中的方法,另一方面处理来自Model的事件和返回的执行结果,调用适当的View显示给用户,Controller主要由Servlet完成。

M代表Model,负责整个解决方案的业务逻辑实现,底层的数据库也由Model访问和操作;

V代表View,负责系统向用户的展示,主要由HTML及JSP等完成;

拓展资料:

MVC组件说明:

以下组件通常使用框架提供实现:

DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。

HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器。

ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。

组件:

1、前端控制器DispatcherServlet(不需要工程师开发),由框架提供

作用:接收请求,响应结果,相当于转发器,中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。

用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

2、处理器映射器HandlerMapping(不需要工程师开发),由框架提供

作用:根据请求的url查找Handler

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

3、处理器适配器HandlerAdapter

作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

4、处理器Handler(需要工程师开发)

注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler

Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。

由于Handler涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler。

5、视图解析器Viewresolver(不需要工程师开发),由框架提供

作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

springmvc框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。

一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由工程师根据业务需求开发具体的页面。

6、视图View(需要工程师开发jsp...)

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

参考资料:百度百科-MVC

springmvc的工作原理,简单的概括一下

客户端请求提交到DispatcherServlet。

由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller。

DispatcherServlet将请求提交到Controller。

Controller调用业务逻辑处理后,返回ModelAndView。

DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。

视图负责将结果显示到客户端。

SpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。

Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,可以选择是使用内置的SpringWeb框架还是Struts这样的Web框架。通过策略接口,Spring框架是高度可配置的,而且包含多种视图技术,例如JavaServerPages(JSP)技术、Velocity、Tiles、iText和POI。SpringMVC框架并不知道使用的视图,所以不会强迫您只使用JSP技术。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
新装修怎样去除异味又快又有效,洋葱和土肥皂都试过了,都没用。 新装修的店面通风多久 新店装修通风需要多久? 新装修的店面多久多久没有异味 “新店装修后臭味能持续多长时间”_百 ... 我09年的国三柴油货车,到19年7月以后还能审吗? iebook 怎样让背景音乐从第一页开始放而不是封面开始 iebook超级精灵的背景音乐和页面插入音乐,可以分别控制吗? 用iebook做电子杂志的时候怎么从头到尾设同一首音乐 iebook支持导入多首音乐吗?可不可以对每页进行音乐设置? IEBOOK 往回翻页时上一页的背景音乐怎么样才能从头开始播放而不是接... 如何用iebook连续几页不间断播放同一首音乐? springmvc参数配置(springmvc参数) springmvc常用注解以及作用(springmvc常用注解都有哪些) springmvc注解开发详解(springmvc注解开发详解) 早上空腹能吃什么水果 空腹吃哈密瓜对身体有没有坏处?谢谢了,大神帮忙啊 谁知道烧茄子的最佳做法 什么是九信app? 多款“租人”APP暗藏涉黄交易 哪个app涉黄 很精彩,酷炫是那个词 zuiitv到底安不安全,是不是钓鱼网站 和酷炫狂霸拽相反的形容词 2NE1TV第三季钓鱼是哪一集 网上哪里可以下载相声《钓鱼》TV 芒果tv钓鱼频道怎么看 已预测1000多个RNA结合蛋白,加州大学团队提出AI生信模型,填补RNA结合蛋... 电脑触摸版被手机砸过后进系统慢,进去之后点击图标就卡死怎么回事,谁知... 电脑显示器被手机砸了下外屏没事,里面花了如图,还有挽救的必要么。求... 电脑被手机砸了一下,突然屏幕出现闪烁条纹,关机都不行,电池都抠了屏幕... 刚用手机砸到笔记本电脑上,接着电脑就自己重启了,一直显示windows错误... component注解无法注入? 钻石切工选择什么等级比较好? 如何申请创建自己的频道? 怎么样在YY上建立自己的频道要详细 胃溃疡穿孔的腹部体征 《密室逃脱》游戏攻略 excel中的统计函数STANDARDIZ 《海底大猎杀》游戏技巧是什么-《海底大猎杀》游戏技巧详细介绍_百度... 二狗子玩游戏哈哈哈 为什么一千块叫1k 月薪1k2k是多少 穿墙无线路由器哪个牌子好 穿墙路由器买哪个好 什么路由器穿墙能力强 高层建筑发生火灾时不能怎么逃生 高层建筑发生火灾后错误的逃生方法是 中国男人的裙装穿了多少年? 裙装什么时候也会成为男士的主流服装 女性朋友们,男性穿裙装能接受吗 小龙虾买回来放一晚上会死吗?