
可复用JSP 页面 JAVA 类包的设计与实现 薛凌霄 1,2 (1.福建师范大学 数学与计算机科学学院 福建 福州 35007 福建农林大学计算机与信息学院 福建 福州 350002 可复用JSP 页面 JAVA 类包的设计采用了面向对象的设计模式, 特别关注面向对象功能设计中的可 复用性,并且采用了设计模式中的抽象工厂(Abstract Factory)和蓝本(Prototype)的经典模式,为实现 系统的高效率开发提供支持。 【关键词】: JSP;设计模式;JAVA 系统.、引言 在政府部门、大中型企事业单位的平常事务管理工作中,有 时候常常需要在很短的时间内开发一些中小型的 架构的使用管理功能,比如设计一份员工提交的调查问卷、建立职工 的资料资料的检索功能、完成一个阶段性的统计功能、又或 是为开展一些非常规的大中型活动构建一个网站平台等等。 对它们对时间有较高要求,而功能结构相对比较小的现象下,如何才能改善效能,最迅速的完成研发任务呢? 假如对每位系统都 从头到尾的汇编代码,那将是一项相当繁重的工作,而且诸多的 时候做的是重复的工作,这与面向对象编程"可复用"的思维是 相违反的。

本文所要构建的" 可复用 JSP 页面 JAVA 包"其实也可以看成是一种新的框架结构,它要实现的是面向中小型 web 应用程序的迅速使用研发的工具。 Java 语言研发 web 应用程序,主要是以经典的"模型-视图 控制器(MVC)"结构也是基础的,程序员首先要对应用程序中的 对象进行建模,然后构建功能的业务观点,之后又将花费较多时 间在用户界面层的排版上, 而用户界面层中的静态内容主要是 通过 HTML 的标签来实现的,它的缺陷是开发费时、难以修改、 难以重用 而使用"可复用 JSP 页面 JAVA 类包"来开发 可以解决它们缺点 2、类包的设计与实现 实现"可复用 JSP 页面 JAVA 类包"的体系观念是: 以对象的视角来看每个文档,设置一个 Page 类,把每位页面都 看成是Page 类的一个实例,网页的特性和组成部份看成是 Page 类的团体特性,对于一些简单的列表,我们可以把这些分类,如 列表按钮、添加记录按钮、修改记录按钮、数据处理页面、树型导 航页面等等,这些都 Page 类的子类,而对于繁杂的列表我们可 以把它看成是简单列表的有机组合, 这样就可以从面向对象的 思想来编写用户界面层的源码,大大提高了功能的可重用性 "可复用JSP 页面 JAVA 类包"的设计采用了面向对 象的设计模式,特别关注面向对象功能设计中的可复用性,采用 了设计模式中的抽象工厂(Abstract Factory)和蓝本(Prototype) 的经典模式 "可复用 JSP 页面 JAVA 类包"中涵盖了三 个主要抽象类:Page、Label、LabelAttr, 它们分别代码按钮类、标 签类、标签属性类 其他的类都是这三个抽象类的子类 它们之 间的境界结构如图 所示(1)抽象类 Page 的实现 抽象类 Page 代表详细的列表,它的泛型就是各种各样有着 不同格式、不同特点的详细的列表,也就是 JSP 页面 JA- VA 类包最后要实例化的对象,它的关键代码如下(文中所有代 码省略类的 get set成员字段): public abstract class Page protectedString title; protected Label[] bodyLabelArr; public String getHTML(){……}//返回列表的 HTML 代码 (2)抽象类Label 的实现 抽象类 Label 是"可复用 JSP 页面 JAVA 心部分,因为列表的主要元素就是标签,这个抽象类实现了标签的一些 get set的完全的操作,最后可以借助 getLabelStr)方法 返回标签的 HTML 代码 它的关键代码如下: public abstract class Label implements Cloneable //标签的四个组成部份,标签名、标签内容、标签特性、子标签protected String labelName,subLabelStr; protected LabelAttr[] labelAttrArr; protected Label[] subLabelArr; private LabelAttr[] labelAttrLoseWeightLabelAttr[] labelAttrs){……}// 掉标签特性中重复的标签public void setLabelAttrArrLabelAttr[] labelAttrs) //设置标签的特性多个特性) public void setLabelAttrLabelAttr labelAttr) ……}//设置标签的特性单个属性) public void addLabelAttrLabelAttr labelAttr){……}//添加或重载单个标签属 publicvoid setSubLabelArrLabel[] subLabels) ……}//设置标签的子标签(多身高标签) public void setSubLabelLabel subLabel){……}//设置标签的子标签(单身高 标签) public void addSubLabelLabel subLabel){……}//添加单身高标签 public void setSubLabelStrString subLabelStr) ……}//设置标签的文本内容 public Object clone) throws CloneNotSupportedException{……}//深度克隆 public String getLabelStr){……}//返回该标签的 HTML 代码 比较少见的是Label 类的子类有 Td 类、Tr 类、Table NullLabel类等,其中 NullLabel 是一种特殊的 Label 类,它代表 Label,并且重载了Label (3)抽象类LabelAttr 的实现 抽象类 LabelAttr 表示标签的特性如 Width、Height、Back- groud、Bgcolor 等等 Height 类、Width 类、Backgroud 类、Bgcolor 类、Align 类都是 LabelAttr 类的子类,由于标签特性的种类很多, 这里就不全部罗列 3、类包的应用 所示的次序图来证明程序员要怎么来使用可复用 JSP 页面 JAVA 程序员在汇编网站流程的时候,当需要构建一个 ListPage 类的表单按钮的时候,他就实例化一个 ListPage 类,假设实例化 ListPage类的对象名为 listpage1,listpage1 在构造的时候就实 例化一个 Label 类的子类 Table 类,同时 Table(下转第 111 (上接第157 类在构造的时候又实例化了Tr 类的异或,Tr 类在构造的时候又 实例化了 Td 类的异或,这样一个 ListPage 类的对象就初步产生 了,接下来,程序员要做的就是把这个 ListPage 类的对象的各个 成员特性赋值,这样一个 ListPage 类的列表就编辑完成了,大大 节省了编程的复杂度。

可复用JSP 页面 JAVA 具备很强的可扩展性:首先,从广度上权衡,在日后的 WEB 开发中,可以不断增加 Page 类的子类,使得包包括的列表类型越来越多,从而稳步加强 以后功能的研发效率。 其次,从深度上权衡,由于 JSP 页面生成 可以在它的基础上建构出这些的有用的功能,比如:可以引入 GUI 相关的类,建立一个面向初 WEB开发者的一个 WEB 二次开发平台等等。 5、总结 通过下面的介绍,我们已然可以了解怎么来构建一个"可复 JSP页面 JAVA 类包"的初步模型,"可复用 JSP 页面生 成器 JAVA 还需要在程序员的不断地编程过程中稳步构建,一次研发过程中构建起来的类可以在下一次的研发中读取, 这样就可以导致"可复用 JSP 页面 JAVA 类包"的系统逐 渐强大,使程序员的研发效率稳步加强。 参考文献: 1.福勒.重构-改善既有源码的设计[M]. 熊节译.中国电力出版社, 2003:8. 2.Erich gamma ,Richard Helm 等.设计模式--可复用面向对象插件的基 础[M].李英军等译.机械工业出版社,2005:6. 3.林上杰,林康司.JSP2. 技术指南[M].电子工业出版社,2004:1.在传统 Web 应用中,有着大量的列表流,我们需要一种有 效的制度对它进行管理。

同时由于表现层的系统相对更加薄弱, 控制器往往还要分担起为表现层打算数据的工作。 这些在控制 器中打算好的数据一般都是利用上下文 tributes)以推的手段交给表现层,即推模式(PushMode)。 这种推 模式在列表总是以总体刷新的手段获得更新的研发手段中并不 会出现什么难题,看起来一切都可以很好的运转。 可是当 AJAX 出现以后,这种运转机制就出现了难题。 因为 AJAX 强调的是减 少按钮的总体刷新,代之以局部数据刷新。 当一个局部数据刷新 的请求从客户端被发动时, 表现层必须有能力主动的获得所需 要的数据。 这种操作类似于客户端通过表现层从前端的数据模 型中的拉取数据,即拉模式(Pull Mode)。这一系统需求又与传统 Model2思路产生了抵触。 回顾上面的分析,我们已然在传统 AJAX之间找出了两个冲突点:1、对列表流的完全 假设不同 2、推模式和拉模式的分歧 4、重构 MVC 开发框架 Model2 AJAX之间存在着不和谐, 这是一个不争的事 但并不是说我们就必须而且而全盘否定掉传统的MVC 架构 模式。 事实上,企业在过渡到 AJAX 的过程当中,目前 MVC 开发 框架中的主体仍可以保存下来, 只是我们需要对其中的局部进 行一些调整。

