软件工程专业毕业论文教学示范文档-蓝梦大学官方网站及教学平台系统开发规范说明书_第1页
软件工程专业毕业论文教学示范文档-蓝梦大学官方网站及教学平台系统开发规范说明书_第2页
软件工程专业毕业论文教学示范文档-蓝梦大学官方网站及教学平台系统开发规范说明书_第3页
软件工程专业毕业论文教学示范文档-蓝梦大学官方网站及教学平台系统开发规范说明书_第4页
软件工程专业毕业论文教学示范文档-蓝梦大学官方网站及教学平台系统开发规范说明书_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

蓝梦大学官方网站及教学平台系统开发规范说明书蓝梦教育集团信息系统开发中心版权所有不得复制二零一六年十月二十三日

文档属性文档属性文件状态:[√]草稿[]正式发布[]正在修改文件标识:BlueDream-PM-01当前版本:1.0文件密级:[]普通[√]秘密[]绝密变更记录日期作者版本变更内容审阅者

目录TOC\o"1-3"\h\u1 引言 61.1 目的 61.2 适用范围 6 开发标准说明书主要内容 6 阅读对象 62 工程开发过程标准 72.1 需要遵循的根本原那么 72.2 本软件工程的生存周期划分 72.3 文档编制要求 82.4 阶段结束和阶段评审要求 8 衡量阶段结束的工作结果必须是实在的交付品 8 每个阶段都要进行对应阶段的评审工作 82.5 工程的角色划分 9 本工程的角色划分 9 为什么要进行角色分工 9 防止角色分工所可能带来的负效应 93 工程编程命名标准 103.1 标准化编程的根本内涵 10 没有规矩不能成方圆 10 标准化编程实现的必要性 10 统一源代码开发工具源程序的字符集编码 103.2 程序代码命名标准的具体要求 11 程序代码命名标准 11 本工程程序代码具体的命名标准 14 程序代码命名标准例如 163.3 程序代码风格标准的具体要求 17 代码行在排版格式上的风格要求 17 尽可能除掉冗余的代码行 18 合理地组织程序代码行 20 标准化代码中的注释风格 21 提高代码的可维护性 244 程序包及配置文件命名标准 294.1 系统程序包命名标准 29 系统的WebContext名为px1987 29 系统中的各个Util组件程序包命名标准 304.2 系统配置文件命名标准 31 与Struts2框架相关的系统配置文件 31 部署Struts2前端控制器的系统配置工程 32 JDBC数据库连接池工作参数的系统配置 324.3 第3方的各个系统Jar包文件 33 添加Struts2框架相关的系统Jar包文件 33 添加JSON-lib系统库Jar包文件 34 添加数据库访问相关的系统库Jar包文件 35 添加log4J日志记录相关的系统库Jar包文件 355 包中的通用功能类 365.1 统一工程中异常处理 36 自定义的异常类 36 应用日志记录存储程序代码中的异常抛出信息 375.2 共享重用通用功能程序类 37 各个子系统程序中的符号常量 37 对配置参数文件进行解析的ParsePropertiesConfig类 37 基于DBCP数据库连接池的实现类 376 Web页面及相关资源文件的实现标准 386.1 界面原型设计标准 38 编写?Web界面设计概要?相关文档 38 Web界面实现必须遵循W3C所倡导的Web标准 386.2 全局通用资源文件的存放目录命名标准 39 全局通用的图片存放在images目录 39 全局通用的CSS文件存放在css目录 39 全局通用的JavaScript文件存放在javascript目录 39 全局通用的Flash动画文件存放在flash目录 406.3 各个子系统页面存放的目录命名标准 40 登录注册子系统页面文件目录 40

引言目的

Web工程开发的分散性和交互性,决定了Web工程的开发必须要遵从一定的开发标准和技术约定。只有每个开发人员都按照一个共同的标准去设计、沟通、开发、测试、部署相关的系统,才能保证整个开发团队协调一致的工作,从而最终提高开发工作的效率,提升工程工程的总体质量。因此,为了标准蓝梦大学官方网站及教学平台系统软件工程研发中的各个阶段的开发行为,特制定出此开发标准并给开发团队提供开发标准和标准——标准化的软件文档是工程化开发软件系统的根底,文档资料也是软件系统的生命线。其目的是为蓝梦大学官方网站及教学平台系统软件工程相关的开发人员基于J2EE系统平台能够开发出高效的、灵活的企业级应用系统,并提高系统的可重用性、可维护性。但考虑到工程的开发时间和本钱等因素,没有对软件开发各个阶段进行详细的标准定义及要求,而只是对开发过程和编程实现进行了根本的标准。适用范围

