`
younglibin
  • 浏览: 1211232 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

框架到底给我带来了什么

阅读更多

无论是使用JSP,还是使用Struts1,或是Struts2,我们至少都需要一些必须的元素(如果没有这些元素,或许我还真不知道这个程序会写成什么样子):

1. 数据

在这个例子中,就是name和password。他们共同构成了程序的核心载体。事实上,我们往往会有一个User类来封装name和password,这样会使得我们的程序更加OO。无论怎么说,数据会穿插在这个程序的各处,成为程序运行的核心。

2. 页面展示

在这个例子中,就是login.jsp。没有这个页面,一切的请求、验证和错误展示也无从谈起。在页面上,我们需要利用HTML,把我们需要展现的数据都呈现出来。同时我们也需要完成一定的页面逻辑,例如,错误展示,分支判断等等。

3. 处理具体业务的场所

在这里,不同阶段,处理具体业务的场所就不太一样。原来用JSP和Servlet,后来用Struts1或者Struts2的Action。

上面的这些必须出现的元素,在不同的年代,被赋予了不同的表现形式,有的受到时代的束缚,其表现形式非常落后,有的已经不再使用。但是拨开这些外在的表现形式,我们就可以发现,这不就是我们已经熟门熟路的MVC嘛?

数据 ———— Model
页面展示 ———— View
处理具体业务的场所 ———— Control

所以,框架不重要,概念是王道。只要能够深刻理解MVC的概念,框架对你来说,只是一个jar包而已。

MVC的概念其实就那么简单,这些概念其实早已深入我们的内心,而我们所缺乏的是将其本质挖掘出来。我们来看看下面这幅图,这是一副流行了很多年的讲述MVC模型的图:



在这幅图中,MVC三个框框各司其职,结构清晰明朗。不过我觉得这幅图忽略了一个问题,就是数据是动的,数据在View和Control层一旦动起来,就会产生许多的问题:

1. 数据从View层传递到Control层,如何使得一个个扁平的字符串,转化成一个个生龙活虎的Java对象

2. 数据从View层传递到Control层,如何方便的进行数据格式和内容的校验?

3. 数据从Control层传递到View层,一个个生龙活虎的Java对象,又如何在页面上以各种各样的形式展现出来

4. 如果你试图将数据请求从View层发送到Control层,你如何才能知道你要调用的究竟是哪个类,哪个方法?一个Http的请求,又如何与Control层的Java代码建立起关系来?

除此之外,Control层似乎也没有想象中的那么简单,因为它作为一个控制器,至少还需要处理以下的问题:

1. 作为调用逻辑处理程序的facade门面,如果逻辑处理程序发生了异常,我们该如何处理?

2. 对于逻辑处理的结果,我们需要做怎么样的处理才能满足丰富的前台展示需要?

这一个又一个问题的提出,都基于对MVC的基本概念的挖掘。所以,这些问题都需要我们在写程序的时候去一一解决。说到这里,这篇文章开头所提的问题应该可以有答案了:框架是为了解决一个又一个在Web开发中所遇到的问题而诞生的。不同的框架,都是为了解决不同的问题,但是对于程序员而言,他们只是jar包而已。框架的优缺点的评论,也完全取决于其对问题解决程度和解决方式的优雅性的评论。所以,千万不要为了学习框架而学习框架,而是要为了解决问题而学习框架,这才是一个程序员的正确学习之道。

分享到:
评论

相关推荐

    ios 数据请求框架 图片请求框架 刷新框架 kvc框架,进度条框架

    这些小框架的使用,不仅可以提高代码的可读性和可维护性,还能为用户带来更好的交互体验。在实际开发中,开发者可以根据项目需求和团队技术栈选择合适的框架进行集成。同时,保持对新框架和技术的关注,有助于提升...

    安卓12框架.zip (框架修改器软件下载安装包)

    安装前,用户应确保了解软件来源的可信性,以及可能带来的风险,例如隐私泄露或恶意软件。 【知识点拓展】 1. **Android框架**:Android框架是整个系统的基石,包含了系统服务、库和运行时环境,允许应用程序运行并...

    xposed框架大全压缩包

    Xposed框架是安卓系统中的一款强大工具,它允许用户通过安装模块来修改系统的行为和应用程序的功能,无需重新编译Android ROM或拥有root权限。这款框架以其灵活性和深度定制能力而闻名,深受高级用户和开发者喜爱。 ...

    php框架,基于zend重构的框架

    ...这个新的框架旨在为应届毕业生和初学者提供更易理解和上手的...通过使用这个框架,新手可以更快地掌握PHP开发,同时享受到Zend框架带来的强大功能。如果你是初学者,不妨尝试这个框架,利用它来提升你的PHP编程技能。

    PB9界面框架

    PB9界面框架是一种基于PowerBuilder 9(简称PB9)开发的用户界面解决方案。PowerBuilder是Sybase公司推出的一种强大的...通过深入研究和实践,开发者可以将PB9界面框架的优势发挥到极致,为软件开发带来更高的价值。

    F框架 v2.9

    这些信息对于开发者来说至关重要,它们帮助理解如何集成框架到项目中,如何调用其提供的功能,以及了解新版本带来的改进和修复。 总结来说,F框架v2.9是一个用C#编写的.NET框架,提供了一系列工具和类库,简化了...

    html 后台框架代码

    总之,HTML后台框架为Web开发带来了诸多便利,通过选择合适的框架,开发者能够更加高效地构建功能丰富的动态网站。无论是Angular、React、Vue.js还是其他框架,都有其独特的优势和适用场景。在实际开发中,要根据...

    C# socket tcp通信的一个框架

    很好的一个关于C# socket通信的一个框架,这个是我朋友写的,我想肯定能够给你带来惊喜!

    易语言网络游戏框架

    《易语言网络游戏框架》是一款基于易语言开发的网络游戏开发框架,它为开发者提供了一种高效、便捷的方式来创建和管理网络游戏。易语言以其简洁的语法和丰富的库支持,降低了编程的门槛,使得初学者也能尝试网络游戏...

    JSP应用框架外文翻译

    而购买现有的框架虽然需要一定的学习成本,但对于大型项目而言往往能带来更高的投资回报率。例如,Struts框架就因其高度成熟和丰富的功能集而受到广泛认可,在许多情况下,相比于从零开始构建,使用Struts等框架可以...

    wbcs声明式框架

    【wbcs声明式框架】是一种创新的开发框架,它的出现为开发者带来了全新的编程体验。声明式编程是一种非过程性的编程范式,强调描述“什么”而不是“如何”做,这使得代码更简洁、易读,同时也降低了维护成本。Wbcs...

    IT管理框架演进

    COBIT(Control Objectives for Information and Related Technologies)是一个针对企业IT治理和管理的框架,它为企业管理层提供了一套全面的IT管理方法,帮助企业确保信息技术投资能够带来预期的业务价值。...

    若依框架修改器最新版v4-20220517

    若依框架修改器可以一键批量更改框架中的包名,避免手动修改带来的繁琐和错误。 2. **类名自定义**:根据项目需求,可能需要更改默认的类名或接口名,以符合项目的命名规范。该修改器能帮助开发者快速实现这一目标...

    技术文档web框架

    Web框架是用于构建Web...总之,Web框架为Web应用开发带来了便利,通过理解其基本原理和特点,开发者可以更高效地构建高质量的Web服务。不断学习和掌握新的框架,有助于适应技术的快速发展,提升开发效率和产品质量。

    hui移动端前端框架

    《HUI移动端前端框架详解与应用》 在数字化时代的洪流中,移动端应用开发日益重要,而优秀的前端框架则是构建高效、...随着前端技术的不断发展,HUI也将持续进化,为开发者带来更多便利,推动移动应用的创新和发展。

    SSM框架需要的jar包

    SSM框架的jar包集合是项目正常运行的基础,正确引入这些jar包并配置相应的配置文件,才能确保SSM框架能有效地协同工作,为开发带来便利。同时,随着技术的发展,现在更多地倾向于使用Spring Boot,它集成了SSM框架,...

    YAF框架使用说明

    这句话让我想起了另一个人,slackware作者——简单、稳定、高效。 Yaf现在在国外已经被很多人关注, Zend Framework的作者在twitter上也推荐了Yaf。 google、百度、facebook都在用YAF。 Yaf的优点: 1. 用C语言...

    alpha简单易用php框架

    8. **依赖注入**:作为现代框架,Alpha可能支持依赖注入,这是一种设计模式,允许在运行时将依赖项传递给类,增强了代码的灵活性和可测试性。 9. **安全特性**:框架的安全性是至关重要的,Alpha可能包含了防止XSS...

    我公司现在使用框架(框架原代码)

    【标题】:“我公司现在使用框架(框架原代码)”所揭示的是公司正在采用的某种特定的软件开发框架,这通常是为了提升开发效率、代码质量和项目管理能力。框架原代码意味着公司拥有对框架的完全控制,可以进行定制化...

Global site tag (gtag.js) - Google Analytics