1.框架
(1).是一系列jar包,其本质是对JDK功能的拓展。
(2).框架是一组程序的集合,包含了一系列的最佳实践,作用是解决某一个领域的问题。
2.框架的作用:
框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系统的开发周期,提高开发质量。与传统的基于类库的面向对象重用技术比较,应用框架更注重于面向专业领域的软件重用
3.框架和设计模式的区别
有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式。实际上它们完全是不同的概念。
(1). 框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
(2). 框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
(3).框架模式有哪些?
MVC、MTV、MVP、CBD、ORM等等;
(4).框架有哪些?
C++语言的QT、MFC、gtk,Java语言的SSH 、SSI,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等
(5).设计模式有哪些?
工厂模式、适配器模式、策略模式等等
简而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。
4.最佳实践五要素:
(1)可读性
(2)可维护性
(3)可拓展性
(4)简单是美(Simple is Beauty):
消除重复、化繁为简
简单必须可读、简单必须可拓展
(5)减少依赖、消除耦合
5.Web开发中的最佳实践——分层开发模式
JavaEE开发中,整个程序根据功能职责进行纵向划分(技术层面的"分而治之")。不能的层次承担了不同的功能职责:
表现层(Predentation Layer):负责处理与界面交互的相关功能 -->
(Struts2)
业务层(Business Layer): 负责复杂的业务逻辑计算和判断 -->
(Spring)
持久层(Persistent Layer): 负责将业务逻辑数据持久化存储 -->
(Hibernate)
6.MVC模式
MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式
MVC架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好的开发和维护效率。
数据模型(Model):负责封装应用的状态,并实现应用的功能。通常又分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单信息、用户信息等;而业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等。
视图展现(View):界面,用来将模型的内容展现给用户,用户可以通过视图来请求模型进行更新。视图从模型获得要展示的数据,然后用自己的方式展现给用户,相当于提供界面来与用户进行人机交互;用户在界面上操作或者填写完成后,会点击提交按钮或是以其它触发事件的方式,来向控制器发出请求。
控制器(Controller):用来控制应用程序的流程和处理视图所发出的请求。当控制器接收到用户的请求后,会将用户的数据和模型的更新相映射,也就是调用模型来实现用户请求的功能;然后控制器会选择用于响应的视图,把模型更新后的数据展示给用户。
模式图:
7.struts
由传统Struts1和WebWork两个经典框架发展而来
Struts2框架=Struts2+XWork
8.Strust2 核心功能
(1).允许POJO(Plain Old Java Objects)对象 作为Action
(2).Action的execute 方法不再与Servlet API耦合,更易测试
(3).支持更多视图技术(JSP、FreeMarker、Velocity)
(4)基于Spring AOP思想的拦截器机制,更易扩展
(5)更强大、更易用输入校验功能
(6)整合Ajax支持
9.struts处理流程图
10.Struts运行必要jar包
struts2-core-2.3.1.1.jar:Struts 2框架的核心类库
xwork-core-2.3.1.1.jar:Command模式框架,WebWork和Struts2都基于xwork
ognl-3.0.3.jar:对象图导航语言(Object Graph Navigation Language),
struts2框架通过其读写对象的属性
freemarker-2.3.18.jar:Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar:ASF出品的日志包,Struts 2框架使用这个日志
包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload-1.2.2.jar: 文件上传组件,2.1.6版本后需要加入此文件
commons-io-2.0.1.jar:传文件依赖的jar包
commons-lang-2.5.jar:对java.lang包的增强
10.前端控制器(front controller):J2EE中的设计模式:
主要提供一种可以集中式管理请求的控制器,一个前端控制器可以接受所有的客户请求,将每个请求递交给相应的请求处理对象(Action/Controler),并适当地响应用户。
前端控制器完成大部分通用功能,把把具体的操作交给各个Action去完成。
ThreadLocal又称为“线程局部变量”,它为每一个使用该变量的线程都提供一个变量值的副本,
使每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。
struts基础知识