从实例中理解框架

  目前,各种开发框架非常流行,那么,什么是框架(Framework)?框架是如何产生的?为什么要使用框架,以及使用框架能给我们的开发带来什么样的好处呢?

  下面就以我们熟悉的web框架为基础来加深对框架的理解。

  在不使用Struts或者SpringMVC等web层框架时,一直是由Servlet完成业务逻辑的实现,但是,随着Servlet的增多,web.xml的配置会不断的膨胀,从而变得难以维护。针对这一问题,web框架提出的方案是:提炼一个核心的Servlet覆盖对所有http请求的处理。Spring MVC中是DispatcherServlet,Struts2是一个FilterDispatcher。 这样,web.xml中只需要对核心控制器进行配置就可以了,代码变得简洁且固定了。

  提炼出了核心控制器,还需要考虑后面的事情,就是怎样将不同的http请求分发到不同的action/controller对象上去进行业务处理,怎样将对应的处理结果返回到客户端。这一系列的逻辑流程由谁控制,又由谁负责具体实现,这些实现又如何关联到一起?

  我们使用框架就是为了不再自己控制这些公共的问题,而将更多的精力放在业务的处理上,那么,这些事情自然是由框架来完成了。

  以SpringMVC为例,核心控制器DispatcherServlet将从http请求开始到输出返回结果这期间的每一个处理步骤分派到不同的组件中进行处理,HandlerMaping负责将一个url指定到一个对应的controller上,HandlerMapping负责指定执行 controller中的哪个方法,ViewResolver根据controller中返回的viewName,结合配置文件信息,创建出合适类型的 view对象,而DispatcherServlet这个类本身负责初始化需要的组件以及对组件方法的调用。可以理解为核心控制器规范处理流程,各个组件实现处理流程。

Struts和SpringMVC框架还给我们提供了收集表单数据,完成数据类型转换,表单验证、异常处理等功能,这这细节也为开发人员提供了很大的便利。

从上面通俗的描述,我们应该可以理解到:
      框架是为了解决在某个领域开发中所碰到的困境,包含了一系列的最佳实践,作用是解决某个领域的问题。     
      框架是整个或部分系统的可重用设计,表现为一组抽象组件及组件实例之间交互的方法.
      框架是包含了一些通用功能的半成品,开发人员可以在框架的基础上进行二次开发。

时间: 2024-08-26 17:04:00

从实例中理解框架的相关文章

Vue 实例中的生命周期钩子

Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑. Vue 实例 在文档中经常会使用 vm 这个变量名表示 Vue 实例,在实例化 Vue 时,需要传入一个选项对象,它可以包含数据(data).模板(template).挂载元素(el).方法(methods).生命周期钩子(lifecyclehook)等选项. Vue 实例化的选项 需要注意的

Python中Unittest框架 𱱛

原文: http://blog.gqylpy.com/gqy/483 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

Activity中UI框架基本概念

Activity中UI框架基本概念 Activity 是应用程序的基本组成部分,提供了可视的界面,与用户进行交互: 具体Acitivity是怎么样显示这些事视图元素以及响应事件交互的. 一Activity相关概念 Activity:Activity包含一个Window,该Window在Activity的attach方法中通过调用 PolicyManager.makeNewWindo创建: View:最基本的UI组件,表示屏幕上的一个矩形区域: DecorView:是Window中View的Roo

Tensorflow实现Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)

Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图) 导语:Mask R-CNN是Faster R-CNN的扩展形式,能够有效地检测图像中的目标,同时还能为每个实例生成一个高质量的分割掩码. 对Facebook而言,想要提高用户体验,就得在图像识别上做足功夫. 雷锋网此前报道<Facebook AML实验室负责人:将AI技术落地的N种方法>(上 ,下篇)就提到,做好图像识别,不仅能让Facebook的用户更精准搜索到想要的图片,为盲人读出图片中包含的信息,还能帮助用户在

测试开发之Django——No4.Django中前端框架的配置与添加

我们在开发一个web项目的时候,虽然我们不是专业开发,但是我们也想要做出来一个美美的前端页面. 这种时候,百度上铺天盖地的前端框架就是我们的最好选择了. 当然,在网上直接下载的框架,我们是不能直接用的,所以本篇介绍一下我们怎么样来修改这个模板 首先,我们先下载一个免费的模板. 我们可以看到他的目录结构,用浏览器打开index.html文件之后可以看到模板的样式. 这样我们就可以想要哪个地方,复制哪个地方,到我们的代码里面了.给我们节省了很多编写前端的时间. 那么我们来看一下这个模板我们要怎么去做

html中的框架frameset和frame及iframe

通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面. 通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面,简而言之,就是在一个窗口中显示多个页面. 每个页面称之为一个框架.并且每个框架独立于其他的框架. 使用框架的坏处:必须同时跟踪多个框架(网页或HTML文档),整个页面很难打印. 1.框架标签(Frame) 简单的三框架页面: <frameset cols="25%,50%,25%"> <frame src="frame_a.htm"

网页中的框架

 Html中的框架,学习完今天这节,基本的Html的理论知识就告一段落了.  什么是Html框架? 将浏览器窗口,划分为不同的区域,每个区域可以包含不同的网页.以实现,多个网页在一个浏览器窗口中现实的效果. 小结:说白了,就是起到一个整合作用,把其他网页的内容直接嵌套过来利用. Html框架语法 <frameset rows="控制行数及行高" cols="控制列数及列宽" framespacing="框架间距" frameborder

【翻译自mos文章】11.2.0.4及更高版本号的asm实例中MEMORY_TARGET 和 MEMORY_MAX_TARGET的默认值和最小值

[翻译自mos文章]11.2.0.4及更高版本号的asm实例中MEMORY_TARGET 和 MEMORY_MAX_TARGET的默认值和最小值 来源于: Default and Minimum MEMORY_TARGET & MEMORY_MAX_TARGET Value for ASM 11.2.0.4 and Onwards (文档 ID 1982132.1) APPLIES TO: Oracle Database - Enterprise Edition - Version 11.2.0

OC中Foundation框架

框架的概念 1 框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的组合,以便使研发程序变的更容易在OS X下地Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation框架 1 Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间.内存管理.处理文件系统.存储(或归档)对象.处理几何数据结果(如点和长方形) 2 Cocoa是Foundation和AppKit 3 Cocoa Touch是Fo