已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通讯计费系统设计文档管理信息表主题计费系统版本V3.0内容设计关键字计费参考文档中国移动设计需求创建时间2004-07-21创建人冯昌建最新发布日期2005-07-21前 言21 开发的背景和开发技术简介21.1什么是电信计费系统31.2 为什么要大力开发电信计费系统:31.3 电信计费系统的主要应用系统:32 系统分析42.1 可行性分析:42.2 用户需求分析:42.3需求详细说明52.4 模型分析72.5开发环境分析83 系统设计93.1 设计目标93.2 系统功能模块划分93.3系统用例图104 数据库设计114.1 数据库需求分析114.2 数据库的建立114.3 数据库系统体系结构114.4 数据库系统的组成124.5数据库设计理念124.6 数据库设计内容124.7 数据库结构设计134.8 数据表之间的联系195.1 数据库的访问205.2 前台母版制作205.3 前台各功能的实现:225.4 后台功能的实现235.4.1 采集服务端:245.4.2 采集客户端:285.4.3数据整合端:376 系统测试426.1 软件测试常识426.2 系统测试环境及开发工具436.3 系统功能测试437 结论537.1 本站特色537.2 不足之处537.3 个人总结53前 言计费系统已不再是传统意义上整个电信业务的附属,随着电信业务的高速发展,它已经成为电信运营支撑系统(OSS)实现运营收入的源头和依据。电信计费系统的准确性、实时性直接关系到客户服务质量和电信运营商的收入。随着电信市场竞争从“网络竞争”向着“客户竞争”的演变,计费系统已成为电信运营商的核心竞争力之一。电信计费系统采用了MyEclipse开发工具,MySQL数据库服务器,前台的用户账单查询系统采用的是Tomcat应用服务器。采用MVC经典模式,表示层用了JSP,控制器用了Struts1,使用这种设计模式使得业务层和逻辑层分离开来而且也提高了开发速度,根据需求分别用到了JDBC和Hibernate框架来对数据库进行访问。本设计说明书主要介绍了系统的背景意义、系统分析、系统,数据库设计以及功能实现。1 开发的背景和开发技术简介1.1什么是电信计费系统电信营运计费系统是一个计费的系统,要想对用户进行准确的收费,首先必须能够获得用户使用开放验室的准确的使用记录,数据挖掘系统就是为获取这些记录而提供的。数据挖掘系统分为数据采集和数据整合2个部分。数据采集:开放实验室是一个Unix服务器, Unix服务器本身就具有记录系统日志的功能。用户每次登录和退出Unix服务器的信息都会被自动保存到一个在线日志文件/var/adm/wtmpx中。采集系统通过调用Unix系统函数来读取这个日志文件中的内容,然后对读取到的内容进行整理,整理为方便计费的数据,其中包括登录名、登录时间或登出时间等作为计费依据的数据。最后把这些数据存入数据库中,以备其他系统使用。为了使读取的数据量不至于过大,采集系统会每小时定时执行一次,每次只采集上一个小时时间段之内的数据。采集系统定时将用户使用服务器的数据存入到了数据库中,但这些数据都是流水帐的数据,是用户每次使用UNIX操作系统的用时。如果用户量大,用户频繁地登入/出,将产生大量的数据,不便于将来生成用户的月账单使用情况进行月统计和年统计,因此,出现了整合系统,整合系统的出现提高了用户查询账单的速度。1.2 为什么要大力开发电信计费系统: 计费系统已不再是传统意义上整个电信业务的附属,随着电信业务的高速发展,它已经成为电信运营支撑系统(OSS)实现运营收入的源头和依据。电信计费系统的准确性、实时性直接关系到客户服务质量和电信运营商的收入。随着电信市场竞争从“网络竞争”向着“客户竞争”的演变,计费系统已成为电信运营商的核心竞争力之一。电信计费系统已不再是被动的后台系统,而其作为整个电信行业的核心竞争力所在的地位日益巩固,已经成为整个电信系统的灵魂。它能有效地提供服务,降低运营成本,提高运营效率。无论是运营商、内容提供商还是各分销商必须给予它足够的重视,才能在群雄逐鹿中占居有利地位。1.3 电信计费系统的主要应用系统:电信计费系统是BOSS(业务运营支撑系统)的一部分。目前国内还处在BOSS建设的初级阶段,首先能做到的是将业务流程中某个环节中的不同业务进行纵向整合,如帐务管理中的长话、市话、数据各部分的整合,以及服务不同业务的综合客服系统。智能网上开发的业务、IP业务等,基础网络本身能够实现计费功能,这时就需要系统具有很强的整合能力,将各项使用费汇总计算出用户应支付的费用。2 系统分析2.1 可行性分析:在电信市场竞争的环境下,计费系统是电信运营商进行市场竞争的最重要的核心支撑系统,是电信公司进行市场运作的神经中枢。电信公司都把计费系统的建设和有效运行作为提高服务质量、增强自身竞争实力、刺激业务量上升的重要手段;“提高服务质量、参与市场竞争”需要计费系统的有力支持。目前看来,电信营运提供电信服务所产生的服务质量问题,越来越集中在电信计费系统领域。现在用户关注和投诉的热点,如资费政策的执行、话费争议、查询难等问题都与计费系统息息相关;“维护电信运营商自身利益和效益”需要计费系统的有力支持。作为计费系统,不但要做到准确地完成各项业务的费用计算,还要及时回收资金、最大程度地减少欠费,提高企业资金的利用率。在目前竞争环境下,互联互通普遍存在,保证网间结算费用及时回收、不发生流失,成为计费系统一项很重要的任务。每一个电信运营商的计费系统都应该有足够的手段判定结算费用的实际数目、判断互联对方结算报表的客观性、合理性,确保网间结算“以我为主”而不能“以对方为主”,并能够提供充分有力的结算依据;“市场经营决策”需要计费系统的有力支持。电信市场竞争的不断加剧,要求电信运营商的市场经营决策必须科学化、理性化。一个决策的失误,可能给电信公司带来难以弥补的损失、甚至危及企业的生存。计费系统掌握着电信公司运作的大多数企业数据,其中蕴涵着企业经营态势、客户群分布特征及消费习惯、各项业务发展状况等非常有价值的信息,应该尽快着手加以挖掘和利用,辅助电信市场经营决策。2.2 用户需求分析:电信运营商新增一项Open Lab(开放实验室)出租业务,即该电信运营商提供基于Unix平台的实验室环境,选择使用这种业务的用户能够远程登录到实验室中做基于这个实验室环境的一些工作和实验。运营商希望借助先进的计算机技术对访问实验室的用户进行管理和计费,由此实现对此项业务运营的支持与管理。本系统主要涉及的是后台的数据挖掘和前台的用户账单查询。用户成功登录账单查询系统后可以快速查询月账单以及详细账单。由于后台的数据采集到的数据是流水账的数据(用户1小时内每次使用UNIX操作系统的用时)。如果用户量大,用户频繁登录登出,将产生大量的数据,当用户需要查询账单时,查询速度会大大降低,为了提高查询效率出现了数据整合系统,数据整合系统是对原始数据进行时整合,天整合,月整合。2.3需求详细说明图2.1 数据挖掘部署图2.3.1 数据采集客户端模块: 采集系统:由系统定时启动扫描系统的登录历史文件(wtmpx),并且分解此文件,把用户登录/登出实验室的数据发送到服务器端。 由于系统本身分散的特点,采集点与数据存储点是分散的,数据是用Socket进行传输的,此传输方式的优点是:数据库安全;缺点是:面向底层开发,需要处理多线程、数据传输失败等细节。图2.2 数据采集用例图2.3.2 数据采集服务端模块:数据采集服务端负责接受客户端发送过来的数据,并且将这些数据存储到数据库服务器中。图2.3 数据采集存储点说明图2.3.3 数据整合模块:把采集的原始数据按用户或按实验室进行统计整合,便于实验室和用户快速查询个人的应交费情况。整合分为按实验室整合与按用户在不同实验室上的整合。不同用户在不同实验室上的数据整合规则:一小时内的数据整合成一条记录。单独存放在一张表中-天表(detaildays_x)。一天内的数据整合成一条记录。单独存放在一张表中-月表(detailmonths_x)。一个月内的数据整合成一条记录。单独存放在一张表中-年表(detailyears_x)。(这三张表结构完全一样,除时间范围具体的值不同.因为该表查询的频繁度很高,在设计的时候设计成天表31张,月表12张,年表根据年份一年一张。)按不同实验室的数据整合:一小时内的数据整合成一条记录。单独存放在一张表中-天表(detaildays)。一天内的数据整合成一条记录。单独存放在一张表中-月表(detailmonths)。一个月内的数据整合成一条记录。单独存放在一张表中-年表(detailyears)。注意:该表的查询主要是运营商在统计运营情况的时候使用,使用频率相对较低。设计的时候采用每种表各一张。图2.4 整合系统用例图2.3.4 用户账单查询模块:用户可以通过该系统修改个人的信息资料,或查询个人的交费情况.用户应该交纳的费用公式:交纳费用=登录时长*资费单位费用 + 资费基本费用.用户使用实验室的时长公式::登录时长=用户登出时间-用户登录的时间.2.4 模型分析 由于系统本身分散的特点,采集点与数据存储点是分散的,数据是用Socket进行传输的,此传输方式的优点是:数据库安全;获取用户使用实验室的准确记录有三种情况:1.利用操作系统自身的记录日志的功能;2.利用开放式实验室的个人web主页功能;3.使用开放实验室的email功能。本系统中只对操作系统自身的功能进行处理。本系统是一个java+JDBC+Hibernate+Struts1+MySQL数据库开发的电信计费系统,由前台的账单查询于后台的数据采集、整合两个部分组成。2.5开发环境分析2.5.1.集成开发工具MyEclipse:, Eclipse是一个开放源代码的、基于JAVA的、可扩展的软件开发平台。它专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它不仅仅是一个JAVA的IDE,更通过插件的形式提供其他集成软件开发工具的基础。它能扩展到任何语言的开发,甚至能成为图片绘制的工具。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。MyEclipse是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。2.5.2.数据库MySQL: 本系统采用MySQL,MySQL是一个高性能、多线程、多用户、建立在客户服务器结构上的RDBMS,专门为了速度和稳定性而设计。相对于像Oracle和Microsoft SQL Server一样的更商业化、非开放源代码的系统来说,快速、健壮和友好的数据库引擎、高级的数据管理和恢复工具、不断改进的特性集合、遵守现有的SQL标准、友好的商业许可原则,都是促成MySQL成为可实施的选择因素。MySQL的较低总体拥有成本和更稳定、更安全的系统特性,使越来越多的企业把他们的系统移植到MySQL,并且收获着MySQL开放源代码带来的效益。MySQL的特征:高性能、可靠性、可扩展性、可移植性、开放源代码、还有容易使用,遵循现有标准,国际化,广泛的应用程序支持等特征2。2.5.3 应用服务器Tomcat: Tomcat服务器是Apache组织开发的一种JSP引擎,本身具有WEB服务器的功能,可作为独立的WEB服务器来使用。但在作为WEB服务器方面,Tomcat处理静态网页时不如Apache迅速,也没有Apache健壮,所以一般将Tomcat与Apache配合使用,让Apache对网页的静态页面请求提供服务,而Tomcat专为JSP做引擎,提供JSP解析,以得到更好的性能。并且Tomcat本身就是Apache的一子项目,所以Tomcat对Apache提供了强有力的支持。本设计采用的是:apache-tomcat-6.0.14 3 系统设计3.1 设计目标对于典型的数据库管理系统,尤其是对电信这样的数据流量特大的系统,必须要满足快速查询、操作灵活等设计。本系统在设计时应该满足以下几个目标。a. 要对Unix产生的日志文件wtmpx进行备份;b. 采集数据时:客户端向服务端发送数据失败或者服务端接受数据失败时要把这些数据存起来,以便下次重新发送这些失败数据;c. 采集系统定时将用户使用服务器的数据存入到了数据库中,但这些数据都是流水帐的数据,是用户每次使用UNIX操作系统的用时。如果用户量大,用户频繁地登入/出,将产生大量的数据,不便于将来生成用户的月账单和对开放实验室的使用情况进行月统计和年统计,因此,要对这些数据进行整合即按实验室和用户的时整合、天整合、月整合。d.本系统的前台用到了StrutsMVC模式,用Struts框架提高了开发速度,使得业务层与视图层分离开来,便于系统的可维护性;3.2 系统功能模块划分1)后台模块划分后台是一个C/S架构,有3个模块,分别是数据采集、数据整合、数据模拟:数据采集模块:由系统定时启动扫描系统的登录历史文件,把用户登录/登出实验室的数据采集并分析处理后存储到数据库服务器.整合系统:把采集的原始数据按用户或按实验室进行统计整合,便于管理员统计查询或便于用户查询个人的应交费情况.2)前台模块划分前台是用户所使用的界面,用户可以通过此界面进行登录、查看个人信息、修改个人信息以及查询业务账单:用户登陆模块。个人信息维护模块:可以查看和更改个人基本信息;账单查询模块:可以查看业务月账单以及月详细账单。3.3系统用例图图3.1 后台模型图图3.2 前台流程图4 数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。这里我采用了MySQL来实现电信后台数据挖掘系统和电信前台的用户自服务系统数据库。我的数据库设计包括如下几个步骤。4.1 数据库需求分析收集基本数据、数据结构及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。通过对系统功能的分析,总结出如下的需求信息。1、用户信息表(users)2、资费信息表(pricings)3、用户业务帐号信息表(userservices)4、数据原始表(details_x)5、用户时整合表(detaildays_x)6、用户天整合表(detailmonths_x)7、用户月整合表(detailyears_x)8、实验室时整合表(detaildays)9、实验室天整合表(detailmonths)10、实验室月整合表(detailyears)4.2 数据库的建立数据库的访问方式:JDBC和Hibernate:Java提供了数据库访问的应用程序接口Jdbc,通过这些接口可以操作后台的强大的数据库,另外开源框架Hibernate对JDBC进行了轻量级的封装,可以使程序员用面向对象的思维方式来操作后台的数据库,本系统用JDBC实现了数据采集,数据整合,费用查询的数据库访问,用Hibernate实现了用户登陆,修改个人信息,查看个人信息的数据库操作。本系统采用的数据库为MySQL。4.3 数据库系统体系结构数据库系统体系结构是指数据库系统的组成构件(Component)、各构件的功能及各构件间的协同工作方式。数据库的体系结构主要包括外模式,模式,内模式三级体系结构。三个模式中:模式是内模式的逻辑表示;内模式是模式的物理实现;外模式则是模式的部分抽取。三个模式反映了三种不同的观点:模式表示了概念级数据库,体现对数据库的总体观;内模式表示物理数据库,体现对数据库的存储观;外模式表示用户数据库,体现了数据库的用户观。总体观和存储观只有一个,而用户观可能有多个,有一个应用就有一个用户观。两种映射:在三个模式之间存在着两种映射。模式-外模式的映射的作用是保证数据的概念模式发生变化时,只需要改变映射关系,从而保持外模式不变,而应用程序根据外模式编写,这种外模式独立于模式的特性,即逻辑数据独立性;模式-内模式映射的作用是当存储模式发生改变时,只需要改变映射关系,从而保持模式和子模式不变,这种逻辑数据独立于物理数据的特性,即物理数据独立性。4.4 数据库系统的组成数据库系统是指实际可运行的按照数据库方式存储和维护并向应用程序提供数据或者信息支持的系统。一个完整的数据库系统由数据库,数据库管理系统,数据库应用程序,支持数据库运行的计算机软硬件环境以及数据库管理员等组成。4.5数据库设计理念数据库设计是从用户对数据的需求出发,创建一个性能良好,能满足不同用户需求,又能被选定的DBMS所接受的数据模式,进而构造出数据库结构的过程。这里所说的数据库结构包括数据库的逻辑结构和物理结构。数据库设计有两个最重要的目标:满足应用功能需求和良好的数据库性能。 满足应用功能需求,主要是能把用户当前应用以及可预知的将来应用所需要的数据以及其联系全部准确的存放与数据库中,并能根据用户的需求对数据进行合理的修改操作。4.6 数据库设计内容数据设计的内容主要有:数据库结构特性设计,数据库行为特性设计和数据库物理模式设计。 数据库的结构特性设计是确定数据库的框架和数据结构。他是汇总各用户试图产生的全局逻辑结构。它反映了现实世界及其联系,能数据共享。 数据库行为特性的设计是确定用户的行为和操作,并根据其行为特性设计出数据库的子模式。在数据库系统中,数据库的行为和动作反映在数据库应用程序中,这些行为和动作主要包括数据库的记录的添加,删除,修改,数据库的查询和统计,事务处理和报表处理等。数据库物理模式设计要求是:根据数据库结构的动态特性,在特定的关系数据库系统中,把数据库的逻辑结构模型加以物理实现,从而得出数据库的存储模式和存取方法。4.7 数据库结构设计在采集数据的存储方式,根据客户需求与系统性能的考虑,设计是把数据库存储表结构分为3类:采集的原始登录数据记录表按不同用户在不同实验室上的数据整合表。按不同实验室的数据整合表。注意:按实验室整合与按用户在不同实验室上整合的存储因为数据量的问题在设计上有区别。其中前者的表按天,月,年各一张,后者的天表31张,月表12张,年表根据年份一年一张。原始采集用户登录时长明细表 (details_x) 其中x 是1-31图4.1 原始记录ER图表4.1原始数据表字段英文名字段汉字名类型是否为空loginname登录名Varchar(20)否loginip登录IPVarchar(24)否logintime登录时间Timestamp否logouttime登出时间Timestamp否labip实验室IPVarchar(24)否 duration登录时长long否这31张表是采集服务端所用,服务端每小时从客户端接受到的用户登出记录都将存入表details_x(x为用户的登出日期)(二)按用户统计整合的时记录表detaildays_x (其中x为1-31)图4.2 用户时整合记录的ER图表4.2 用户时整合记录表字段英文名字段汉字名类型是否为空loginname登录名Varchar(20)否loginip登录IPVarchar(24)否logouttime登出时间Timestamp否labip实验室IPVarchar(24)否duration登录时长long否这31张表是整合端所用,整合端每小时按用户业务整合一次用户登录时间数据,把同一用户上一小时的所有记录整合成一条记录,并存入表detaildays_x中 (x为用户的登出日期)(三)按用户统计整合的天记录 detailmonths_x (其中x为1-12)图4.3 用户天整合记录的ER图表4.3 用户天整合记录表字段英文名字段汉字名类型是否为空loginname登录名Varchar(20)否loginip登录IPVarchar(24)否logouttime登出时间Timestamp否labip实验室IPVarchar(24)否duration登录时长long否这12张表是整合端所用,整合端每天按用户业务整合一次用户登录时间数据,把同一用户上一天的所有记录整合成一条记录,并存入表detailmonths_x中 (x为用户的登出月份)(四)按用户统计整合的月记录 detailyears_x (其中x为年)图4.4 用户月整合记录的ER图表4.4 用户月整合记录表字段英文名字段汉字名类型是否为空loginname登录名Varchar(20)否Loginip登录IPVarchar(24)否logouttime登出时间Timestamp否Labip实验室IPVarchar(24)否Duration登录时长long否这几张表是整合端所用,整合端每月按用户业务整合一次用户登录时间数据,把同一用户上一月的所有记录整合成一条记录,并存入表detailyears_x中 (x为用户的登出年份)(五)按实验室整合的时记录表detaildays图4.5 实验室时整合记录的ER图表4.5 实验室时整合记录表字段英文名字段汉字名类型是否为空logouttime登出时间Timestamp否Labip实验室IPVarchar(24)否Duration登录时长long否整合端每小时按实验室服务器整合一次用户使用的时间数据。把实验室上一小时的所有记录整合成一条记录,并存入表detaildays中(六) 按服务器整合的天记录表degtailmonths图4.6 实验室天整合记录的ER图表4.6 实验室天整合记录表字段英文名字段汉字名类型是否为空logouttime登出时间Timestamp否Labip实验室IPVarchar(24)否Duration登录时长Long否整合端每天按实验室服务器整合一次用户使用的时间数据。把实验室上一天的所有记录整合成一条记录,并存入表detailmonths中 (七) 按实验室整合的月记录表detailyears图4.7 实验室月整合记录的ER图表4.7 实验室月整合记录表字段英文名字段汉字名类型是否为空logouttime登出时间Timestamp否Labip实验室IPVarchar(24)否Duration登录时长long否整合端每月按实验室服务器整合一次用户使用的时间数据。把实验室上一月的所有记录整合成一条记录,并存入表detailyears中 (八) 用户帐务帐号、用户业务账号、资费的实体联系图如下: 图4.8 用户帐务帐号、用户业务账号、资费ER图表4.8 用户表Users字段英文名字段汉字名类型约束条件说明id用户IDIntPKname用户名Varchar(20)非空loginname用户登录名Varchar(20)UNIloginpassword用户登录密码Varchar(20)非空status用户状态Int非空默认1,0:开通1:停用2(删除)phone用户电话Varchar(20)email用户电邮Varchar(20)enrolldate用户开户日期Date非空closedate用户注销日期Datepaymenttype支付方式Int非空career职业Varchar(20)nationality民族Varchar(12)sex性别Tinyint非空Company公司Varchar(20)zip邮编Varchar(8) 这个表主要用来存储用户的基本信息,包括用户名、密码、真实姓名等。(九) 资费表pricings,用于存储电信所提供的资费方式表4.9 资费表字段英文名字段汉字名类型约束条件id资费IDIntPKname资费名称Varchar(20)UNIbasefee基本费用double非空ratefee费用率doubledescription资费描述Varchar(50)(十) 用户业务帐号表userservices表4.10 业务帐号表字段英文名字段汉字名类型约束条件id业务IDIntPKuserid用户IDVarchar(20)loginname用户登录名Varchar(20)非空loginpassword用户登录密码Varchar(20)非空labip实验室IP非空status状态Varchar(20)非空priceid资费IDVarchar(20)enrolldate业务申请日期Date非空closedate业务停止日期Date4.8 数据表之间的联系用户业务账号表userservices与用户表users项是一对多的关系;表示一个用户业务账号只能被一个用户使用,一个用户可以制定多种用户业务账号。用户业务账号表userservices与资费表pricings是多对一的关系,表示一个户业务账号只能选择一种资费方式,而一种资费方式可被多户业务账号使用。数据采集与整合中各表之间的依赖关系如下:图4.9 各表之间的依赖关系5 功能设计和实现5.1 数据库的访问本系统是通过JDBC和Hibernate框架来实现对数据库的操作的,Hibernate的使用可以使我用面向对象的思维方式对数据库进行操作,它是开源的框架,对Jdbc进行了轻量级的封装,并且支持各种关系映射,但是如果映射文件比较复杂,所以当数据库表过多时就不适宜采用此种数据库访问方式。结合了Jdbc和Hibernate的优缺点,在这个项目中数据采集,整合、以及用户查询帐单时要用到的表有82张表,所以这些部分就采用了JDBC数据库访问方式;对于验证用户的登录信息,查询用户信息,修改用户信息时数据表少,就采用了Hibernate框架进行数据库访问。JDBCUtil工具类:通过读取配置文件perties来获得数据库的登录名、密码、驱动。根据这些信息得到数据库的连接,此类也提供了Connection ,PreparedStatement ,ResultSet的关闭方法。HibernateSessionFactory工具类:提供了获取一个 session的方法,以及释放资源的方法。5.2 前台母版制作网站母版如图:图5.1 网站模板母版页概述 摸版是用layout做成的,在WEB-INF目录下配置了一个文件layout.xml:在配置文件struts-config.xml中,配置一个插件TilesPlugin,就可以分析文件layout.xml了:前台母版的四个板块如图:Logo.jsp部分:图5.2 网站标志部分头部:图5.3 头部分Menu.jsp部分: 这一部分需要动态显示,用户成功登陆后才能显示用户的权限,在jsp页面上用EL表达式以及jstl的核心标签来显示用户的权限,具体代码如下:其中userrights是一个集合,它存放的是权限对象(权限名称name、以及连接url),这个集合是存放在HttpSession中的。在menu.jsp中用foreatch循环来遍了这个集合,得到权限的名称以及地址。$Foot部分:图5.4 模版尾部分5.3 前台各功能的实现:前台用到了开源框架Struts1,可以把同一个模块的所有功能的实现写在一个类里面,提高了开发速度,而且StrutsMVC模式使表现层(主要jsp和html页面)与业务层分离开来,有利于系统的维护和安全。本系统的前台分为2个部分:与用户个人信息相关部分、账单查询部分。用户信息部分使用的类是:UserAction,它继承了Struts api中的类MappingDIspatchAction这个类中包含4个方法:用户登录是否成功、用户登出本系统、查看个人信息、修改个人信息用户账单查询部分使用的类是:FeeQueryAction 它继承了Struts api中的类DispatchAction这个类中包含2个方法:月账单查询、详细账单查询。Struts1中有一个总的控制器ActionServlet,它负责接受http请求,根据struts-config.xml配置文件的信息把请求通过ActionMapping转发给适当的Action。Web.xml中要对struts1中总的控制器ActionServlet进行的配置。1、index.jsp首页在整个项目中,首先被用户看到的用户自服务的登陆页面,只有登陆成功才能拥有用户权限。输入::8080/netselfservice/index.jsp就可以进入前台登录主页。进入此页面时程序要随机产生一个验证码,验证码时由一个servlet产生的,类名为CodeServlet:要在web.xml中对这个servlet进行配置,把产生的验证码要存入HttpSession中便于同用户输入的验证码进行核对。2、sendlogin.do登陆成功后用户将进入欢迎界面,此界面显示了用户的操作权限核对用户信息会调用类UserAction中的方法sendLogin(.):首先通过HttpServletRequest得到用户的name、password、验证码。然后判断验证码是否正确,如果验证码不正确则返回登录首页,如果验证码正确则调用dao层的类UserDaoImpl中的方法login(name,password)方法,返回值为true时,就将用户的所有权限以集合的形式存放在session中,用户的姓名、用户的id存入Session中,集合用于在jsp页面显示用户权限,id、姓名用于识别用户是否登陆以及用来查询用户的帐单。 3information.do用户信息编辑页面,此页面动态显示了用户的个人信息:在类UserAction中提供了一个客户查询个人信息的方法information().1)通过HttpSession得到用户的id;2)调用dao层的方法getUserById(id)返回一个用户对象;3)把此用户对象当做属性存入到HttpServletRequest中。在information.jsp页面用EL表达式得到用户的信息。(getUserById()方法采用的是Hibernate框架来访问的数据库,简单方便)4、modify.do用户将修改后的个人信息进行保存后,将会显示这个页面,页面会提示用户:“恭喜,您的个人信息修改成功!”。在modify方法中,1)通过HttpRequest提供的方法getParameter(String)得到用户填写的新信息,2)通过HttpSession中的用户id得到用户对象;3)对这个用户对象重新设值;4)调用dao层的方法update(Users)来保存新的用户信息。5、feeQuery.do?method=browseFeeByMonth显示的是用户所有业务的月账单具体数据库查询通过用户输入的账号,年,月查询月帐单,在Action中调用dao层的方法getFeeByMonth()6、feeQuery.do?method=browseFeeDetailByMonth显示的是月账单明细:7、logout.do退出本系统,将进入本系统的首页登陆页面,action中的代码如下:/* *类UserAction中的方法:客户登出的方法 */public ActionForward logout(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception if(request.getSession(false)!=null)request.getSession().invalidate();return mapping.findForward(logout);5.4 后台功能的实现服务端:通过网络接收由客户端发送过来的数据 ,并且将数据插入到数据库表中。客户端:通过网络定时向服务端发送匹配好的数据。整合端:定时对数据库中的数据按用户和实验室进行整合。后台界面的制作采用的是Java用户图形处理界面5.4.1 采集服务端:1)采集服务端的UI设计:图5.5 采集服务端UI设计2)采集服务端类图:服务端的主线程是:ServerLauncher,这个主线程将调用线程DataRecervierTh线程DataRecervierTh主要是负责接受客户端的连接,并为每个客户端启动一个数据接受线程(CollectionTh).服务端的主线程是:ServerLauncher,这个主线程将调用线程DataRecervierTh线程DataRecervierTh:主要是负责接受客户端的连接,并为每个客户端启动一个数据接受线程(CollectionTh).线程CollectionTh:它相当于客户端的数据处理器,receiver()方法负责接受从客户端发送来的数据,并且调用接口DetailDAO中的insert()方法,将数据插入数据库表中。如果数据存储成功则发送0给客户端,否则发送-1.DetailDAO是一个接口:提供了访问数据库的方法。BasicDAO是接口的实现类。图5.6 采集服务端类图设计3)采集服务端-时序图:图5.7 采集服务端时序图4)配置文件说明: 采集服务端的配置文件为perties.在有文件分隔符的地方需要注意区分windows系统和Linux系统。表5.1 配置文件说明属性key属性value例子备注说明portport = 9997采集的服务器端口driverdriver = com.mysql.jdbc.Driver数据库驱动程序类名urlurl = jdbc:mysql:/:3306/netctoss?characterEncoding=gb2312数据库连接URL。useruser = root数据库连接用户名passwordpassword = root数据库连接口令5)类详细说明: 5.1)ServerLauncher类:服务器数据接受器启动器, 主要负责启动服务器接受线程。 函数说明:函数main主要用来创建DataRecieverTh对象,并调用此对象的start函数来启动线程。 5.2)DataRecieverTh类,服务器接受主线程。是一个线程类,继承JDK的标准线程类Thread。主要负责接受客户连接,并为每个客户启动一个数据接收线程来进行客户数据接收。成员说明:成员属性名成员属性说明collectionth定义的一个Vector的数据结构,便于管理每个客户采集点。serversocket服务器Socket对象。InitialSocket()方法:负责网络服务器的初始化工作。Run()方法:负责接收客户连接,并建立客户处理线程并启动线程,并在collectionth中记录该客户线程处理对象。5.3)CollectionTh类,每个客户数据接收处理类。该类主要接收采集器发送过来的数据,接收成功后发送一个成功标志,然后保存接收的数据。该类继承Thread。 成员属性说明:成员属性名成员属性说明socket每个客户Socket的代理socket。inputstream客户socket输入网络流。outputstream客户socket输出网络流。dao专门负责把接受的数据写入到数据库。函数run():主要调用receive()私有函数。Receive()函数:通过inputstream读取数据,并发送成功标记,然后调用全局的dao保存数据。SendFlag()函数:向客户端发送一个标记。0表示接受成功,-1表示接受失败。5.4)DBEnvInit类,数据库环境初始化类, 该类封装了两个函数工具,完成对数据库的连接函数getDBParamter,负责从属性文件读取数据库连接参数。函数getConnection,负责根据连接属性打开与数据库的连接5.5)DetailDAO类, 提供对Detail数据库的插入等操作访问。 函数insert负责把接收到的数据插入到数据库。BasicDAO泛型类 封装对数据库访问最常用的规范。在后面的DAO类,缺省必须实现该接口。5.4.2 采集客户端:1)采集客户端UI设计:图5.8 采集客户端UI图设计2)采集客户端类图客户端主线程:类CollectionLauchor,它负责启动采集线程CollectionThread.采集线程CollectionThread用来启动采集过程:主要是调用采集器类DataCollector进行数据采集;采集器类DataCollector:1)首先由getNativeIP()获取本机的ip,2)然后初始化日志文件initlog(),3)接着注入LogDealer类的对象,4)用方法mappingLogBuffer()把日志文件内存映射;5)在用方法parseLOgBuffer()分析日志文件,把登陆的数据放入集合login,登出的数据放入集合logout,6)在方读取上次匹配失败的数据并放入登陆集合login;7)在用方法match()将登录登出的数据进行匹配;8)用方法passivate()保存匹配失败的数据;9)调用LogDealer中的deal()方法。数据发送类LogDealer:负责把匹配好的数据发送到服务端,如果服务端接受失败则对这些数据进行保存。图5.9 采集客户端类图设计3)采集客户端时序图:图5.10 采集客户端时序图4)配置文件说明为了保证系统得灵活性,在该系统中把服务器和本机有关的参数都通过属性文件配置,由程序动态读取。文件名确定为unix_perties属性key属性value例子备注说明intervalinterval = 60采集的间隔时间,以分钟为单位ipip = 0采集点的IP地址。sourcefilesourcefile= f:usra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论