我们将这个过程称之为对 MVC 开发框架的闭环。 在这个闭环过程当中,首当其冲面临调整的就是控制层jsp页面引入java类,我们需 要再次为控制层寻找一个定位。 如果说在传统的 Web 应用研发 模式中控制层的效果是耦合数据模型和列表的话, 那么在新的 表现层技术引入之后, 控制层的效果就也是是耦合数据模型和 表现层的数据插口。 如此一来 Server 端的表现层思路就全面接 管了与 Client 端的通信, 对于 Client 端来讲控制层被深藏到了 表现层的中间,只负责表现层与数据模型之间的对接。 相应的, 原先 MVC 架构与 Client 端产生的菱形关系也就演成为了垂直 分布的双键模式。 如图 所示:我们可以把 Server MVC的各个组成部份看作是一个 封闭的子系统。 这个子系统的系统就是从中提取数据经 过一系列处理以后交给 Client 同时对Client 端填写的数据 进行一些列处理以后再保留进。 同样那么我们把 Client MVC的各个组成部份也看作是一个封闭的子系统,它所完 成的工作事实上跟 Server 端的子系统非常类似, 只不过这个子 系统的两个交互对象分别是用户和 Server 按照这样逻辑,最终产生的 Web 开发模式将是一种迭代式的 MVC 架构。
这种迭 代的研发手段对现有 MVC 的影响稍小,但希望起到的改善交互 性的效果。 5、应用作用 利用重构的迭代式的 MVC 模式, 在采用 AJAX 技术的同 时,也保存了传统的 MVC 模式,带给顾客新感受的时候,也维持 了流程结构的层次性和藕合性。 该模式已然在 迭代的MVC 模型图 6、总结和展望 传统 Web 应用主要由 层组成,而增强 Ajax 技术的 Web 应用将在传统的 Web 应用上额外增强一个 Ajax 引擎,能将控制 器的部份系统转移到客户端页面。 Ajax 技术既是对传统 Web 术的革命,也是对传统Web 技术的一种改良和发展。 Ajax 对传 MVC模式提出挑战jsp页面引入java类,利用重构的演进 MVC 模式,可以在不 抛弃传统的 MVC 模式的现象下,有效改善 web 应用的研发效率 和用户的感受作用。 参考文献: 1. JSF应用改进[J]云南大学学 2007,29 (S2): 244~248 引擎的方法和使用[J]微计算机资料.2006.2-205: 27- 32 4.刘高原 张国平:结合Ajax JSF技术研发 Web 应用[J]微计算 机技术 2007 5.Struts2权威指南 作者:李刚 电子工业出版社 2007
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-119392-1.html
图片上的虫明显是未加工过的活虫