版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE29目录1. 绪论 31.1选题背景 31.2论文结构的安排 42.系统OA的分析 52.1系统的可行性分析 52.2系统的设计思想 52.3系统功能分析 63.系统结构设计 63.1OA系统的功能模块 63.1.1系统信息模块结构图 73.2对象与数据库的映射 74.系统开发技术介绍 144.1Struts,Hibernate,Spring的来龙去脉 144.2选择MySQL数据库的好处 175.系统各模块的设计与实现 185.1系统基本信息模块 195.1.1系统首页介绍 195.1.2我的通信录的实现 195.1.3新闻管理功能的实现 205.1.4公告通知功能的实现 215.1.5会议通知功能的实现 215.1.6资产管理功能的实现 225.1.7车辆管理功能的实现 225.1.8图书管理功能的实现 235.1.9邮件服务功能的实现 245.2系统基本信息功能重要实现方法 245.2.1页面分页 245.2.2系统异常处理 275.2.3邮件模块发件箱的发邮件功能的实现 276.设计体会 27致谢 28参考文献 28网络办公自动化系统的设计与实现 ——系统信息模块的开发邢华进湛江师范学院信息科学与技术学院,湛江,524048摘要:今天的世界是一个信息和网络高速发展的世界, 随着网络的高速发展,网络式的办公必然会成为办公的趋势。只要拥有一台计算机、浏览器、Internet连接,就能通过网络办公平台完成各式各样工作,享受到无纸办公带来的好处。本文从理论和实践出发,对网络办公自动化系统(WEB-OA)进行了深入的探讨。首先系统地介绍了选题的背景,然后从构建一个网络办公自动化系统(WEB-OA)入手,对系统的需求进行了分析,接着对系统的设计思想、设计目标与系统的整体结构进行了详细的介绍,在此基础上将理论知识与开发技术运用到系统的实现过程中,完成了网络办公自动化系统(WEB-OA)的构建过程。关键词:网络办公自动化;Struts;Hibernate;Spring;JMailDesignandimplementofOfficeAutomation——DevelopmentofSystemInformationModuleHuajin,xingInformationScienceandTechnologySchool,ZhanjiangNormalCollege,Zhanjiang,524048ChinaAbstract:Today'sworldisarapiddevelopmentofinformationandnetworksoftheworld,withtherapiddevelopmentofnetwork,network-basedofficewilldefinitelybecomethetrendofoffice.Aslongastheownershipofacomputer,browser,Internetconnection,youcanachievethroughthenetworkplatformforallkindsofofficework,toenjoywithoutthebenefitsofpaperlessoffice.Inthispaper,startingfromthetheoryandpractice,officeautomationsystemonthenetwork(WEB-OA)conductedanin-depthstudy.Firstofall,thesystematicintroductionofthebackgroundofthesubjects,andthenbuildanetworkfromtheofficeautomationsystem(WEB-OA)approachtosystemsanalysis,andthenthoughtthedesignofthesystemdesignobjectivesandtheoverallstructureofthesystemindetailtheintroduction,inthisbasedontheoreticalknowledgeanddevelopmentoftechnologyappliedtothesystemimplementationprocess,achieveanetworkofofficeautomationsystems(WEB-OA)ofthebuildingprocess.Keywords:OfficeAutomationonNetwork;Struts;Hibernate;Spring;JMail绪论1.1a选题背景办公自动化(OfficeAutomation,简称OA)是将现代化办公和计算机网络功能结合起来的一种新型的办公方式,是当前新技术革命中一个非常活跃和具有很强生命力的技术应用领域,是信息化社会的产物。随着网络的高速发展,各种先进的网络办公自动化系统如雨后春笋般出现。为适应瞬息万变、竞争激烈的时代要求,各办公机构亦纷纷引入办公自动化系统。一些大型企业集团正致力实现高层次的网络办公自动化,这将为他们节省大量的人力资源,节省大量的办公费用,大幅度提高办公效率,使办公业务从事务层次进入管理层,甚至辅助决策层,将办公和管理提高到一个崭新的水平。
办公自动化就是用信息技术把办公过程电子化、数字化,就是要创造一个集成的办公环境,使所有的办公人员都在同一个桌面环境下一起工作。具体来说,主要实现下面七个方面的功能:
(1)建立内部的通信平台。建立组织内部的邮件系统,使组织内部的通信和信息交流快捷通畅。
(2)建立信息发布的平台。在内部建立一个有效的信息发布和交流的场所,例如电子公告、电子论坛、电子刊物,使内部的新闻简报、公告事项等能够在企业或机关内部员工之间得到广泛的传播,使员工能够了解单位的发展动态。
(3)实现工作流程的自动化。这牵涉到流转过程的实时监控、跟踪,解决多岗位、多部门之间的协同工作问题,实现高效率的协作。我们都知道,各个单位都存在着大量流程化的工作,例如公文的处理、收发文、各种审批、请示、汇报等,都是一些流程化的工作,通过实现工作流程的自动化,就可以规范各项工作,提高单位协同工作的效率。
(4)实现文档管理的自动化。可使各类文档(包括各种文件、知识、信息)能够按权限进行保存、共享和使用,并有一个方便的查找手段。每个单位都会有大量的文档,在手工办公的情况下这些文档都保存在每个人的文件柜里。因此,文档的保存、共享、使用和再利用是十分困难的。另外,在手工办公的情况下文档的检索存在非常大的难度。文档多了,需要什么东西不能及时找到,甚至找不到。办公自动化使各种文档实现电子化,通过电子文件柜的形式实现文档的保管,按权限进行使用和共享。实现办公自动化以后,比如说,某个单位来了一个新员工,只要管理员给他分配一个身份帐号,给他一个口令,他自己上网就可以看到这个单位积累下来的东西,规章制度、各种技术文件等等,只要他的身份符合权限可以阅览的范围,他自然而然都能看到,这样就减少了很多培训环节。
(5)辅助办公。它牵涉的内容比较多,像会议管理、车辆管理、物品管理、图书管理等与我们日常事务性的办公工作相结合的各种辅助办公,实现了这些辅助办公的自动化。
(6)信息集成。我们每一个单位,都存在大量的业务系统,如购销存、ERP等各种业务系统,企业的信息源往往都在这个业务系统里,办公自动化系统应该跟这些业务系统实现很好的集成,使相关的人员能够有效地获得整体的信息,提高整体的反应速度和决策能力。
(7)实现分布式办公。这就是要支持多分支机构、跨地域的办公模式以及移动办公。现在来讲,地域分布越来越广,移动办公和跨地域办公成为很迫切的一种需求。办公自动化还是一个企业与整个世界联系的渠道,企业的Intranet网络可以和Internet相联。一方面,企业的员工可以在Internet上查找有关的技术资料、市场行情,与现有或潜在的客户、合作伙伴联系;另一方面,其他企业可以通过Internet访问你对外发布的企业信息,如企业介绍、生产经营业绩、业务范围、产品/服务等信息。从而起到宣传介绍的作用。随着办公自动化的推广,越来越多的企业将通过自己的Intranet网络联接到Internet上,所以这种网上交流的潜力将非常巨大。
办公自动化已经成为企业界的共识。众多企业认识到应尽快进行办公自动化建设,并占据领先地位,将有助于保持竞争优势,使企业的发展形成良性循环。
为了顺应企业需要,抓住机遇,我们选择了网络办公自动化作为毕业设计的开发对象。
此网络办公自动化系统(WEB-OA)是杨云彬同学、刘桂平同学与我合作开发,其中我主要的工作是信息模块与系统部分界面。1.2论文结构的安排论文共分为七个部分,各部分的主要内容安排如下:绪论。介绍论文的选题背景、所做工作以及论文的结构安排。2)系统的需求分析。描述系统的开发可行性、设计思想以及系统的功能分析。
3)网络办公自动化系统结构设计。主要介绍系统的主要结构、对象与数据库的映射以及数据库连接与表的生成等。
4)系统开发技术选择。主要描述了Struts、Hibernate、Spring的来龙去脉和其他相应技术的比较、以及选择MySQL数据库的好处。5)系统各模块的设计与实现。这个章节为论文的重点部分,详细介绍了系统模块的设计与实现。
6)设计体会。叙述自己对完成整个毕业设计的心得体会。7)致谢。对在设计过程中给予自己帮助的人表达谢意。2.系统OA的分析2.1系统的可行性分析对系统可行性进行分析是系统规划的关键步骤,必须在可行性报告通过后,才可以进入实质性的应用分析阶段[1]。信息化是我国加快实现工业化和现代化建设的必然选择,自2001年底国家信息化领导小组做出启动国家电子政务工程的历史性重大举措以来,加快电子办公系统的建设进程,在推进部门管理观念与工作模式变革方面取得了一系列成绩。随着信息化步伐的加快与全球化进程的推进,时代给办公系统的建设工作提出了更高的要求。目前大部分机构使用的办公系统已不能完全适应社会发展的新形势,甚至在某些方面制约了机构工作效率的提高和整体形象的提升。一些大型企业集团(例如联想、海尔)正致力实现高层次的网络办公自动化,以进一步提高办事效率和工作透明度,更好地适应组织和管理现代化建设的要求,进而实现办公的自动化处理。从最初以大规模采用复印机等办公设备为标志的初级阶段,发展到今天以运用网络和计算机为标志的现阶段,OA对办公方式的改变和效率的提高起到了积极的促进作用。
开发网络办公系统的市场前景是广阔的。大型企业需要高层次的网络办公自动化,中小型企业存在一个很大的网络OA系统的需求,因此,开发OA是绝对可行的。2.2系统的设计思想本网络办公自动化系统(WEB-OA)—基于B/S网站架构模式构建,在功能上应能满足系统用户实现网络办公需求;在设计模式上应用框架进行开发,既便于系统功能的各种组合、修改和扩展,又便于未参与开发的技术人员补充和维护。
本系统主要考虑完成网络办公自动化的重要功能,包括个人办公、公文管理、公共信息、行政办公、消息管理、工作流程、组织管理、权限管理以及系统管理;系统管理员和系统的高级用户管理系统以及进行各项维护工作等。设计系统时,强调科学的、客观的处理方法的应用,并且系统设计要符合实际情况。只有系统的工作方法、管理模式和处理过程是确定的,系统才能够稳定协调地工作。2.3系统功能分析该系统主要实现如下目标:采用B/S模式,Struts,Hibernate,Spring三层架构,实现真正的页面显现层的独立,数据库持久层的独立、业务逻辑层的集中管理,真正实现原代码的高度重用性、扩展性以及可维护性。现代化的设计:程序设计充分考虑使用方便和维护方便,本系统采用面向对象思想、架构式开发。友好的操作界面:系统界面友好、简洁,导航清晰,操作起来简单方便。我的桌面:对与我相关的信息进行快捷连接。通信录管理:快捷管理自己的通信录。公共信息:对本系统的公共的信息进行连接。行政办公:实现快速的个人办公连接。邮件管理:实现个人邮件的管理。3.系统结构设计3.1OA系统的功能模块系统的运行以用户登陆页面为开始,在用户输入正确用户名和密码以后,就可以进入系统的主界面,在这里,可以查看我的办公桌,首页可以浏览到本系统的最新公告、新闻以及待我审批的公文、我的邮件和会议通知等并且通过系统的工具栏可以进行相关功能模块的具体操作。3.1.1系统信息模块结构图公共信息公共信息行政办公1、我的办公桌2、我的通信录3、会议通知4、我的邮件5、我的个人信息6、我借的图书邮件管理1、收件箱2、发件箱3、垃圾箱1、公告通知2、新闻报告图3.1系统信息模块结构图1、会议管理2、资产管理3、车辆管理4、图书管理系统信息模块结构我的办公桌3.2对象与数据库的映射根据系统所采用的技术,先介绍ORM(Object/RelationMapping)。ORM,是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射[2]。
下面来介绍一下Web开发流行的ORM框架--Hibernate。Hibernate是一个流行的开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB(EnterpriseJavaBeans)的J2EE架构中取代CMP(Container-ManagedPersistence),完成数据持久化的重任[3]。
因此采用这种ORM框架可以抛开数据库表的设计,只需要考虑系统对象的设计,根据Hibernate的映射文件来完成对象与数据库表的映射,因为一个对象可以映射成数据库中的一个表,对象的一个属性就是对应表中的一个字段。因此这种方式下,映射文件的生成就显得很重要了,生成映射文件我们采用一种自动化的框架--Xdoclet。Xdoclet可以通过在java源代码中的一些特殊的注释信息,自动为你生成配置文件、源代码等等,不过Xdoclet不是单独可以运行的工具,它可以与其它工具一起配合运行,这里我们采用Ant来结合Xdoclet来自动生成Hibernate的映射文件。Ant是一个构建工具,它可以帮助我们将项目开发过程中需要完成的各种步骤组织起来,通过一个简易的方式来构建整个项目。
根据系统需要设计有以下对象:新闻News,公告Notice,通信录CommRecord,通信录组Groud,资产Asset,车辆Car,图书Book,图书类型BookType,会议Meeting,会议室MeetingRoom,会议室使用MeetingRoomApply,由于系统设计对象很多,而且对象与数据库的映射的原理都相同,我们就只列举一对象与数据库表映射的例子,如下:新闻报告对象:News.javapackagecom.xyl.oa.model;importjava.util.Date;/***新闻*@authorx_hj_xfn*@hibernate.classtable="t_News"*/publicclassNews{ /** *@hibernate.id * generator-class="native" */ privateintid; /** *标题 *@perty */ privateStringtitle; /** *新闻内容 *@perty * type="text" */ privateStringcontext; /** *时间 *@perty */ privateDatedate; /** *来源 *@perty */ privateStringauthor; /** *发布人 *@hibernate.many-to-one */ privateUsersender;}通过Xdoclet在Ant构建器自动生成News.hbm.xml文件:<?xmlversion="1.0"encoding="ISO-8859-1"?><!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"/hibernate-mapping-3.0.dtd"><hibernate-mapping><classtable="t_News"name="com.xyl.oa.model.News"><idname="id"><generatorclass="native"/></id><propertyname="title"/><propertyname="context"type="text"/><propertyname="date"/><propertyname="author"/><many-to-onename="sender"/></class></hibernate-mapping>hibernate配置文件(hibernate.cfg.xml)中配置与数据库表关联<?xmlversion="1.0"encoding="ISO-8859-1"?><!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="hibernate.connection.url">jdbc:mysql:///oa</property><propertyname="hibernate.connection.username">root</property><propertyname="hibernate.connection.password">yybryan</property><propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><propertyname="hibernate.show_sql">true</property><propertyname="hibernate.hbm2ddl.auto">update</property> <mappingresource="com/xyl/oa/model/News.hbm.xml"/></session-factory></hibernate-configuration>运行项目,即可自动在MySql数据库平台的oa数据库中生成News表:其它数据库表的设计:表3-1公告通知表(t_Notice.frm)字段含义字段名称类型KeyNull默认记录号Idint(11)PRINoNULL公告标题Titlevarchar(255)NONULL公告内容contextText是NULL发布时间sendDatedatetime是NULL表3-2会议表(t_Meeting.frm)字段含义字段名称类型KeyNull默认记录号Idint(11)PRINoNULL会议标题Titlevarchar(255)NONULL会议内容decriptionText是NULL发布时间datedatetime是NULL会议室meetRoomInt(11)NONULL接收人receiverint(11)是NULL表3-3会议室表(t_MeetingRoom.frm)字段含义字段名称类型KeyNull默认记录号Idint(11)PRINoNULL会议室标识snvarchar(255)UNINONULL位置Positionvarchar(255)是NULL备注Descriptionvarchar(255)是NULL表3-4资产(t_Asset.frm)字段含义字段名称类型KeyNull默认记录号Idint(11)PRINoNULL资产标识assetSnvarchar(255)NONULL资产Namevarchar(255)NONULL型号Modelvarchar(255)是NULL厂商Facturervarchar(255)NONULL资产性质qualityvarchar(255)是NULL资产价值worthInt(11)是NULL出厂日期dateFactorydatetime是NULL购买日期buyDatedatetime是NULL保管员personInt(11)是NULL登记日期registerDatetime是NULL备注remarkVarchar(255)是NULL属于部门orgInt(11)是NULL表3-5车辆(t_car.frm)字段含义字段名称类型KeyNull默认记录号Idint(11)PRINoNULL车牌号carNOvarchar(255)NONULL品牌brandvarchar(255)NONULL型号Modelvarchar(255)是NULL厂商Facturervarchar(255)NONULL联系人contactervarchar(255)是NULL购买价值worthInt(11)是NULL出厂日期dateFactorydatetime是NULL购买日期buyDatedatetime是NULL维修站电话facturerPhoneVarchar(255)是NULL登记日期registerDatetime是NULL备注remarkVarchar(255)是NULL维修站stationVarchar(255)是NULL维修站联系人stationerVarchar(255)是NULL驾驶员PilotVarchar(255)是NULL表3-6图书表(t_book.frm)字段含义字段名称类型KeyNull默认记录号Idint(11)PRINoNULL书籍编号Snvarchar(255)UNINONULL借阅室RoomVarchar(255)是NULL作者AuthorVarchar(255)是NULL出版社PresserVarchar(255)是NULL是否已借出Borrowedbit(1)NONULL登记时间DateDatetime是NULL类型typeInt(11)MULNONULL备注decriptionVarchar(255)是NULL表3-7图书类型(t_bookTYPE.frm)字段含义字段名称类型KeyNull默认记录号Idint(11)PRINoNULL类型namevarchar(255)UNINONULL表3-8借书表(t_borrowbook.frm)字段含义字段名称类型KeyNull默认记录号Idint(11)PRINoNULL类型BookInt(11)MULNONULL借书人BorrowerInt(11)MulNONULL时间TimeDatetimeNULL表3-9通信录(t_commRecord.frm)字段含义字段名称类型KeyNull默认记录号Idint(11)PRINoNULL联系人personNamevarchar(255)NONULL性别Sexvarchar(255)是NULL家庭电话Phonevarchar(255)是NULL手机Mobilevarchar(255)是NULL地址Addressvarchar(255)是NULL所属组Groudvarchar(255)是NULLQQQQvarchar(255)是NULLEmileEmilevarchar(255)是NULL4.系统开发技术介绍本系统在开发技术上采用了Struts+Hibernate+Spring集成模式,MySQL作为数据库,下面介绍Struts、Hibernate、Spring和MySQL的情况。4.1Struts,Hibernate,Spring的来龙去脉Struts最早是作为ApacheJakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages、Servlet、标签库以及面向对象的技术水准。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架,这个框架之所以叫"Struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑,这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用Struts为业务应用的每一层提供支持。它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间[4]。
由于Hibernate在"3.2对象与数据库的映射"中已经介绍过,这里不再讲述。
Spring是一个开源框架,它由RodJohnson创建,它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益,它的设计目的是:解决企业应用开发的复杂性,主要功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能,简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架[5]。
JSTL(JSPStandardTagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。由四个定制标记库(core、format、xml和sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。core标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作URL的标记。顾名思义,format标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行JSP页面的国际化。xml库包含一些标记,这些标记用来操作通过XML表示的数据,而sql库定义了用来查询关系数据库的操作[6]。JSTL的优点:在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。简化了JSP和WEB应用程序的开发。以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet代码的程序。在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。允许JSP设计工具与WEB应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。4.2SSH(Struts+Spring+Hibernate)的优势典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层(数据持久层)[7]。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。
表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO(DataAccessObject)层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。
DAO层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。PO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。
不可否认,对于简单的应用,采用ASP或者PHP的开发效率比采用J2EE框架的开发效率要高。甚至有人会觉得:这种分层的结构,比一般采用JSP+Servlet的系统开发效率还要低,下面用几个角度来阐述这个问题:
1)开发效率:软件工程是个特殊的行业,不同于传统的工业,软件产品的后期运行维护是个巨大的工程,单纯从前期开发时间上考虑其开发效率是不理智的,也是不公平的。众所周知,对于传统的ASP和PHP等脚本站点技术,将整个站点的业务逻辑和表现逻辑都混杂在ASP或PHP页面里,从而导致页面的可读性相当差,可维护性非常低。即使需要简单改变页面的按钮,也不得不打开页面文件,冒着破坏系统的风险。但采用严格分层J2EE架构,则可完全避免这个问题。对表现层的修改即使发生错误,也绝对不会将错误扩展到业务逻辑层,更不会影响持久层(数据库层)。因此,采用J2EE分层架构,即使前期的开发效率稍微低一点,但绝对值得的。
2)需求的变更:很少有软件产品的需求从一开始就完全是固定的。客户对软件需求,是随着软件开发过程的深入,不断明晰起来的。因此,常常遇到软件开发到一定程度时,由于客户对软件需求发生了变化,使得软件的实现不得不随之改变。当软件实现需要改变时,是否可以尽可能多地保留软件的部分,尽可能少地改变软件的实现,从而满足客户需求的变更?答案是——采用优秀的解耦架构。这种架构就是J2EE的分层架构,在优秀的分层架构里,控制层依赖于业务逻辑层,但绝不与任何具体的业务逻辑组件耦合,只与接口耦合;同样,业务逻辑层依赖于DAO层,也不会与任何具体的DAO组件耦合,而是面向接口编程,采用这种方式的软件实现,即使软件的部分发生改变,其他部分也尽可能不要改变。技术的更新,系统的重构:软件行业的技术更新很快,虽然软件行业的发展不快,但小范围的技术更新特别快。一旦由于客观环境的变化,不得不更换技术时,如何保证系统的改变最小、代码复用率最高呢?答案就是选择优秀的架构。
采用Hibernate作为持久层技术的最大的好处在于:可以完全以面向对象的方式进行系统分析、系统设计。DAO模式需要为每个DAO组件编写DAO接口,同时至少提供一个实现类,根据不同需要,可能有多个实现类。通常情况下,引入接口就不可避免需要引入工厂来负责DAO组件的生成。Spring实现了两种基本模式:单态模式和工厂模式,而使用Spring可以完全避免使用工厂模式,因为Spring就是个功能非常强大的工厂,因此,完全可以让Spring充当DAO工厂。
由Spring充当DAO工厂时,无须程序员自己实现工厂模式,只需要将DAO组件配置在Spring容器中,由ApplicationContext负责管理DAO组件的创建即可,借助于Spring提供的依赖注入,其他组件甚至不用访问工厂,一样可以直接使用DAO实例。
因此基于SSH(Struts+Spring+Hibernate)三层架构结合的这种开发模式,层次分明,耦合度低,易于维护。4.2选择MySQL数据库的好处MySQL作为一种开放源码数据库[8],以其简单易用的特点广泛被广大用户采用,MySQL虽然是免费的,但同Oracle,Sybase,Informix,Db2等商业数据库一样,具有数据库系统的通用性:
1)数据库管理系统。我们知道,所谓的数据库就是一些结构化的数据的联合体,要提供对这些数据的存取、增加、修改、删除或更加复杂的数据抽取等操作,需要有一个支撑系统,这就是数据库管理系统(DBMS),MySQL完全具有这方面的功能。
2)关系型数据库管理系统。在数据库的发展历程中,曾出现过多种不同形式的数据库系统,但关系型数据库管理系统(RDBMS)以其优越性而被广为采用,象现在几种广泛使用的数据库全为关系型数据库。同样,MySQL也是关系型的数据库系统,支持标准的结构化查询语言(StructuredQueryLanguage)。
3)开放源码数据库。同商业性的数据库相比,这是MySQL最大的特点。MySQL的源码是公开的,这就意味着任何人,只要遵守的规则都可以对MySQL的源码使用、修改以符合自己特殊的需求。
4)技术特点。MySQL是C/S架构的服务器,服务器端是多线程的,为客户端提供了不同的程序接口和链接库,如C、C++、Java、Perl、PHP、Tcl等,也提供了简单的管理工具,如mysqladmin,mysql等。
正因为MySQL的源码是公开的,使得我们有机会从源码级,更深入的了解MySQL。
从这一层面上可以探求、了解MySQL数据库的特性:
1)开发语言为C/C++,支持多种编译器,如gcc,cc,xlc,aCC等
2)良好的内存管理机制,尤其是内存泄漏的管理,通过了Purify的严格测试
3)支持多种平台,如AIX、Solaris、HP、FreeBSD、Tru64、SGI、Windows等
4)提供多种形式的,为我们开发工具的选择提供了便利
5)使用多线程的技术,可充分发挥系统的特点,避免在SMP系统中出现仅使用单CPU的现象
6)对磁盘表的管理采用B树加密及索引的技术,为我们快速访问数据提供了可能
7)高性能的内存申请技术
8)临时表采用在内存中以哈希表实现
9)提供多种数据类型,如signed/unsignedinteger,double,blob等
10)支持定长的和变长的纪录
11)所有的列都有缺省值,为我们的某些“粗心”提供了方便
12)灵活、安全的权限和密码系统,密码在传输中加密传送,允许主机端验证密码
13)客户端可以通过TCP/IP、Unix套接字、命名管道(NT)连接到MySQL数据库服务器
14)提供Windows端的ODBC连接
15)对多种字符集的完全支持
MySQL有如此多的特点,又由于其免费的特点,这就给许多的中小应用提供了不错的选择。尤其是对一些中小企业,无论是从降低成本,还是从性能方面,采用MySQL作为其数据支撑系统,都是一种可行的方案。5.系统各模块的设计与实现所谓的模块化设计,简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化[9]。我们根据系统用的类型的不同,把本系统分为系统权限模块、公文流程控制模块、基本信息模块三大部分,这里基本信息模块由我来完成,在这节也只介绍基本信息模块。在本节中,为了便于介绍,我把系统基本信息模块根据其不同的功能又细分为公共信息、行政办公、邮件管理以及三者结合的快捷连接功能的我的办公桌,公共信息包括公告通告、新闻报告;行政办公包括会议管理、资产管理、车辆管理、图书管理;邮件管理包括收件箱、发件箱、垃圾箱等。下面就根据这些不同功能的模块来逐一介绍。5.1系统基本信息模块5.1.1系统首页介绍本系统的首页是“我的办公桌”,“我的办公桌”包括有系统基本信息模块中的关于用户个人的重要信息的快速连接,并且在首页还默认显示了对用户非常重要的四种基本信息,包括系统最近发布的公告通知、新闻报告、会议通知以及其他用户发来的待我审批的公文等,可以在这些信息的标题上进行快速连接,到达此条信息的浏览页面(如图5.1所示)。图5.1系统首页图5.1系统首页5.1.2我的通信录的实现 我的通信录模块是给用户方便管理自己的通信信息的,用户可以在这里方便的添加自己的通信录组,例如我的好友、亲人(如图5.2所示)等。然后在各组中进行添加(如图5.3所示)、更改、删除自己的相应的通信记录。图5.2我的通信录图5.2我的通信录图5.3添加我的好友图5.3添加我的好友5.1.3新闻管理功能的实现 新闻模块让新闻模块用户可以很快了解本系统管理员发布的最近新闻消息,一般的用户只可以查看新闻,而如果本系统的权限管理(杨云彬同学完成)允许该用户对新闻模块进行添加、更新、删除的话则该用户可以对本系统的新闻模块进行增、更、读、删(C、U、R、D)。这里以一个具有对新闻模块进行(C、U、R、D)的管理员为例进行说明。首先管理员进入新闻模块的主页(/news/index.jsp,如下图5.4所示),然后可以发布新闻、更改新闻和删除新闻。图5.图5.4新闻主页5.1.4公告通知功能的实现 公告通知是管理员向用户发出的系统通知,它可以让用户及时接收到上级或者管理员的通知。一般的用户也只能浏览公告通告,而如果本系统的权限管理(杨云彬同学完成)允许该用户对公告通知进行添加、更新、删除的话则该用户可以对本系统的公告通知进行增、更、读、删(C、U、R、D)。这里以一个具有对公告通知进行(C、U、R、D)的管理员为例进行说明。公告通知的实现和新闻模块的实现一样,首先管理员进入公告通知的主页,然后可以发布公告、更改公告和删除公告。5.1.5会议通知功能的实现 会议通知是管理员(或者上级)向用户发布的开会通知,用户可以接收到自己的会议通知。本系统的会议通知可分为个人级接收的会议和机构级的公共会议,个人级接收的会议是发布会议人向个人发布的会议,个人可以根据个人登录账号接收;公共会议级的会议根据用户所在的机构的标识来接收。同样,会议的权限也分为增、更、看、删(C、U、R、D),用户根据本系统的权限管理模块分配的权限进行对本模块功能进行操作。现在以一个具有进行会全部权限的管理员为例说明。进入会议首页(/meetng/index.jsp如图5.5所示),管理员可以在这里方便添加会议信息、更新会议信息和删除掉不再需要的存在的会议信息,还有管理员可以单击会议主题进入浏览该会议信息的详细内容。图5.图5.5会议首页5.1.6资产管理功能的实现 资产管理是管理员对企业各类资产的管理,在本系统中,管理员可以非常方便地对企业的资产进行登记管理。首先进入资产管理的首页(/property/index.jps,如图5.6所示),然后管理员可以公司资产进行登记(如图5.7所示)维护、删除登记记录等。图图5.6资产管理首页5.1.7车辆管理功能的实现 车辆管理本来为资产管理的一部分,考虑到车辆贵重,以及它特有的一些特性,例如维修、司机等,将此功能从资产管理中独立出来。车辆管理的首页(/car/index.jsp),如下图5.8所示,在这里管理员可以看到立即看到每车辆的详细,还有管理员可以添加、更新以及删除车辆的信息。图5.图5.8车辆信息首页5.1.8图书管理功能的实现 图书是一个企业或者公司非常重要的一功能,本系统的图书管理的功能包括图书类型的添加、更改、删除;图书的添加、更改、删除、借书、还书的功能;其中图书的添加、更改、删除、借书等操作为管理员特有,借书和图书的查找为所有用户都拥有的权限;现在为一个具有图书所有操作的管理员为例进行介绍本功能。管理员进入图书管理首页(/book/index.jsp),可以对图书进行查询、添加、查看我借的图书(如图5.9所示)、管理图书的类型、借书、还书、更新图书等操作。图5.图5.9我借的图书5.1.9邮件服务功能的实现邮件服务是Internet上使用人数最多且最频繁的应用之一,目前大部分的邮件系统采用“简单邮件传输协议(SimpleMailTransferProtocol)”,通过存储转发式的非定时通信方式完成发送、接受邮件等基本功能。邮件服务是本系统的基本信息服务的难点实现功能,在本系统的邮件服务功能为用户提供了发件箱、收件箱二个基本功能,不过只能在系统中实现,不能与Internet上的其它服务器连接使用。邮件服务可以为企业、公司的员工间方便进行相互联系,是实现企业公司的信息化办公的不可缺少的一项基本服务功能。本系统的邮件服务采用WinWebMail作服务器,Jmail作为服务器端发送组件,其具体实现的功能请看系统源文件。下面以一个例子说明该模块功能。如下图5.10所示为用户发送邮件界面。它支持文件发送,编辑器采用目前非常流行的FckEditor编辑器,便于用户排版邮件内容。当用户发送邮件后,邮件服务器便根据收件人地址把邮件放到收件人的收件箱中。图5.10图5.10用户发送邮件5.2系统基本信息功能重要实现方法5.2.1页面分页 系统有时候需要从数据库中提取非常多的数据,如果将大量的数据在一个页面中从开始到最后全部一下子展现出来,一定会让用户感到头晕。为了解决此问题,本系统采用了目前非常流行使用并且性能强大的Pager-taglib标签来进行分页。下面先来简单介绍下Pager-taglib。 Pager-taglib支持多种风格的分页显示。实际上她是一个JSP标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多种不一样的分页页面,风格各异,她自带的DEMO就有七种左右的分页风格,包括Google的分页风格。而需要订制自已的风格的分页页面也非常简单。分页方式有两种:是从Action中得到一个List,在页面上通过<pg:item>进行自动分页。是通过把pageSize,pageNo两参数传给后台进行数据库分页。本系统采用第二种分页方法,统一将系统每页显示10条数据,并且是Google的分页风格。具体的实现为方法如下:/***根据HQL语句进行分页查询*@paramhqlHQL语句*@paramparamsHQL语句带的多个参数值*@paramoffset从第几条记录开始查询*@parampagesize每页显示多少行*@return */publicPagerModelsearchPaginated(Stringhql,Object[]params,intoffset,intpagesize){ //获取记录总数 StringcountHql=getCountQuery(hql); Queryquery=getSession().createQuery(countHql); if(params!=null&¶ms.length>0){ for(inti=0;i<params.length;i++){ query.setParameter(i,params[i]); } } inttotal=((Long)query.uniqueResult()).intValue(); query=get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石灰石采购合同中的质量保证
- 农村集体房屋买卖合同的有效条件
- 培训辅导软件销售服务合同
- 箱式变电站设备购买合同
- 农村宅基地买卖合同模板
- 如何写工作方案
- 2024年度服装加工厂生产外包合同3篇
- 2024年ByIdo物联网平台搭建与运营合同
- 南京理工大学紫金学院《电子信息工程专业导论》2021-2022学年第一学期期末试卷
- 南京理工大学紫金学院《典型零件工艺设计》2021-2022学年第一学期期末试卷
- 《预防性侵害讲座》课件
- 汽车维修质量检验与控制预案
- 今天我当家(课件)粤教版四年级上册综合实践活动-
- 康复理疗师知识考试题及答案
- 艺术哲学:美是如何诞生的学习通超星期末考试答案章节答案2024年
- 护士长招聘笔试题与参考答案(某世界500强集团)2024年
- 2024年重庆市高考地理真题(解析版)
- 科学阅读(皮肤很重要)(课件)二年级下册科学教科版
- 2024年秋季学期学校安全工作计划附安全工作各周安排序列表
- 中国近代史纲要-第七章
- DB32T 4784-2024 城市基础设施安全运行智慧监管系统数据标准
评论
0/150
提交评论