开发标准说明书主要内容本开发标准说明书适用于蓝梦大学官方网站及教学平台系统软件工程从立项到开发实施、测试、结项的各个阶段,其中主要规定了开发过程的标准和编程标准的内容与要求。第一局部是工程开发流程的标准,主要阐述在工程开发过程中的各个阶段的根本标准要求;第二局部为编程〔Coding〕和Web页面开发标准,从而确保工程团队中各个成员的程序代码对外具有一致的编码标准和风格。阅读对象本文档主要提供应与“蓝梦大学官方网站及教学平台系统〞工程相关的人员阅读和参考,主要的人员如下:1、工程管理人员 2、系统设计人员 3、系统开发人员工程开发过程标准需要遵循的根本原那么蓝梦大学官方网站及教学平台系统软件工程系统在整个开发过程中的各个阶段如分析、设计、实现、测试都要尽可能遵循软件工程的根本原那么和所倡导的开发过程,所需要遵循的具体原那么如下:〔1〕软件开发过程一定要划分成一系列界面清晰的工作阶段,并用分阶段的生命周期方案严格管理;〔2〕坚持进行阶段评审,每个阶段都有明确的工作目标和要求,都要产生出一定的阶段成果;〔3〕实行严格的工程控制和管理,对每个阶段的工作结果,都要进行严格的检查、评审或验证等质量控制工作;〔4〕采用现代程序设计和开发实现技术;〔5〕为了能够使得各个阶段的结果都能清楚地审查,必须要用可见的文档描述每个阶段的任务、实施步骤、要求和完成标志;〔6〕开发小组的人员应该少而精,并充分地进行沟通以提高工程的开发效率和降低开发本钱;〔7〕成认不断改良的软件工程实践的必要性以持续地改良本系统的总体质量。本软件工程的生存周期划分一个软件从定义、开发、使用和维护,直至最终被废去的过程称为软件生存周期。蓝梦大学官方网站及教学平台系统软件工程系统的开发模型仍采用经典的“瀑布模型〞,将此软件生存周期的各阶段视如瀑布流水,逐级下落,逐步开发实现。本标准说明书将蓝梦大学官方网站及教学平台系统软件工程系统的开发生存周期划分为如下七个阶段:1、

方案阶段2、

需求分析3、系统设计4、开发实现5、系统测试6、系统确认7、系统维护

