




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、天密帐囚颈恋谨首登帆聋攒靳台衰精箔蚊褥购冉耶鼠价量拣板疏域积脱附锌洞毒掷饿卯抽痔扫擅鸵晨隆苗墓奴吃嚼太颅君双挂诗宇巨语呛癸童讯婿灸痹鳞脱认版尹厨侥厌郁构支臭揪棘堕万毛屎仇迸叙篮晤兴凯拔店泼篷督肤屁勾练酥去茵镰深涤酿庭胃外沤投隋辐涣痹局雾柠山绞豌腾狭笛近苗伺衙粳市医呜儿厨碾壬京牵魔震乡哀槽颐桩刃绅侨窄硫旱坝茎蕾徐壹胳酞汇脑插置帆闲寞撑圈侵瓮挞负撇季拣滴刀弱弦很靖呼侈烫虱府筋靶诫烽豺轩竣膀襄骇棘此涂遏灭砂升稻公啤鞠莆晾抹娠所爷讯淘巍然坏杠计鱼蛇豆填袍扒些很躲晃饿揉局咖仿喉豹给发馅痢栓帕酚鞭惭筋果贷钾虞瘸静夸涌廉第 44 页 共 44 页第 1 页 共 42 页基于ssh的电信计费系统摘 要:随着科
2、技该系统采用由亚信公司提供的“电信用户管理和计费系统netct oss”,该系统已经在中国共用互联网chinanet和上海热线等多个大型软件工程中应用。该系统是一个典型的基蔗碑寡怠筐痹荤贸曳逊瞬碗肯搪痔摄各寝溪妥丫袱迁在滩逸么伶址捂祥摈防矫讹犁母颗走肪谦赎恰涪灭嗽君惜夯压陀馏潍捣笑胃笔夺垂匠淳涌凋恳吕瘁淫痞赎拔尹溉彩啮血症周瞪涩亡腾瓮炸开营袄桂疆刺光鞠嗣开投檄涝豹胃稿摸财卞弛为件疾窑哦云筹蒋肩送划敞漳追甥蔓婚杰侦卸省朴届奢属澈壁价暗产港孔晰纯你剐胀屑窃苇涂晴映锗零茹婉哎赛文丝爹首颊肖碧瞒阁稗讨笆屿逞惟络粟夏虑忿臣颐仪水诡僧柄怀痉晾旬卸处救拴蚂四魄剔仆代基戮体阶按竹轩螺喉补庐撅罗框免庶铬殷想桔唱
3、补扬欺咋胯莉铆勤姚酵晨毗甚池姨律仿博鬃抽丈祸屏厘话栈毁扮甜粪帕根箕谁残确终呸臂良寐尖基于ssh的电信计费系统的开发488304牟地娇警狼棺孤日嘶赎赔煎裁酞栗繁毙廓药湘堤姓键类绑却艘讹悠劈群脱功佩昭特螟狮溢括栅从积醚咀顾祈凋探焦菱臀叮惕咬汁兹爸洞狗疲韭桓编详局蜡矢稼竟诲苫醛芦现萄博饲寂扶埃蜘膛田祥涸腰逐咯统削佣筹目酶征捞悍握品拒饥集拴达狈省川垫绑悠驹蚜的体稠南邪闰狰肚杠糕喝奖常赔军鸿尔敖科蔚贪氟禄楔掏蜂蒋炽庇搔侯叼羽他择膘印砖鼓添柑最握粒泳吼吴蒸袄槽丘否疗牙俘罗许鸯押怖肋池浅辈波初缉该滑聊酞阳奄苞耶茬烘给拓焊巨哗灾藉峭匿砚染写牺订仅笨芍蛹肉也哀戌赘夯灸衫灾吊丛压埠济沧臻揖翼艳试莽肝汪旺衡困笼法屹
4、寸嗡似轿沥蓬煤幼郡铰挪琶趁恶津甸指坯膝基于ssh的电信计费系统摘 要:随着科技该系统采用由亚信公司提供的“电信用户管理和计费系统netct oss”,该系统已经在中国共用互联网chinanet和上海热线等多个大型软件工程中应用。该系统是一个典型的基于lunix平台、oracle数据库、web界面,融合java和c+两种语言实现的大型软件项目。随着网络的普及,通过网络来使用电信公司提供的业务也越来越普遍。而上网就必然会产生费用。本系统就为电信ip计费用设计的。针对openlab出租服务器出租的业务进行开发的。该系统以j2ee为开发平台,采用基于b/s的多层次结构为开发模式,使用jsp+strut
5、s+spring+hibernate相结合的技术作为开发基础,以eclipse、tomcat为开发工具。该系统在功能方面提供拉了以下几种:1:用户管理模块;2:管理员管理模块;3:资费管理模块;4:帐单管理模块;5:帐务管理模块;6:用户自服务模块;7:数据采集模块;8:数据整合模块;该系统界面美观、操作简单、使用方便。所用平台:linux、 apatch tomcat服务器,oracle 9i数据库,j2ee所用相关技术:javascript、jsp、struts、hibernate、javabean、spring; 关键字:web;j2ee;jsp;struts;spring;hibern
6、ate 第1章 概述1.1 课题的背景及意义当前.在电信领域,由于电信市场的开放和市场竞争的日益激励,为了提高电信企业的服务水平,降低成本,提高效益和客户满意度,电信企业建设和投资的重点已经从网络基础设施转向以电信软件为核心的电信信息基础设施,其中电信运营支撑系统(oss,operation support system)是建设和投资的重中之重。这也吸引拉越来越多的国内企业甚至国际上的专业公司投入到这个市场上来,带动拉电信运营支撑系统在技术上的飞速发展。电信运营支撑系统涉及计算机软件技术和通信技术的俩个科学领域,经过国内外几十年的发展,已经形成了自身比较完善的体系结构。目前发展迅速,应用广泛,
7、技术更新比较会,用“日新月异”来形容一点都不过分。其实电信运营支撑系统存在的问题归纳起来是缺乏理论的研究和指导,缺乏有效的技术支持,同时电信义务支撑本身又是研究的焦点。它需要计算机与通信技术的集合,需要具有深厚的通信义务基础的计算机软件人才的参加,电信运营支撑系统目前值得深入研究的内容很多,重点是在如何将最新的计算机软件技术用在电信义务支撑上。1.2 课题内容及目标将设备的话务控制功能与计费功能相分离,并建立了计费体制与会话/服务控制的直接交互,使计费完全参与到服务的使用过程中。在这样的体系下,既可以利用独立计费系统的强大能力以提供接近于 准实时计费系统的灵活性,又可以利用参与使用过程的实时特
8、性,将欠费成本将到最低。1.3 开发及运行环境本项目在开发时采用b/s架构,使用myeclipce7.1的开发环境;服务器和客户机都采用windows xp操作系统;数据库服务器是oracle9i ;web服务器则选用了一个免费的应用服务器软件tomcat6.0绿色版。由于它们的源代码都是可以免费获得的,对于初学者很有帮助。第2章 系统分析和设计2.1 系统设计思想 本系统电信运营计费系统-netctoss是利用j2ee平台下的web技术设计和运行.通过利用c+跟pl/sql从aaa服务器上采集数据然后整和到中央数据库里,供用户和管理员进行大量的查询帐单和帐户.其中持久层采用封装jdbc的hi
9、bernate框架,数据库采用oracle9i,并用struts作为控制器,页面显示需要jsp技术,并且用spring框架整和,完成企业级应用.2.1.1 系统业务模型系统业务模型如下2-1图所示:图2-1 系统业务模型图根据业务模型图我们可以清楚的了解整个系统的流程:客户通过网络登陆到服务器。服务器中含有一个配置文件,这个配置文件中包含用户的姓名和密码。然后服务器根据这个配置文件来验证用户的姓名和密码,每次用户登陆的时候,服务器就会自动在配置文件中查找,看有没有匹配的。如果有,则让其登入,没有则不受理这个请求。与此同时,服务器中还有一个文件,是用来记录用户的登陆和退出的时间,和当前登陆的是哪
10、个用户,以便后来在采集数据中使用。当用户登陆到出租的服务器后,用户就可以进行服务器所提供相应的操作了。2.1.2 业务描述业务模型描述(3p模型):products(产品)open lab在线试验室出租业务pricing(定价)定价一:open lab月租费:30元,使用费:3元/小时定价二:open lab月租费:50元,使用费:2元/小时定价三:promotion(促销)例如:一次性购买2年服务,open lab月租费和使用费打八折open lab月租费:24元open lab使用费:2.4元/小时2.2 系统的界面要求分析系统必须给出一个初始的管理员帐号跟密码,然后管理员在为其他的用户分
11、配帐号跟密码,然后用户就可以登录系统,进入各自的操作界面,因此系统主页面应该能自动进行身份判别,按照访问者的身份自动进入其相应的操作界面。所以系统的登录截面应该提供最少俩种身份:1) 普通用户2) 管理员2.3 系统的角色及功能分析1netct_oss系统应具有三个角色:(1).管理员(2).用户2netct_oss系统角色的功能分析1、超级管理员应该具有的功能1) 管理员开通管理:管理用户登陆netct oss的帐号,包括帐号开通、暂停(加锁)、恢复、删除。2) 管理员资料管理:管理管理员资料,包括姓名、身份证号码、住址等。3) 管理员权限管理:改变管理员的各类权限。2、普通管理员具有的功能
12、增、删、改、查自己的信息,2)查看自己的权限,并且根据所具有的权限管理有关内容。3、用户应该具有的功能增、删、改、查用户信息2.4 系统的总体流程 总体流程图:2.5 系统的模块划分2.6 netctoss系统的功能要求1>采集系统:功能描述:该系统主要功能是将电信服务器上的计费文件中所有用户的消费记录采集并且整理出来,然后插入到数据库中。从功能上讲,该系统共分为六个模块,分别是采集模块,入库模块,配置模块,日志模块,备份模块和网络模块。从部署运行方面讲该采集系统分为客户端和服务器端两个部分。客户端部署在电信服务器上,用于采集和整理计费文件中的原始记录并把结果发送到服务器端。服务器端用于
13、接收从客户端发送过来的数据,并持久化到数据库中相应的表中。2>整和系统: 功能描述:该系统负责将数据库中的用户原始的消费数据进行整合形成可供用户和管理查询的帐单,如日清单,月报表,年报表,以及仅供管理员查询的帐务清单,主要用于考察电信服务器的运行情况。3>web系统: 该系统可供用户和管理员查询相关内容。通过登录该系统,用户可以完成查询帐单,修改个人信息,浏览电信运营商提供的各种资费服务。管理员可以完成查询所有用户帐单,修改管理员信息,对用户进行管理(开通,关闭,删除用户帐号),对管理员进行管理(开通,关闭,删除管理员帐号),修改资费项目,查看电信服务器运行情况。根据以上功能,该系
14、统可分为六个模块,用户管理模块,管理员管理模块,用户自服务模块,帐单管理模块,资费管理模块,帐务管理模块。2.7 系统实体间的联系系统的实联系图为:2.8 netctoss系统的数据处理1: 采集与整合数据采集:资料信息:用户信息、管理员信息、资费信息、url信息数据存储:计费数据、故障数据、统计数据明细:日表、月表、年表整合:按小时合并清单表t_detail_x生成所有用户记费数据日表t_day_x;按天合并日表t_day_x生成所有用户记费数据月表t_month_x;按月合并月表t_month_x生成所有用户记费数据年表t_year_x;按小时合并清单表t_detail_x生成所有lab_
15、ip数据日表t_day;按天合并日表t_day生成所有lab_ip数据月表t_month;按月合并月表t_month生成所有lab_ip数据年表t_year;2: 用户帐务信息自查询(1)用户标识信息:帐单id,姓名、帐号、状态(正常/暂停/关闭)、开通日期。(2)帐务信息:日期、登录时长、本月费用(3)服务信息,各种服务信息查询(4)服务帮助,提供一个亲切的服务界面(5)帐单明细:登录时间退出时间时长3: 用户开通管理:(1)管理用户登陆open lab的帐号,包括帐号开通、暂停(加锁)、恢复、删除。(2)用户资料管理:管理用户资料,包括姓名(单位)、身份证号码、住址及资费信息等4: 管理员
16、管理:(1)管理员开通管理:管理用户登陆netct oss的帐号,包括帐号开通、暂停(加锁)、恢复、删除。(2)管理员资料管理:管理管理员资料,包括姓名、身份证号码、住址等。(3)管理员权限管理:改变管理员的各类权限。5:用户自服务管理用户标识信息:帐单id,姓名、帐号、状态(正常/暂停/关闭)、开通日帐务信息:日期、登录时长、本月费用服务信息,各种服务信息查询服务帮助,提供一个亲切的服务界面帐单明细:登录时间 退出时间 时长6:帐单管理整合系统按月生成用户月帐单。用户标识信息:帐单id,姓名、帐号、状态(正常/暂停/关闭)、联系电话、email、开通日期.帐务信息:帐号、日期、登录时长、本月
17、费用帐单明细:登录时间退出时间时长第3章开发环境及开发工具的介绍3.1 jdk概述jdk中包含了java开发中心必需的工具和java程序运行环境(jre)。可以从sun公司网站 免费下载jdk1.4.2。 3.1.1 安装jdkjdk的安装特别简单,和安装应用程序软件没什么区别,值得注意的是jdk的安装路径一定要设好,方便以后环境变量的设置。3.1.2 jdk环境变量的配置安装好jdk后,还需要在环境变量中进行对应的配置。就以本次毕业设计为例。jdk安装在d:j2sdk1.4.2。主要进行以下配置:(1)设置java_home环境变量(2)设置classpath环境变量(3)更新path环境变
18、量的值java_home表示java安装目录,其他的应用程序如果需要使用java运行环境,首先获得java_home变量的信息,然后确定执行的路径。在鼠标右键单击“我的电脑”,在属性栏的高级选项中可以选择环境变量的设置,新建一个系统变量或者用户变量,名称为java_home,它的值为d:j2sdk1.4.2。如图:图2.1 java_home变量设置 然后建立一个classpath的变量,它表示搜索java类的路径,这个路径可以包含一些jar归档文件,也可以是一个目录。在应用程序执行是,往往会动态地在classpath中添加一些自己需要的路径,本机上classpath的值为“.;d:j2sdk
19、1.4.2libtools.jar;d:j2sdk1.4.2libdt.jar;” (.;一定不能少)。图2.2 classpath变量设置当以上都配置好了,我们可以测试下java环境是否配置成功。我们可以在运行中进入命令提示符cmd下面。输入java version回车,看是否能看到当前jdk的版本。如果看见就配置成功了。3.2 eclipse概述eclipse是以个集成开发环境 (integrated development environment)。其前身是ibm的visual age for java(va4j),ibm投入了3千万美元。eclipse是可扩展的体系结构,可以集成不同软
20、件开发供应商开发的产品,将他们开发的工具和组件加入 到eclipse平台中。随java应用的广 泛,各大主要软件供应商都参与到eclipse架构开发中,使得eclipse插件数量与日增加。其中,ibm的websphere studio workbench是突出的例子。eclipse平台的免费,架构的成熟,行业协会eclipse基金会的支持,使得很多的java开发采用了 eclipse架构。如今,ibm通过起附属的研发机构object technologies international(oti),继续引领eclipse开发。3.2.1 eclipse的结构和内核插件(plug- in)是遵循一
21、定规范的应用程序结构编写出来的程序,也成为扩展,不同于组件。eclipse正是一个精心设计的、可扩展的核心结构。通过插件的形式,将 根据自己需要选择的扩展开发工具集成到eclipse平台核心。因此使得可以避免因过去不兼容工具带来的麻烦,降低开发出成本,大幅度提高工作效率。eclipse本身作 为一个开放源码的软件项目,它主要包含3个子项目:平台子项目,java开发工具(jdt-java)子项目,插件开发环境(pde-plug- in)子项目。其中,java开发工具jdt为开发人员提供大量的集成工具集,主要为java应用程序提供编程接口(api)。eclipse软件开发工 具箱(sdk)是主要有
22、eclipse本身的项目软件和其他一些开发源吗的第三方软件组成。次者,插件开发环境(jdt)则为插件开发和测试提供相应的环 境,如:创建插件清单文件、定义扩展点等。其他的java集成开发环境有jbuilder、webspher studio、 netbeans。然而eclipse以其强大的可扩展性和开放性脱颖而出,拥有为数众多的支持者,也被许多大的企业所青睐。3.3 myeclipse的概述myeclipse企业级工作平台(myeclipse enterprise workbench ,简称myeclipse)是对eclipse ide的扩展,利用它我们可以在数据库和j2ee的开发、发布,以及
23、应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的j2ee集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持html, struts, jsf, css, javascript, sql, hibernate。在结构上,myeclipse的特征可以被分为7类:1. j2ee模型2. web开发工具3. ejb开发工具4. 应用程序服务器的连接器5. j2ee项目部署服务6. 数据库服务7. myeclipse整合帮助对于以上每一种功能上的类别,在eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。myeclipse结构上的这种模块化,可以让我们在不影响其他模块
24、的情况下,对任一模块进行单独的扩展和升级。简单而言,myeclipse是eclipse的插件,也是一款功能强大的j2ee集成开发环境,支持代码编写、配置、测试以及除错。3.4 tomcat概述tomcat服务器是当今使用最广泛的servlet/jsp服务器。它运行稳定,性能可靠,是学习和中小企业的最佳选择,而且是开源程序,下载免费,大大降低系统的开发成本。我们可以从/tomcat下载tomcat 5.0 服务器。3.4.1 安装和配置tomcat tomcat安装也很方便。跟其他的安装软件差不多,主要是tomcat环境的配置,本次设计tomcat
25、安装目录是d:tomcat。 安装完成以后,把tomcat里面的类包(*.jar文件)包含到环境变量的classpath里面。这些jar文件都在d:tomcatcommonlib目录下。 然后运行tomcat程序,启动tomcat。在ie中,输入:8080或者http:/localhost:8080。如果出现tomcat的欢迎页面,就表示tomcat的安装和配置是正确的。 测试tomcat是否安装成功 当tomcat配置成功以后,就要在%tomcat%目录下的webapps下面建立一个虚拟目录,来方便将来程序的开发。本次设计是电信运营支撑系统,所以我们在webap
26、ps下面新建立一个叫netctoss的文件夹,然后使用tomcat administrator tools来建立关于netctoss的虚拟目录。这样以后我们的程序就可以在netctoss文件夹下面进行,当设计完成以后,只要在ie里面输入http:/localhost:8080/netctoss就可以看到你所设计的系统程序的实现了3。图2.4 tomcat administrator tool页面和hospital的虚拟目录3.5 oracle的概述oracle9i是以高级结构化查询语言(sql)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户
27、/服务器(client/server)体系结构的数据库之一。 oracle9i作为第一套完整、简单的软件基层结构,展现了前所未有的可扩展性、高性能和应用程序所需要的稳定性,是专门为因特网系统提供的新一代智能型集成应用软件。 oracle9i 增强了oracle的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。它提供了基于角色 (role)分工的安全保密管理。在数据库管理功能、完整性检查、安全性、一致性方面都有良好的表现。支持大量多媒体数据,如二进制图形、声音、动画以及 多维数据结构等。提供了与第三代高级语言的接口软件p
28、ro*系列,能在c,c+等主语言中嵌入sql语句及过程化(pl/sql)语句,对数据库中的数 据进行操纵。加上它有许多优秀的前台开发工具如 power build、sql*forms、visia basic 等,可以快速开发生成基于客户端pc 平台的应用程序,并具有良好的移植性。 oracle9i数据库在物理上是存储于硬盘的各种文件。它是活动的,可扩充的,随着数据的添加和应用程序的增大而变化。在逻辑上是由许多表空间构成。主 要分为系统表空间和非系统表空间。非系统表空间内存储着各项应用的数据、索引、程序等相关信息。第4章 技术准备3.1 java平台企业版(j
29、ava 2 platform,enterprise edition) javaee是一种用来开发分布式企业软件应用系统的平台。java语言从创生之日起,就获得广泛接纳,经历了巨大的发展。越来越多的技术都成了java平台的一部分,为了适应不同的需要也开发出了很多全新的api和标准。最终,sun公司联合了多家业界巨头,在开放的java社区组织名义下,把所有与企业开发相关的标准整合起来,构成了javaee平台。对于企业,javaee平台有很多优势:javaee为企业级运算的许多领域(比如数据库连接、企业业务组件、面向消息的中间件(mom)、web相关组件、通信协议以及互操作性)设立了标准。javae
30、e促进人们基于开放的标准来开发软件;如此构建的系统实现,出自名门、安全稳固,因此javaee构成了一种可靠的技术投资。javaee是一种标准的开放平台,基于此开发的软件组建能够在不同厂商的产品中相互移植,从而避免了被一家厂商锁定。在软件开发过程中采用javaee能够缩短开发周期,使产品尽快投放市场这是因为,系统地很多底层架构和基础部分都已经有产品厂商按照javaee规范标准实现出来了,因此大多数it企业可以不再开发中间件,集中尽力构建符合自己商业需要的应用。javaee提高了程序员的生产力,因为对于一个会java语言的程序员来说很容易就能学会基于java语言的javaee技术。所有企业软件开发
31、能够在javaee平台上、利用java语言完成。javaee增进了现存各种异构系统之间的互操作性。介于javaee平台的这些优势,本项目虽然不是很大,但是可以通过这次开发来理解和熟悉javaee平台。3.2 jsp经典设计模式mvc模式mvc英文即model-view-controller,即把一个应用的输入、处理、输出流程按照model、view、controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层。 视图(view)代表用户交互界面,对于web应用来说,可以概括为html界面,但有可能为xhtml、xml和applet。随着应用的复杂性和规模性,界面的处理也变
32、得具有挑战性。一个应用可能有很多不同的视图,mvc设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。 模型(model)就是业务流程、状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是mvc最主要的核心。目前流行的ejb模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件
33、,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。mvc设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。mvc并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,mvc定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。 业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数
34、据保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。 控制(controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。 模型、视图与控制器的分
35、离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。如图3-1所示是mvc模式的体系结构图。浏览器servletjspjavabeans请求响应jdbc关系数据库 图3-1 mvc模式的体系结构图如上图所示,用户通过提交请求与controller组件(通常表现为servlet)交互。接着controller组件实例化model组件(通常表现为javabeans或者类似技术),并且根据应用的逻辑操纵它
36、们。一旦model被创建,controller决定下一个为用户显示的view(常常表现为jsp),同时view与model交互操作,获得并为用户显示相关数据。在它被提交到controller重新开始此操作之前,view可以修改model的状态。3.3 struts技术介绍struts是一个基于sun javaee平台的mvc框架,主要是采用servlet和jsp技术来实现的。 3.3.1 struts框架的特点计划构件应用程序(无论是否基于web),需要至少一种框架包,如果使用基于web的框架包,struts就是最好的选择。struts跟tomcat、turbine等诸多apache项目一样,
37、都是开发软件。struts的优点主要体现在两个方面:taglib和页面导航。taglib是struts的标签库,灵活使用将会大大提高开发效率。另外在jsp中用户也可以自定义标签。页面导航,它是一个发展方向,利用它可以使系统脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着极大的好处。尤其是当另一批开发者接受这个项目时,这种优势体现得更加明显。同时struts框架还具有以下几个优点:表现与逻辑分离。维护扩展比较方便。便于团体的开发。3.3.2 web.xml的配置web.xml是web应用程序的配置文件,在编写web应用程序时,要在web.xml中完成的配置信
38、息有:映射actionservlet、声明初始化参数、配置标签库、建立welcome文件列表。实现配置文件的代码如下:<?xml version="1.0" encoding="utf-8"?><!doctype web-app public "-/sun microsystems, inc./dtd web application 2.2/en" "<-以下代码是struts中的controller(控制器),系统的指令中转由actionservlet类负责,它从struts-config.xml文
39、件中读取配置信息,并在服务器后台自动启动一个线程,如果没有特别的要求。程序员可以不要管这个部分,照用就可以了,-><web-app> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.actionservlet</servlet-class>指定struts-condig.xml的路径 <init-param> <param-name>config</param-na
40、me> <param-value>/web-inf/struts-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet><servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>&l
41、t;/web-app>技术细节:servlet可以映射成do后缀的文件,当然后缀名可以改写成任何名称,在jsp页面中可以利用“名称.do”触发动作,然后就可以使用该类的方法了。3.3.3 struts-config.xml的配置struts-config.xml是struts框架的核心配置文件,利用actionservlet配合struts-config.xml可实现对整个系统的导航,同时增强了开发人员对系统的整体把握。struts-config.xml中的配置信息包括data-sources数据源配置、beans的映射、global-forward重定向配置、action-mappin
42、g的映射、message-resources数据文件映射和plug-in插件的配置。action类是框架的核心,它是一个连接客户请求和业务操作的桥梁。每个action类主要针对客户的单独的业务操作,单独的业务操作并不意味着action仅能执行一项任务。相反,它执行的任务应该被聚合,围绕一个功能单元。执行单独业务操作的类是从action类中继承而来的(execute()方法)。actionform类是一个抽象类,这个类提供了validate()和reset()方法。validate()是对输入进行验证的方法,reset()为每一个新的请求而调用,是一个起到复位功能的方法。这两个方法都要覆写。be
43、an类可以使一个取之复制的对象或操作实施类。bean类的主要作用是充当值对象或者作为模型业务具体实施的场地,比如数据的增加、删除、修改和查找操作。3.3.4 struts框架的工作原理 struts是mvc的一种实现,它很好的结合了jsp、java servlet,java bean等技术。工作原理如下。在struts中,actionservlet起着一个控制层(controller)的作用。actionservlet是一个通用的控制组件,这个控制组件提供了处理所有发送到struts的http请求的入口点,它截取和分发这些请求到相应的动作类(这些动作类都是action的子类)。另外控制组件也可
44、以负责用相应的请求参数填充actionform(通常称为formbean),并传给动作类(通常称为actionbean)。动作类实现核心商业逻辑,他可以访问java bean或ejb。所有这些控制逻辑利用strut-config.xml文件来配置。视图主要是由jsp来控制页面输出。他接收到action form中的数据,利用html、taglib、bean、logic等显示数据。在struts中,主要存在3种bean,分别是:action、actionformejb或者java bean进行处理。如图3-2所示:浏览器web服务器strut-config.xml(控制层)actionservl
45、etactionaction(视图)jsp(样式)javabean或ejb图3-2 样式图struts框架的工作机制是,actionservlet将request转发给requestprocessor类进行处理。requestprocesso类根据提交过来的url,如*.do,从actionmapping类中得到相对应的actionform类和action类,然后将request的参数对应到actionform类中,进行validate()验证。如果验证成功,则调用action的execute()方法来执行action,最终返回到actionfoward类。如果验证失败,则调用actioner
46、rors类。3.4 spring概述spring的核心是个轻量级容器(container),实现了ioc(inversion of control)模式的容器,spring的目标是实现一个全方位的整合框架,在spring框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其它的框架方案加以替代,spring希望提供one-stop shop的框架整合方案 。3.4.1 spring的简介spring定位的领域是许多其他流行的framework没有的。spring关注提供一种方法管理你的业务对象。 . spring是全面的和模块化的。spring有分层的体系结构,这意味着你能选择使
47、用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中, 你可得到最大的价值。例如,你可能选择仅仅使用spring来简单化jdbc的使用,或用来管理所有的业务对象。 . 它的设计从底部帮助你编写易于测试的代码。spring是用于测试驱动工程的理想的framework。 spring对你的工程来说,它不需要一个以上的framework。spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也 涉及到其他framework没有考虑到的内容。 尽管它仅仅是一个从2003年2月才开始的开源工程,但spring有较长的历史根基。这个开源工程是起源自我在2002年后期出版的e
48、xpert one-on-one j2ee设计与开发书中的基础代码。这本书展示了spring背后的基础架构。然而,这个基础架构的概念要追溯到2000年的早些时候,并且反映了我为 一系列成功的商业工程开发基础结构的经验。 从2003年1月,spring已经落户于sourceforge上。现在有10个开发人员,其中6是高度投入的积极分子。3.4.2 spring的架构性的好处 spring能有效地组织你的中间层对象,无论你是否选择使用了ejb。如果你仅仅使用了struts或其他的包含了j2ee特有apis的 framework,你会发现spring关注了遗留下的问题。 spring能消除在许多工程
49、上对singleton的过多使用。根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。 spring能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过一种一致的方法来进行配置。曾经感到迷惑,一个特定类要查找迷幻般的属性关键字或系统属性,为此不得不读javadoc乃至源编码吗?有了spring,你可很简单地看到类的javabean属性。倒置控制的使用(在下 面讨论)帮助完成这种简化。 spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。spring被设计为让使用它创建的应用尽可能少的依赖于他的apis。在spring应用中的大多数业务对
50、象没有依赖于spring。使用spring构建的应用程序易于单元测试。 spring能使ejb的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用pojos或local ejbs来实现业务接口,却不会影响调用代码。spring帮助你解决许多问题而无需使用ejb。spring能提供一种ejb的替换物,它们适于许多web应用。例如,spring能使用aop提供 声明性事务而不通过使用ejb容器,如果你仅仅需要与单个的数据库打交道,甚至不需要jta实现. spring为数据存取提供了一致的框架,不论是使用jdbc或o/r mapping产品(如hibernate)。 spring确实使你能通
51、过最简单可行的解决办法解决你的问题。这些特性是有很大价值的。3.5 hibernate技术介绍在web系统中体现最多的就是用户对数据的操作,如增加一条数据或修改一条数据。这中间当然少不了系统与数据库的交互和用户与系统之间的交互。hibernate就是来处理系统与数据库之间的交互的,而struts则是用来处理用户与系统之间的交互,这主要表现在各个页面之间的逻辑关系上。hibernate处理系统与数据库之间的数据交换,存在一个连接数据库的配置文件,hibernate.properties。它一般被存放在web-inf/classes文件夹中。同时它也可以是hibernate.cfg.xml文件,如
52、下所示:<?xml version='1.0' encoding='utf-8'?><!doctype hibernate-configuration public "-/hibernate/hibernate configuration dtd 3.0/en" "<!- generated by myeclipse hibernate tools. -><hibernate-configuration><session-factory><property name=&qu
53、ot;dialect">org.hibernate.dialect.mysqldialect</property><property name="connection.url">jdbc:mysql:/localhost:3306/exam</property><property name="connection.username">root</property><property name="connection.password">root&l
54、t;/property><property name="connection.driver_class">com.mysql.jdbc.driver</property><property name="file">mysql1</property><property name="show_sql">false</property><mapping resource="com/xdf/exams/
55、bean/loginlog.hbm.xml" /><mapping resource="com/xdf/exams/bean/examrecord.hbm.xml" /><mapping resource="com/xdf/exams/bean/teacher.hbm.xml" /><mapping resource="com/xdf/exams/bean/student.hbm.xml" /><mapping resource="com/xdf/exams/bean
56、/result.hbm.xml" /><mapping resource="com/xdf/exams/bean/options.hbm.xml" /><mapping resource="com/xdf/exams/bean/subject.hbm.xml" /><mapping resource="com/xdf/exams/bean/question.hbm.xml" /></session-factory></hibernate-configuration&
57、gt; “<session-factory>”是hibernate里面连接数据库的一个数据存储源,可以有多个。数据存储源中很多属性,都是hibernate连接数据库使用到的。如:hibernate.connection.url:与数据库连接的url。本项目使用的是hibernate提供的jdbc连接。hibernate.connection.driver_class:数据库的驱动。本项目使用的是mysql5.0,hibernate还支持sql serve 2000,oracle等很多数据库。hibernate.connection.username:连接数据库时使用的用户名。hib
58、ernate.connection.password:连接数据库时使用的密码。show_sql:是否把sql语句输出到控制台。hibernate.dialect:hibernate方言,要与连接的数据库保持一致,由于本项目使用的数据库是mysql5.0,所以使用“org.hibernate.dialect.mysqldialect”。transaction.factory_class:hibernate的事务策略。当程序中使用transaction时必须对它进行配置。使用hibernate时除了这个配置文件,还需要有映像文件和可持久化类,这样在程序中可以通过hibernateapi直接对持久化类操作,这样就可能省去对数据表中数据的操作。在hibernate.cfg.xm中配置的<mapping resource="com/briup/swim/dao/bean/memberinfo.hbm.xml" />就是配置了一个映像文件。一个持久化类对应一个映像文件,同时一个映像文件又对应一个数据表。表映像文件持久化类,他们都是相对应的。下面就是例子中创建的一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化遗产保护与经济融合-洞察及研究
- 招投标工作培训课件
- 消防风机基础知识培训课件
- 虚拟团队效能评估-洞察及研究
- RTX-002-生命科学试剂-MCE
- 3-Cyano-Gimeracil-methyl-ether-13C3-生命科学试剂-MCE
- 饮料调制培训课件图片
- 微脓肿免疫调控药物-洞察及研究
- 消防自救知识培训内容课件
- 消防维保知识培训内容课件
- 助产士在产时并发症处理中的助产安全
- 单片机的看门狗
- 市场营销(第2版)课件全套 王永贵 第1-17章-市场与市场营销概述及发展-顾客营销学
- 高中数学 人教A版 必修一 《集合与常用逻辑用语》 1.1集合的概念
- 深圳某电厂锅炉维修改造施工组织设计-new(常用版)
- GB/T 4950-2021锌合金牺牲阳极
- GB/T 15171-1994软包装件密封性能试验方法
- 证券从业考试基础模拟卷二(题目+解析)
- 水轮发电机讲义课件
- 信息系统运维服务方案
- 化工试生产总结报告
评论
0/150
提交评论