mvc2 mvc
对于不认识的人,MVC代表模型,视图,控制器,并且是一种设计模式,用于将应用程序的业务,数据和表示逻辑分离为谨慎的组件。
MVC模式组件的Web上有很多定义,因此冒着使事情更加混乱的危险,这是我的:
模型
该模型表示系统内的数据或知识。 它通常来自但不限于数据库中的数据,并且可能包含业务逻辑。 在我看来,这确实是用户希望在其屏幕上看到的信息。
视图
该视图负责在屏幕上显示模型。 对于Web应用程序,它是由浏览器提供的,并且在Java世界中,通常是使用JSP构建的。
控制者
控制器将用户,模型和视图链接在一起,接受用户的请求,将其与适当的模型结合在一起,并将模型与适当的视图结合在一起。
解释这一点的图通常看起来像这样:
这样做的好处包括可重用性,例如使用同一控制器与Web浏览器和电话通话; 可维护性,因为它更易于查找,修复和增强功能; 和可测试性,因为您可以分别测试每个组件。
MVC模式是由Trygve Reenskaug发明的,并且自1978年以来一直存在。TrygveReenskaug既在Wikipedia上拥有自己的页面,又维护着自己的详细介绍MVC的网页 。
就网络应用程序而言,MVC的版本和定义似乎与海滩上的沙粒一样多,围绕什么构成模型和视图进行了各种辩论。 例如,在Web应用程序中,视图是否包含HTML或仅包含CSS? 希望当我说Web应用程序通常使用MVC的一种变体(称为前端控制器模式)时,我不会引起争议。 在这种模式下,通常会有一个Servlet接收来自浏览器的请求。 该servlet检查请求,然后将其委托给另一个对象,该对象充当子控制器,将特定请求的视图和模型联系在一起。
前端控制器的早期实现通常使用所谓的JSP前端策略,即针对特定请求的每个JSP都充当子控制器。 使用这种策略时,您经常面临编写一大堆自定义标签库以包含在每个页面中的任务。 这些负责编组模型并确定模型在视图中的呈现方式。 根据经验,这会导致将关注点与控制器,模型和视图的关注点分离在一起,并在一个地方混合在一起,并且通常由JSP中的JSP进行演示,其中包含用于表示逻辑的自定义标签,与用于数据访问的其他自定义标签混合所有这些都与Java Scriptlet,HTML,Javascript和开发人员的困惑融合在一起。 当关注点分离失败时,MVC崩溃,几个反模式重新出现,包括功能分解 , 怪物对象和泥浆大球 。 Sun(现在为Oracle)在其J2EE核心模式中不建议使用JSP前端策略。 从经验来看,这是我绝对同意的观点……下图说明了JSP前沿战略的陷阱:
更多最新的实现方式(完全避开了JSP前端策略)将委托给纯Java子控制器,而JSP则仅负责整理演示文稿。 子控制器的职责是从模型中获取数据并将其戳入JSP以进行呈现。 这种方法已经被许多Web应用程序框架(例如使用Action类的Struts和在版本3中使用其@Controller注释以及在版本2.x中使用处理程序类的Spring MVC)成功采用,取得了巨大的成功。
使用此技术必定会有一些陷阱,但是不会想到严重的陷阱,例如关注点分离的中断。 如果您知道任何事情,请告诉我...
参考:我们的JCG合作伙伴 Roger Hughes在Captain Debug的博客上对每个人都了解MVC 。
相关文章 :
- Spring MVC拦截器示例
- jqGrid,REST,AJAX和Spring MVC集成
- SpringMVC 3 Tiles 2.2.2集成教程
- Spring MVC3 Hibernate CRUD示例应用程序
- Spring MVC开发–快速教程
- Spring,Quartz和JavaMail集成教程
- Spring Insight – Web应用程序分析
- Java教程和Android教程列表
翻译自: https://www.javacodegeeks.com/2011/11/everybody-knows-about-mvc.html
mvc2 mvc