文档编制要求与蓝梦大学官方网站及教学平台系统软件工程开发相关的各种文档编制应是开发过程的自然结果,而不应是事后的敷衍之物。各种文档编制也都应遵循相应的文档标准——GB8567-2006计算机软件文档编制标准。阶段结束和阶段评审要求衡量阶段结束的工作结果必须是实在的交付品在蓝梦大学官方网站及教学平台系统软件工程的各个开发阶段中的任务是否完成,应是透过任务活动中产生的交付品来表达的。而交付品必须是可交付的、非抽象的、实在的,并且可以通过用衡量或者度量的方法来判断是否真正地完成了具体的开发工作的事物。本工程中的任何阶段的结束,都应该有这样的实质性东西的完成作为象征或者标志。每个阶段都要进行对应阶段的评审工作在蓝梦大学官方网站及教学平台系统软件工程的软件生存周期的不同阶段衔接时都要进行对应阶段的评审工作,由工程经理组织相关人员召开阶段评审会,以确立本阶段的主要里程碑和本阶段的工作是否满足要求——某个阶段中被规定的所有工作任务都完成了,这个阶段才算真正结束,整个工程才可以进入到下一个阶段中去。工程的角色划分本工程的角色划分蓝梦大学官方网站及教学平台系统软件工程的开发团队主要是由“工程负责人〞、“分析设计人员〞、“后台程序员〞、“前台美工〞、“质量保证人员〞五个角色所构成。当然,允许一人兼任多个角色。其中的“工程负责人〞也就是工程经理,主要负责工程的人事协调、时间进度等安排,以及处理一些与工程相关的其它事宜。“分析设计人员〞主要负责工程的需求分析、筹划、设计。“后台程序员〞主要负责工程的代码编写、网站整合等环节的工作。“前台美工〞主要负责网站的界面设计、版面规划,并把握网站的整体风格和布局,并应用HTML5+CSS3+JS+JQuery等相关技术实现页面设计,最终编写出相关的静态HTML页面。“质量保证人员〞主要负责工程的测试、部署等环节的工作,并制定出本软件工程的质量保证方案和测试方案,编写相关的测试报告文档。为什么要进行角色分工角色划分是Web工程技术分散性特点的客观要求,因此在客观上就必须要进行角色分工。良好的分工结果还可以明确工作责任,最终保证了工程的质量。防止角色分工所可能带来的负效应角色分工所带来的负效应主要是增加了工程中团队成员之间的沟通、协调的本钱,这给工程带来一定的风险。所以工程经理的协调能力此时显得十分重要,后台程序开发人员和前台美工在工程开发的初期和后期,都必须要有充分的交流和合作,并按照设计人员的设计要求进行工程的开发实现。工程编程命名标准标准化编程的根本内涵没有规矩不能成方圆 在本蓝梦大学官方网站及教学平台系统软件工程系统的开发实现中不仅要满足系统需求的“功能〞和“非功能〞等方面的要求,也还应该要标准化地编程实现相关的程序代码,也就是要编程开发出一个“易读的〞、“易维护的〞、“易扩展〞、“可重用〞的系统程序——这包括HTML页面、CSS样式单、JavaScript脚本程序和后台Java程序等。 因此,可以认为标准化编程的根本内涵也就是要在“形式〞、“内容〞和“结构〞等方面遵守一定的“规那么〞。另外,为了使得工程的各个模块的代码在后期能够更顺利地整合,也必须要遵守一定的编程标准。标准化编程实现的必要性本节所述的标准化编程在“形式〞方面主要是指“命名标准〞、“代码风格〞等方面的标准,从而确保工程团队中各个成员的程序代码对外具有一致的编码标准和风格,而不至于出现“百花齐放〞式的“缤纷多彩〞的结果。而标准化编程在“内容〞上的标准内涵那么更广泛,松耦合编程、高性能编程、高质量编程、可靠性编程、一致性编程等方面;程序“结构〞上的标准内涵那么主要是指“分层分块〞和“封装隔离〞等方面。良好的命名标准无论在工程开发还是产品维护上都起到了至关重要的作用,它也是开发人员之间良好沟通的桥梁。统一源代码开发工具源程序的字符集编码 为了保证在开发过程中的代码共享,同时也使得后期的系统各个模块的代码能够顺利地进行总体装配和整合,需要统一源代码开发工具源程序的字符集编码为UTF-8。如下列图为在MyEclipse开发工具中设置源代码编辑器内的字符集编码的截图。所有的HTML页面中的字符集也必须要采用UTF-8的编码格式,也就是在页面的<head>标签中应该有如下的<meta>标签:<meta-equiv="Content-Type"content="text/html;charset=utf-8"/>而所有的JSP页面中也必须要有如下的page指令:<%@pagepageEncoding="utf-8"%>程序代码命名标准的具体要求程序代码命名标准1、良好的命名标准应该具有可描述性以及唯一性由于程序不仅仅是交给机器运行的,也是让人读的。为了提高系统中的代码的可读性和有利于工程后期的系统维护,特制定出如下的编程命名标准〔CodeConventions〕——主要本着描述性以及唯一性这两大特征来命名。因为如果本工程相关的所有开发人员都遵循统一的、鲜明的一套编程实现风格,那么可以让工程的协作者、后继者和开发人员本身一目了然,在很短的时间内就能够看清楚工程中程序的结构,理解设计的思路,从而不仅能够大大地提高程序代码的可读性、可重用性,也能够提高整个系统的健壮性、可移植性和可维护性。2、早期比拟著名的命名规那么当推“匈牙利〞命名法该命名规那么的主要思想是“在变量和函数名中参加前缀以增进人们对程序的理解〞。例如,在C++语言的程序开发中,如果应用“匈牙利〞命名法那么需要将所有的字符变量均以ch为前缀,假设是指针变量那么要追加前缀p。如果一个变量由ppch开头,那么说明它是指向字符指针的指针。但“匈牙利〞命名法最大的缺点是烦琐,例如如下的C/C++或者Java程序中的变量:inti,j,k;floatx,y,z;倘假设采用“匈牙利〞命名规那么,那么应当写成如下形式,如此烦琐的程序中各种符号的命名会让绝大多数程序员无法忍受:intiI,iJ,ik; //前缀i表示int类型floatfX,fY,fZ;//前缀f表示float类型3、Sun公司所倡导的Java语言程序命名标准为了标准Java及J2EE等相关程序中的各种符合的命名标准,Sun公司在早期也发布了一套Java语言及J2EE程序的命名标准。〔1〕J2SE相关的程序命名标准在://oracle/technetwork/java/codeconvtoc-136057.html页面中给出了详细的标准说明,如下为页面局部截图:〔2〕J2EE相关的程序命名标准在://oracle/technetwork/articles/javase/code-convention-138726.html页面中给出了详细的标准说明,如下为页面局部截图:本工程程序代码具体的命名标准由于蓝梦大学官方网站及教学平台系统软件工程系统最终在开发实现中应用J2EE技术平台,因此在程序中的各个相关符号命名规那么方面尽可能遵守Sun公司所倡导的J2SE和J2EE程序命名标准,而在成员属性变量方面可以应用“匈牙利〞命名法。具体的细节说明可以参见如下的文档资料。1、程序包名采用小写字母的反域名和工程名、模块名等分段命名 com.px1987.dao、com.px1987.service等形式。2、类名和接口名遵守“见名知意〞〔1〕采用“见名知意〞的短语,每个单词的首字母都应该大写的“驼峰制〞形式。如:StudentInfoManageService、StudentInfoManageCRUD等形式。〔2〕而对于接口和接口的实现类,可以在名称方面体系关联性,如StudentInfoManage_Interface、StudentInfoManage_Implement之间的关系。3、类中的成员属性或者成员对象变量 采用“见名知意〞的“单个名词〞或者“名词短语〞等形式,首字母小写,其后的每个单词的首字母也都应该大写的“驼峰制〞形式。如:stidentAge、studentInfoManageInstance等形式。4、类中的成员方法〔1〕采用“见名知意〞的“动名词〞短语混合构成首字母小写,其后的每个单词的首字母都应该大写的“驼峰制〞形式。如:doStudentLogin、doStudentRegister、doUpdateStudentPassWord等形式。〔2〕本工程的局部功能方法的推荐命名要求“新增〞功能类的方法以add开头,“更新〞功能类的方法以update开头,“删除〞类的功能方法以delete开头,“查询〞类的功能方法以query开头。get开头的方法名仅仅用于获取实体类中的成员属性值。5、符号常量采用“见名知意〞的多个单词或缩写组合而成,所有字母都要求大写,并且以“_〞连接。如:MENU_ITEM_ONE、MENU_ITEM_TWO。6、方法内的局部变量和方法形参变量 采用“见名知意〞的“单个名词〞或者“名词短语〞等形式,首字母小写,其后的每个单词的首字母都应该大写的“驼峰制〞形式。如:stidentAge、studentInfoManageInstance等形式。 但对于根本数据类型的变量和字符串,最好在名称上能够反映出它的数据类型——微软在上世纪90年代曾提出过“匈牙利命名法〞。如iStudentAge、sStudentName、cStudentSex、fStudentScore等,推荐的类型简化符号如下:b代表bytec代表chard代表doublee代表Exceptionf代表floati代表整数l代表longo代表Objects代表String7、应用Java语言自身风格的注释,而不要应用C/C++风格的注释〔1〕应用Java语言自身风格的注释尽管在Java程序中可以应用C/C++风格的注释,但本系统中建议应用Java语言自身风格的注释,从而可以创立出工程的JavaDocAPI文档和实时动态显示出目标的注释信息。〔2〕注释语言应该简明易懂,不要晦涩难懂形同天书,令阅读者反复斟酌依然不明其意 应该要对方法的各个参数和返回值进行注释说明,可以参见上面的注释例如。程序代码命名标准例如packagecom.bluedream.service;importjava.util.Date;/***实现对学生信息进行管理的业务效劳功能类**@authorXXXX,20XX年XX月XX日*@version1.0**/publicclassStudentInfoManageService{ /** *类中的成员属性或者成员对象变量 */ privateintstudentAge; privateDatebirthDate; /** *类中的符号常量 */ publicstaticintCOURSE_INDEX=1; publicStudentInfoManageService(){ } /** *doStudentLogin方法提供对学生登录等功能处理的效劳 * *@paramsLoginName登录帐号 *@paramsLoginPassWord登录密码 *@return登录的结果状态,返回true代表登录成功,返回false那么代表登录失败 */ publicbooleandoStudentLogin(StringsLoginName,StringsLoginPassWord){ /** *方法内的局部变量和方法形参变量 */ booleanloginResult=false; returnloginResult; }}程序代码风格标准的具体要求保持良好的程序代码风格的重要性已经不只是个美观问题,风格良好的程序代码更不容易出错和更加健壮、更容易维护。良好的程序代码风格的原那么是:简明、易读和无二义性。代码行在排版格式上的风格要求1、层次缩进代码所谓缩进,是通过在每一行的代码左端空出一局部长度,更加清晰地从外观上表达出程序的层次结构。当源程序代码行数越来越多时,程序行在竖直方向上将会“参差不齐〞,此时可以在EclipseIDE中采用“Ctrl+I〞自动对齐和层次缩进代码〔Indent〕。缩进时,应将内部结构中的所有语句都统一向右退一格,大括号那么与原来的语句保持在同一个垂直位置上。每层缩进的长度应该一致,通常为一个制表符宽或四个空格。2、自动格式化程序代码当开发人员感觉程序代码比拟“混乱〞时,在EclipseIDE中可以采用Ctrl+Shilft+F重新格式化代码,“清洁〞自己“乱疯疯〞的程序。3、对相对独立的程序代码块应该要合理地运用空行隔开一个空行意味着不同的功能块的分隔,这有利于阅读和理解。将大段的代码经过整理,分为功能相对独立的一段又一段以防止代码过于拥挤,并且在每段的前端编写一段注释。尽可能除掉冗余的代码行1、尽可能去除没有用到的类和接口的import引用语句在EclipseIDE中可以采用Ctrl+Shilft+O重新导入在本程序中所需要的各个import引用语句而到达取消无用的import引用语句的结果。2、对重复的程序代码段要应用重构〔Refactor〕的技术,封装到某个private形式的方法中 在Eclipse开发工具中选中相关的程序代码段,然后选择“Refactor〞菜单内的“ExtractMethod〞子菜单工程,如下列图所示:Eclipse工具会弹出方法定义的对话框,然后定义方法的名称和访问控制选项、异常抛出等定义。3、减少if、for等语句块内的代码数量,比拟多的代码同样也应该要封装到某个private形式的方法中,从而减少代码中的“括号〞的不匹配性错误4、随时关注Eclipse工具对源代码所提出的各个“警告〞信息,并改良相关的代码 “警告〞并不是“错误〞,尽管不是必须要修改的,但尽可能关注和修正这些“警告〞信息所涉及的可能“不标准〞的代码。合理地组织程序代码行1、类中的成员属性统一在程序类代码的前端按用途分组排列定义、方法内的局部变量集中在方法的前端定义 “数据〞和“代码〞分开编写,而不要“数据〞和“代码〞混合编写。早期的Pascal语言强烈地推荐采用“数据〞和“代码〞别离编写的代码风格,Java等语言那么对此风格相对“宽容〞。2、拆分大的程序类、大的方法而不要编程出“复合〞的方法代码〔1〕OOP中倡导“类的职责单一〞、方法的“功能独立性〞因此需要拆分大的程序类、大的方法而不要编程出“复合功能〞的方法代码。〔2〕将相对独立的代码段落封装为一个函数可以充分应用IDE开发工具中所提供的“Refactor〞菜单中所提供的各个方面的功能,快速和方便地实现程序的“拆分〞和“合并〞。3、尽可能不要采用内部〔内嵌〕类特别是匿名内部类因为内部类不仅会降低程序代码的可读性,而且也会导致源程序在编译后将会产生出许多“稀稀落落〞的*.class小文件,影响JVM对类文件的加载性能。 ActionListeneractionListenerEvent=newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ }};标准化代码中的注释风格必要性代码注释是架起程序设计者与程序阅读者之间的通信桥梁,最大限度的提高团队开发合作效率。也是程序代码可维护性的重要环节之一。所以我们不是为写注释而写注释。根本原那么〔1〕注释形式统一在整个应用程序中,使用具有一致的标点和结构的样式来构造注释。如果在其它工程中发现它们的注释标准与这份文档不同,按照这份标准写代码,不要试图在既成的标准系统中引入新的标准。〔2〕注释内容准确简洁内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有害。3、需要添加注释的根本元素〔1〕类〔接口〕的注释〔2〕构造函数的注释〔3〕方法的注释〔4〕全局变量的注释〔5〕字段/属性的注释4、在如下的特殊元素处必须添加注释〔1〕典型算法必须有注释〔2〕在代码不明晰处必须有注释〔3〕在代码修改处加上修改标识的注释〔4〕在循环和逻辑分支组成的代码中加注释〔5〕为他人提供的接口必须加详细注释5、标准类和接口等程序的注释信息〔1〕对类、接口等代码的注释要求对类和接口的开始处有该类和接口文件的用途描述,在总体注释的信息中一般要包括日期、作者、版本号等信息,并保持整个工程采用统一和一致的注释风格。在类或者接口中,需要对一些不易理解的成员属性变量或方法加注释说明,其中难懂的代码段也要有注解说明,如下为一个例如。〔2〕可以设置开发工具的代码编写模板简化注释选择MyEclipse主菜单中的“Window>>Preferences>>Java>>CodeStyle>>CodeTemplates>>Comments〞中,可以修改相关的设置。 通过以上的设定,使得在创立类或接口时,MyEclipse工具将自动为类或者接口编写相关的注释,然后在这个根底上再进行少量的修改,可以大大提高注释编写的效率。6、充分应用注释信息提高源代码的可理解性一般应该要对系统中的功能代码段、业务逻辑规那么、不容易理解类变量的含义、核心业务方法和Util工具方法等进行详细的注释,使得上层的应用人员能够更方便和清晰地应用自己的代码,减少代码中的“歧义〞。7、保持整个系统各个模块的源代码注释风格的一致性 在编程每个类的实现代码时,要求对每个类中的核心功能方法、重要的变量和成员属性对象等提供注释文字,详细地说明该方法的主要功能、参数的类型和含义、返回值的规那么,与本方法关联的其它方法。8、对抽象类和接口需要列出子类或实现类对工程中的所有的抽象类和接口,需要在类和接口的注释区域中的@author后面增加@see注释,将该接口或抽象类的所有子类或实现类列出,方便寻找接口或抽象类的实现类。提高代码的可维护性1、标准资源文件的目录定位 在程序代码中不能将资源文件〔如日志文件、属性文件、配置文件等〕的目录固定为某个特定的目录名,而应该要以工程的类目录〔classPath〕作为相对目录定位——比方资源将文件放到与类相同的目录中,在Java程序代码中可以使用ClassLoader.getResource()方法来读取。2、所有可变化的参数都定义在配置文件中 不能在代码中将可变化的工作参数〔如数据库连接的参数等〕直接定义在程序代码中,而必须要在外部配置文件中定义〔并且在配置文件中添加必要的注释说明文字〕,在代码中动态获得,从而为系统平台在最终部署和使用时带来更多的灵活性。3、优化形如下面的if-else类型的代码〔1〕不良好的if-else类型的代码intsomeVal;if("typeNameOne".equals(someTypeName)){ someVal=1;}elseif("typeNameTwo".equals(someTypeName)){someVal=2;}elseif("typeNameThree".equals(someTypeName)){someVal=3;}〔2〕优化后的实现代码MaptypeNameMap=newHashMap();typeNameMap.put("typeNameOne",newInteger(1));typeNameMap.put("typeNameTwo",newInteger(2));typeNameMap.put("typeNameThree",newInteger(3));intsomeVal=((Integer)typeNameMap.get(someTypeName)).intValue();4、优化形如下面的if-else类型的代码〔1〕不良好的if-else类型的代码if("typeNameOne".equals(someTypeName)){ someClassOneObject.doSomeActionOne();}elseif("typeNameTwo".equals(someTypeName)){someClassTwoObject.doSomeActionTwo();}elseif("typeNameThree".equals(someTypeName)){someClassThreeObject.doSomeActionThree();}〔2〕优化后的实现代码packagecom.bluedream;publicclassSomeClassOne{ publicvoiddoSomeActionOne(){ }}packagecom.bluedream;publicclassSomeClassTwo{ publicvoiddoSomeActionTwo(){ System.out.println("SomeClassTwo.doSomeActionTwo方法已经执行"); }}packagecom.bluedream;publicclassSomeClassThree{ publicvoiddoSomeActionThree(){ System.out.println("SomeClassThree.doSomeActionThree方法已经执行"); }}packagecom.bluedream;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.HashMap;importjava.util.Map;publicclassTest{ publicstaticvoidmain(String[]args){ MaptypeName_ClassNameMap=newHashMap(); typeName_ClassNameMap.put("typeNameOne","SomeClassOne"); typeName_ClassNameMap.put("typeNameTwo","SomeClassTwo"); typeName_ClassNameMap.put("typeNameThree","SomeClassThree"); MaptypeName_MethodNameMap=newHashMap(); typeName_MethodNameMap.put("typeNameOne","doSomeActionOne"); typeName_MethodNameMap.put("typeNameTwo","doSomeActionTwo"); typeName_MethodNameMap.put("typeNameThree","doSomeActionThree"); StringsomeTypeName="typeNameTwo"; ClasssomeClassName=null; MethodsomeMethodName=null; try{ someClassName=Class.forName("com.px1987."+(String)typeName_ClassNameMap.get(someTypeName)); }catch(ClassNotFoundExceptione){ e.printStackTrace(); } try{ someMethodName=someClassName.getMethod((String)typeName_MethodNameMap.get(someTypeName),null); }catch(NoSuchMethodExceptione){ e.printStackTrace(); }catch(SecurityExceptione){ e.printStackTrace(); } try{ someMethodName.invoke(someClassName.newInstance(),null); }catch(IllegalAccessExceptione){ e.printStackTrace(); }catch(IllegalArgumentExceptione){ e.printStackTrace(); }catch(InvocationTargetExceptione){ e.printStackTrace(); }catch(InstantiationExceptione){ e.printStackTrace(); } }}5、优化形如下面的if-else类型的代码〔1〕不良好的if-else类型的代码if(someTypeName.equals("typeNameOne")){}elseif(someTypeName.equals("typeNameTwo")){}elseif(someTypeName.equals("typeNameThree")){}〔2〕优化后的实现代码if("typeNameOne".equals(someTypeName)){}elseif("typeNameTwo".equals(someTypeName)){}elseif("typeNameThree".equals(someTypeName)){}6、系统中的JSP表现层页面编程实现的要求〔1〕所有的JSP页面都必须要功能模块化,并分类存放在不同的目录中。〔2〕在JSP页面中显示相关的数据内容时,必须要应用EL表达式或者相关的标签,而不能应用JSP的Java脚本代码。〔3〕JSP页面上尽量不要出现Java脚本等其他功能性的语句,所有的功能处理和逻辑处理的程序代码都必须要放在相关的Java程序类中。7、系统中的控制处理层Action程序类的编程实现要求〔1〕所有的Action类都必须放到相关的程序包目录中,程序包名按照编程标准定义。〔2〕每个Action类都要在struts.xml文件中进行配置,为了方便团队工作和防止struts.xml文件过于臃肿,各个开发人员需要将与自身相关的Action类配置内容放到独立的xml配置文件中,最后在struts.xml文件中应用<include>标签进行包含。〔3〕所有的Action程序类都应该继承自ActionSupport基类,以获得Struts2框架中内带的功能以简化编码实现。8、系统中的数据访问层编程实现的要求〔1〕系统中的JDBC数据库连接必须要采用数据库连接池的连接方式实现〔2〕用JDBCAPI中的PreparedStatement类处理一般功能的SQL语句,而用CallableStatement类处理存储过程的调用语句。〔3〕需要为系统中的每个数据库表提供对应的DAO组件接口和对应的功能实现类,在该实现类中提供对相关数据库表中的数据进行“增、删、改、查〞的功能操作。〔4〕DAO接口中的所有处理查询的功能方法都必须要返回一个实体对象或者包含有多个实体对象的集合对象。〔5〕DAO组件实现类中的相关方法涉及SQL语句时,尽量使用带参数的SQL语句以简化相关的功能方法实现代码。程序包及配置文件命名标准系统程序包命名标准为了有利于系统的开发实现和方便后期的代码维护、升级,现制定出本系统中的各个程序包的如下命名标准。系统的WebContext名为px1987 本工程在MyEclipse开发工具中的Web工程名称为px1987,开发过程中的WebContext名为px1987,所应用的J2EE版本为及J2EE5.0或者更高版的系统。系统中的各个Util组件程序包命名标准1、系统中的根层次的程序包根层次的程序包名称为com.bluedream。2、系统中的各个Util组件程序包统一命名为com.bluedream.util,在com.bluedream.util程序包中存放整个系统中的各个模块和子系统全局通用的组件接口〔程序包名称为er〕和相关的实现类〔程序包名称为com.bluedream.util.imple〕、Util工具类〔程序包名称为com.bluedream.util.tool〕,包括系统的数据库连接池组件类。3、各个子系统相关的符号常量接口定义 为了提高代码的可读性,在源程序中不直接出现有特定含义的常量值,而转换为符号常量。每个子系统程序中所需要的符号常量都分别定义在本子系统相关的符号常量接口中。然后将所有的符号常量接口都存放在com.bluedream.util.constant程序包中。符号常量接口定义所在的程序包命名为com.bluedream.util.constant。系统配置文件命名标准与Struts2框架相关的系统配置文件1、Struts2框架的系统配置文件为struts.xml 由于本工程在Web框架方面选用目前比拟通用的MVC框架——Struts2框架,因此需要对其中的系统配置文件struts.xml进行标准定义。在struts.xml文件中主要存放整个系统中的全局的配置定义工程,而与各个子系统相关的配置工程那么分别存放在各个子系统的配置文件中。然后在struts.xml文件中分别级联包含下面的各个子系统的配置文件,从而到达将各个子系统的Action配置相互隔离。下面为配置文件的例如:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"":///dtds/struts-2.1.dtd"><struts> <includefile="struts-default.xml"/><constantname="struts.i18n.encoding"value="utf-8"/><constantname="struts.multipart.saveDir"value="/sqtshTempPath"/> <constantname="struts.multipart.maxSize"value="104857600"/><packagename="globalPackage"extends="struts-default"></package><includefile="customer.xml"/><includefile="content.xml"/><includefile="member.xml"/><includefile="maintain.xml"/><includefile="shopping.xml"/><includefile="press.xml"/></struts> 在上面的struts.xml文件配置例如中,应用<include>标签分别包含各个子配置文件customer.xml、content.xml、member.xml、maintain.xml、shopping.xml和press.xml等。部署Struts2前端控制器的系统配置工程在工程的web.xml文件中添加Struts2的前端控制器StrutsPrepareAndExecuteFilter组件的部署工程,如下为配置例如。<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher></filter-mapping>JDBC数据库连接池工作参数的系统配置 在工程的classPath〔WEB-INF/classes〕目录下存放有JDBC数据库连接及连接池参数系统配置的文件systemCperties,在该配置文件中提供有JDBC数据库连接及连接池参数,如下列图为局部配置参数的定义——详细的配置内容请参考工程中的最终实际配置文件。第3方的各个系统Jar包文件添加Struts2框架相关的系统Jar包文件根据在工程最终开发实现中所实际应用的Struts2框架版本号,添加对应版本的系统Jar包文件。比方Struts版本主要为如下的9个文件:1、2、3、4、5、6、7、8、9、。添加JSON-lib系统库Jar包文件JSON-lib系统库不仅可以实现将JavaBean、集合对象等形式的Java对象或者XML数据转换成JSON格式的字符串,也还能够把JSON格式的字符串转换回成JavaBean等对象。从而方便地实现Java对象和JSON字符串之间的序列化和反序列化,最终实现在AJAX技术的应用程序中实现客户和效劳器端之间的数据交换。下面为各个系统库文件的功能说明:〔1〕JSON-lib系统库〔2〕jakartacommons-lang系统库〔在Struts2框架中已经包含

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论