电子会议厅系统设计_第1页
电子会议厅系统设计_第2页
电子会议厅系统设计_第3页
电子会议厅系统设计_第4页
电子会议厅系统设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

电子会议厅1绪论3摘要3ABSTRACT3关键词STRUTS、SPRING、HIBERNATE42技术分析522框架分析10221开发语言综述10222SSH框架的优点1122运行环境搭建103系统分析931系统层次设计932功能分析10321任务描述10322模块划分1133数据库分析11331数据库需求分析12332数据库逻辑结构设计124系统实施1341班级事务发布功能13411STRUTS部分的设计13412HIBERNATE部分的设计14413SPRING部分的设计14总结35致谢35参考文献351绪论随着大学学生毕业人数的增加及学校对顶岗实习生要求的提高,社会越来越重视将构建学生各类信息化管理软件,集成到一个适应的软件集成平台中,这也是该处理平台开发的目的。软件行业的工业化趋势导致了构件的产生,让部分软件能够像硬件系统那样组合起来构建软件系统,就实现了软件的复用。若能结合系统的实际情况,充分利用已有的软件构件,将会大大提高生产效率,减少大量的重复劳动。因此,为了方便构件的管理和复用,解决传统的软件开发模式中通用性差、柔性低、开发效率低等一系列问题,采用“高内聚,低耦合”的成熟框架STRUTSSPRINGHIBERNATE简称SSH框架来进行构件库管理系统的开发,以达到软件复用的目的。电子会议厅系统对某个班级的事务管理采取了网上发布和讨论的手段,以便征求广大同学对班级事务的建议和意见,从而加强班委工作的有效性。这个系统的实现过程涉及了数据存储、维护、浏览、评论、查询等功能,是一个具有典型WEB特点的管理系统。通过较为完整的开发,读者将掌握基本的分析方法、设计步骤和策略,对其它WEB项目的设计会有极大的帮助。摘要电子会议厅系统对某个班级的事务管理采取了网上发布和讨论的手段,以便征求广大同学对班级事务的建议和意见,从而加强班委工作的有效性。这个系统的实现过程涉及了数据存储、维护、浏览、评论、查询等功能,是一个具有典型WEB特点的管理系统。通过较为完整的开发,读者将掌握基本的分析方法、设计步骤和策略,对其它WEB项目的设计会有极大的帮助。其采用了当今比较流行的框架STRUTSSPRINGHIBERNATE的系统结构。ABSTRACTELECTRONICCONFERENCESYSTEMTRANSACTIONMANAGEMENTTOACLASSTAKENONLINEPUBLISHINGANDDISCUSSTHEMEANS,INORDERTOSEEKTHEADVICEOFTHESTUDENTSOFCLASSAFFAIRS,SOASTOSTRENGTHENTHEEFFECTIVENESSOFCLASSWORKTHEIMPLEMENTINGOFTHISSYSTEMRELATESTOTHEDATASTORAGE,MAINTENANCE,BROWSE,COMMENT,QUERYANDOTHERFUNCTIONS,ISATYPICALCHARACTERISTICOFWEBMANAGEMENTSYSTEMTHROUGHTHEDEVELOPMENTOFMORECOMPLETE,THEREADERWILLMASTERTHEANALYSISMETHOD,THEDESIGNSTEPSANDTHEBASICSTRATEGY,DESIGNOFOTHERWEBPROJECTSWILLBEOFGREATHELPTHESTRUCTUREOFTHESYSTEMFRAMEWORKOFTODAYSPOPULARSTRUTSSPRINGHIBERNATE关键词STRUTS、SPRING、HIBERNATE2技术分析21框架分析211开发语言综述随着互联网技术的迅猛发展与JAVA语言的不断完善与优化,JAVAWEB应用开发是一条很重要的开发途径。SUN公司推出的MODEL2模式规范了JAVAWEB的应用开发,而不断涌现出的优秀开发框架使得WEB的开发更加迅速、便捷,大大降低了系统的耦合度,每个层次在系统中都具有明确的分工。在框架的开发应用中,STRUTS是MODEL2的经典实现,具有组件的模块化,灵活性和重要性的优点;HIBERNATE由于其功能与性能的优越而成为STRUTS框架最理想的底层数据交换组件;SPRING则致力于JAVAEE应用的各层的解决方案,而不是仅仅专注于某一层的方案,它贯穿于表现层,业务层及持久层,并与其它框架无缝地整合。以JSP技术为基础,整合STRUTS,HIBERNATE与SPRING技术开发JAVAWEB应用已经成为主流的JAVAWEB开发技术体系。212SSH框架的优点SSH框架是J2EE应用中STRUTSSPRINGHIBERNATE三大免费开源框架的结合使用,它可以看成工具,也是中间件。它是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。它有很多优秀的设计理念及模式应用。比如,STRUTS属于MVC框架,关键是要了解MVC的概念及大致原理;HIBERNATE属于ORM系统,属于持久层的解决方案,同样需要对ORM的概念及原理有一个总体的了解;SPRING属于应用程序框架,其核心是IOC容器以及AOP,SPRING中还集成了很多适用东西,比如对JDBC的封装、自己的MVC、对动态语言的简洁访问等。SSH由以下3个框架构成STRUTS、SPRING、HIBERNATE是三个既相互独立又彼此关联的框架,它们可以无缝地整合起来构建灵活、易于扩展的多层WEB应用程序,STRUTS用来实现表示层,SPRING实现业务层,HIBEMATE实现持久层。图21STRUTS、SPRING、HIBERNATE关系图1STRUTS框架STRUTS是APACHE软件基金会(ASF)赞助的一个开源项目。它通过采用SERVLET/JSP技术,实现了基于JAVAEEWEB应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。目前STRUTS很好地解决了早期使用JSP和SERVLET进行开发时遇到的问题,成为一个独立的WEB应用程序的开发框架。图22STRUTS框架工作流程2HIBERNATE框架HIBERNATE是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得JAVA程序员可以随心所欲的使用对象编程思维来操纵数据库。HIBERNATE可以应用在任何使用JDBC的场合,既可以在JAVA的客户端程序使用,也可以在SERVLET/JSP的WEB应用中使用,最具革命意义的是,HIBERNATE可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。HIBERNATE的核心接口一共有5个,分别为SESSION、SESSIONFACTORY、TRANSACTION、QUERY和CONFIGURATION。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。图23HIBERNATE框架3SPRING框架SPRING是一个开源框架,它由RODJOHNSON创建。它是为了解决企业应用开发的复杂性而创建的。SPRING使用基本的JAVABEAN来完成以前只可能由EJB完成的事情。然而,SPRING的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何JAVA应用都可以从SPRING中受益。图24SPRING框架简单来说,SPRING是一个轻量级的控制反转IOC和面向切面AOP的容器框架。总结起来,SPRING有如下优点低侵入式设计,代码污染极低独立于各种应用服务器,可以真正实现WRITEONCE,RUNANYWHERE的承诺SPRING的DI机制降低了业务对象替换的复杂性SPRING并不完全依赖于SPRING,开发者可自由选用SPRING框架的部分或全部22运行环境的搭建在开发之前,需要明确开发环境。环境搭建以ECLIPSE32MYECLIPSE50插件为标准。由于启动的快捷性,这个环境比较适合初次学习WEB开发的读者。而在实际开发工作中,MYECLIPSE企业级工作平台却是开发者的首选。MYECLIPSE本身是的首选是功能丰富的JAVAEE集成开发环境,包括了完备的编码,调试,测试和开发功能,完整支持HTML,STRUTS,JSF,CSS,JAVAVSCRIPT,SQL,HIBERNATE等设计。由于基于ECLIPSE内核,所以它可以单独启动并进行WEB开发。3系统分析31系统层次设计系统根据SSH框架的特点,决定使用四层结构,这样做的优点是1、可以分层开发,访问数据库与业务逻辑实现能够分开。2、提高代码的复用图31系统的分层结构32功能分析321任务描述为某个班级创建一个“电子会议厅”,实现对班级事务的管理和讨论,加强班级事务管理的有效性。按照使用者的身份将用户划分为两类管理员和普通用户;按照功能划分,涉及到的开发工作有信息发布、信息维护(包括修改和删除)、信息浏览、信息评论和信息查询。鉴于讲解和实践相结合的考虑,我们把用户的工作划分留到实训中,由读者自己完成。为了实现各种功能,在这里我们用管理员的身份进行操作。按照类别,我们将班级事务分成4部分学习竞赛、文体活动、社会事务表示层业务逻辑层持久化层数据库层和各类补助,每一块都要实现发布、维护、浏览、评论和查询功能。其中对事务评论的操作不在页面中单另设计选择项,而是将此功能放在浏览中完成。当用户浏览到某条信息时,可以看见其他同学的评论,自己也可以随时发表评论。功能结构设计如图32所示。图32“电子会议厅”实现的功能结构322模块划分根据要实现的功能要求,将它们集中设计在同一个视图中,如图54所示。根据视图页面呈现的效果可以看出这样的操作用户是管理员的身份。如果以普通同学的身份登录进来,则没有信息发布息维护功能。在这里,我们强调了功能的实现,而弱化了系统安全的概念。图33项目运行主界面功能模块说明班级事务发布系统提供的后台维护模块,由管理员进行信息的发布。班级事务维护由管理员对已经发布了的信息进行修改或删除,为了操作的方便性,将这两个功能做到了一起,从后面的设计中可以看到。班级事务浏览是本系统一个很重要的模块,为班级成员参与班级事务管理提供了平台。用户可以通过它查看到信息的细节。班级事务评论在界面上看不到它的提示,但是随着用户对事务的浏览,在显示每条信息的内容时,便可以看到评论功能的提示了。用户可以通过该功能发表对班级事务的看法,提出建议和意见。班级事务查询用户输入信息标题中的关键字,就可以将符合条件的所有班级事务显示出来,供用户浏览或评论。33数据库分析在系统开发之初,首先要明确用户需求,确定系统要实现的功能;接下来就要根据功能要求,分析数据来源和处理过程,最后规划出合理的数据库系统。由于数据库处于系统实现过程的最底层,所以它的稳定性是保证顺利开发的前提。通过数据分析,要制定出合理的表结构、表关系,使得功能实现即顺利又符合数据库设计原则。我们将通过以下两个步骤完成数据库的设计数据库需求分析分析本系统所需的数据库实体,并设计数据库实体之间的关系,给出ER图;数据库逻辑结构设计详细描述数据库表的基本结构。331数据库需求分析对数据库做细致地需求分析、准确理解和把握数据关系,对于软件的成功至关重要。由于本系统简化了用户需求,是一个功能较为简单的管理系统,所以数据关系、数据库设计都较为简单。一些细致的功能要求将在实训环节中给出,请读者结合自己的使用经验,再参考其它成型的应用模式,完成实训中的题目要求。在数据库需求分析阶段,需要查阅相关说明书,分析系统中出现的名词和术语,如事务、事务类别、发布、评论等。对这些信息的掌握有助于进行模块划分和功能实现,这里直接给出分析后得到的数据信息。班级事务信息包括事务号、事务标题、事务内容、发布时间、所属的事务类别号;事务类别信息包括事务类别号、事务类别名称;事务评论信息包括评论号、事务号、评论内容、评论时间、评论者。通过这样的规划,实际上就形成了系统的整体概念模型。如果以实体的概念加以描述,即得到了3个实体对象,再通过分析它们的关系,得到如图34所示的实体关系图。图34数据库的ER模型图从表中可以看出三个实体之间的关系如下RELATIONSHIP_1确定SORT实体与AFFAIR实体之间是一对多的关系,即一个事务类别中有多条事务信息,而每条事务信息只能从属于某个类别;RELATIONSHIP_2确定AFFAIR实体与COMMENT实体之间是一对多的关系,即一条事务信息可以对应多个评论,而每个评论只能从属于一条事务信息。332数据库逻辑结构设计根据已经得到的ER模型图,现在来进行数据库的结构设计,即生成数据库的物理模型。以3个实体为基础,需要设计3张数据表,分别是SORT表存储关于事务类别的信息;AFFAIR表存储具体的班级事务信息;COMMENT表存储关于事务信息的评论。这个系统只需要上述的3张表就够了。SORT表存储班级事务类别信息,包括类别号、类别内容,其表结构如表31所示。表31SORT事务类型表序号字段描述类型和长度其它默认值1SORTID事务类别号INT主键、非空无2NAME事务类别名称VARCHAR20无AFFAIR表存储具体的班级事务信息,包括事务号、事务标题、事务内容、发布时间、所属的事务类别号,其表结构如表32所示。表32AFFAIR事务表序号字段描述类型和长度其它默认值1AFFAIRID事务号INT主键、非空无2TITLE事务标题VARCHAR50无3CONTENT事务内容VARCHAR300无4FBTIME发布时间DATAEIME无5SORTID事务类别号INT无COMMENT表存储对班级事务的评论信息,包括评论号、评论内容、评论时间、评论者、所评论的事务号,其表结构如表33所示。表33COMMENT评论表序号字段描述类型和长度其它默认值1COMMENTID评论号INT主键、非空无2CONTENT评论内容VARCHAR300无3PLTIME评论时间DATETIME无4AUTHOR评论者VARCHAR20无5AFFAIRID事务号INT无完成了对数据库表的初步设计后,接下来要在MYSQL中完成具体的创建工作。创建数据库和表可以在NAVICAT前台操作环境中按照它提供的向导做,也可以让它执行SQL脚本。如图35所示,打开“创建查询”窗口,输入SQL脚本代码后,点击“运行”,得到创建结果。图35执行SQL脚本下面给出对应的SQL脚本代码。创建数据库CLASS_AFFAIR1CREATEDATABASECLASS_AFFAIR2USECLASS_AFFAIR创建事务分类表SORT1DROPTABLEIFEXISTSSORT2CREATETABLESORTSORTIDINT4NOTNULL,NAMEVARCHAR20,PRIMARYKEYSORTIDENGINEINNODBDEFAULTCHARSETGB2312创建事务信息表AFFAIR1DROPTABLEIFEXISTSAFFAIR2CREATETABLEAFFAIRAFFAIRIDINT4NOTNULL,TITLEVARCHAR50,CONTENTVARCHAR300,FBTIMEDATETIME,SORTIDINT4,PRIMARYKEYAFFAIRIDENGINEINNODBDEFAULTCHARSETGB2312创建事务评论表COMMENT1DROPTABLEIFEXISTSCOMMENT2CREATETABLECOMMENTCOMMENTIDINT4NOTNULL,CONTENTVARCHAR300,PLTIMEDATETIME,AUTHORVARCHAR20,AFFAIRIDINT4,PRIMARYKEYCOMMENTIDENGINEINNODBDEFAULTCHARSETGB2312执行脚本后,建立了数据库和相应的表,三个表结构如图36所示。图36创建成功后的表结构4系统实施SPRING框架认为,J2EE应该针对接口编程,而不是类,并且应该最大化的使用JAVABEAN来配置系统。SRING通过松耦合的方式把J2EE应用中各层对象有效地组织起来,不管是控制层的ACTION对象,还是业务层的SERVICE对象,还是持久层的DAO对象,都可以在SPRING的管理下有机地调用,运行。在SPRING框架中,上述的各层对象都被称为BEAN,SPRING正是通过其配置文件对这些BEAN进行组织的。这里的SPRING配置文件必须遵循SPRINGBEANSDT定义的内容模型,推荐采用XML格式。YUEHUANCHENGCHENGDUCHINA1381111111BEANFACTORY工厂的介绍及代码两段代码41班级事务发布功能411STRUTS部分的设计一、视图信息在用STRUTS框架实现MVC结构之前,我们先了解一个项目的运行过程,以便明确实现过程的细节。鉴于初次学习STRUTS,所以案例比较简单。随着STRUTS框架的讲解和设计,在后面的小节中案例会逐步复杂起来,读者会进一步了解STRUTS的实现过程。一个应用背景假设用户在客户端完成关于图书信息的录入,服务器端获取信息后给客户一个反馈,以新的页面显示客户录入的图书信息。运行结果如图41所示。图41图书信息的录入与反馈按照MVC的处理方式实现这个过程很简单视图部分仅为两个JSP页面,一个用于录入信息,一个用于显示信息;控制器部分用来从录入界面接收数据,存储到内置对象里并交给视图页面显示即可;由于数据较少,模型部分甚至没有必要去设计。现在要借助STRUTS框架实现这个过程,实际上还是围绕MVC中的三个模块进行设计,只是要明确STRUTS架构与MVC各模块的对应关系。组件关系图代码此时STRUTSCONFIGXML文件中DESIGN视图显示的结果如图42所示。图42第二阶段组件之间的关系编写代码。在ACTION组件中设计代码,完成用户数据的获取,并通过处理BEAN完成数据的存储,实现过程与前一章中的代码几乎一样。AFFAIRSADDACTIONJAVA文件的代码如下1PUBLICACTIONFORWARDEXECUTEACTIONMAPPINGMAPPING,ACTIONFORMFORM,HTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSETHROWSIOEXCEPTION2INPUTACTIONFORMINPUTFORMINPUTACTIONFORMFORM3AFFAIRAFFAIRNEWAFFAIR4AFFAIRHANDLEHANDLENEWAFFAIRHANDLE5INTNUMHANDLERECORDCOUNT6STRINGTITLEINPUTFORMGETTITLE7STRINGCONTENTINPUTFORMGETCONTENT8INTSORTIDINTEGERPARSEINTINPUTFORMGETSORT9AFFAIRSETAFFAIRIDNUM10AFFAIRSETTITLENEWSTRINGTITLEGETBYTES“ISO88591“11AFFAIRSETCONENTNEWSTRINGCONTENTGETBYTES“ISO88591“12DATEFORMATDATEFORMATDATEFORMATGETDATETIMEINSTANCE13DATEDATENEWDATE14AFFAIRSETFBTIMEDATEFORMATFORMATDATE15AFFAIRSETSORTIDSORTID16IFHANDLESAVEAFFAIR17REQUESTSETATTRIBUTE“RESULT“,“OK,添加记录成功“18ELSE19REQUESTSETATTRIBUTE“RESULT“,“SORRY,添加记录失败“20RETURNMAPPINGFINDFORWARD“RESULT“21控制层代码PUBLICVOIDDOPOSTHTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSETHROWSIOEXCEPTION,SERVLETEXCEPTIONPROCESSREQUEST,RESPONSE412HIBERNATE部分的设计编写业务层代码。为了更好地组织文件,我们将业务层类放在SERVICE包中,给这个类起名为INFORMATIONSERVICEJAVA。具体的代码如下1PUBLICCLASSINFORMATIONSERVICE2PUBLICSTATICBOOLEANSAVEINFORINFORMATIONINSTANCE3IINFORMATIONDAODAODAOFACTORYGETINFORMATIONDAO4TRY5DAOSAVEINSTANCE6SYSTEMOUTPRINTLN“成功地保存了图书信息“7RETURNTRUE8CATCHHIBERNATEEXCEPTIONE9SYSTEMERRPRINTLN“保存图书信息失败“10RETURNFALSE11FINALLY12TRY13DAOGETSESSIONCLOSE14CATCHEXCEPTIONE15SYSTEMERRPRINTLN“SESSION对象无法关闭“16171819对于这段代码,有以下几点说明DAO工厂创建了DAO类的实例对象,却在第3行代码处赋给了接口变量,这里用了接口回调的概念,即把实现某一接口的类所创建的对象的引用赋给该接口变量,那么接口变量就可以调用被类所实现的接口中的方法了。因此,第5行代码中的SAVE方法在形式上来自接口,具体实现却执行了DAO类中的方法体。方法体中设计了输出语句是为了测试的需要,在测试无误的情况下可以屏蔽;第13行代码通过DAO调用了GETSESSION方法,这源于IINFORMATIONDAO接口继承了IBASEHIBERNATEDAO接口,拥有了GETSESSION方法,所以可以获得SEESION对象并关闭它了。SAVEINFOR方法的返回类型为BOOLEAN型,所以在控制层可以通过返回值判断数据信息是否在数据库表中存储成功。数据处理的DAO模式实现方式HIBERNATE在解决问题的时候有自身的一套结构,我们称之为DAO模式结构。这种结构将底层对数据的访问与高层的业务逻辑处理分开,所以在控制器部分不会直接操作DAO类,而是通过业务层与DAO层进行交互。控制层只是编写控制逻辑,针对业务层的处理,将结果反馈给用户。DAO模式的处理结构如图720所示。图720DAO模式的处理结构分析这个图,会有以下几个问题控制层与DAO层之间是通过业务层做“中介”的,那么业务层应该向控制器提供相应的服务方法来满足控制层的处理要求。DAO层中的DAO类集合了对相应数据库表的操作方法,那么业务层应该根据具体的业务要求调用适当的方法完成对数据库表的操作。DAO层操作的是HIBERNATE持久化对象,或者是对象中的某个属性,那么控制层应该准备好相应的数据,通过业务层传递给DAO层。根据上面的分析,DAO模式对业务层的设计提供以下思路DAO类的产生源于映射文件的创建,所以它所包含的方法针对了某个特定的数据库表,那么业务层的设计最好也针对这个特定的数据库表。根据业务处理的需要,可能会设计若干个业务方法来调度DAO层的处理方法,如对INFORMATION这个表可能会有存储某条图书信息、删除某条信息、查询类型是散文的所有图书信息等操作,那么针对这个表的业务层类可能会定义诸如SAVEINFORINFORMATIONINSTANCE、DELETEINFORINFORMATIONINSTANCE、QUERYINFORSTRINGPROPERTYNAME,STRINGPROPERTYVALUE等方法,而这些方法的具体实现则会依靠DAO类中的SAVE、DELETE、FINDBYPROPERTY方法来实现。为了见名之意,这个业务层类也许会起名为INFORMATIONSERVICEJAVA。同理,针对其他数据库表的业务层类的起名规则相同。可见,业务层类汇集了针对某个数据库表的所有业务方法。业务层在调度DAO类的方法时,肯定要先实例化这个DAO类,才能依靠对象调用DAO类方法。同理,各个业务层类均要实例化对应的DAO类。DAO模式提出了一种特殊的解决方案通过DAO工厂“生产”DAO类对象,而不是在业务层中通过NEW关键字创建DAO类对象。具体做法是建立一个名为DAOFACTORYJAVA的文件,里面定义若干个STATIC方法用于返回各个DAO类的实例对象,如下面的程序代码1PUBLICCLASSDAOFACTORY2PUBLICSTATICINEWSTDAOGETNEWSTDAO/针对NEWSTDAO类3RETURNNEWNEWSTDAO45PUBLICSTATICICOLUMNTDAOGETCOLUMNTDAO/针对COLUMNTDAO类6RETURNNEWCOLUMNTDAO78PUBLICSTATICICOMMENTTDAOGETCOMMENTTDAO/针对COMMENTTDAO类9RETURNNEWCOMMENTTDAO1011从代码中可以看到GETXXX方法实际上就是针对某个DAO类,通过NEW关键字实例化其对象的过程。其中,XXX名称与DAO类的类名相同。由于是STATIC方法,在业务层就可以通过DAOFACTORYGETXXX的方式调用该方法得到DAO实例了。当然,还可以根据需要,再定义产生其它DAO实例的静态方法。在上面的代码中,读者也许注意到了GETXXX应该返回的是DAO类的对象,实际上却返回了一个接口。这也是DAO模式的一种组织结构,即用接口把DAO类提供的方法独立出来,在业务层只与DAO接口打交道。为什么要这样做呢考虑下面的情况如果修改了DAO实现类,在生成DAO实例的业务层势必要跟随这种变化。作为项目的设计者,遵循的原则是尽量减少业务层和数据层的各自变化而导致的相互影响,即减少DAO实现变化时SERVICE对DAO层的依赖程度。如果让DAO类实现接口,在业务层与接口交互,那么当修改了DAO实现类时,只要接口不变,那么对应的业务层类就不需要作任何修改。DAO层代码413SPRING部分的设计写控制层里的关键代码第一个阶段的设计STRUTS部分的设计修改INDEXJSP文件的代码。将文件中的SRC“LEFTJSP“改成SRC“GETSORTDO“,即向SERVLET发出一个请求。创建ACTION及ACTIONFORWARD组件,由于用户请求没有要提交的数据,所以不设计ACTIONFORM组件,这就大大简化了设计过程。ACTION组件类SORTLISTACTIONJAVA文件中的核心代码如下1PUBLICACTIONFORWARDEXECUTEACTIONMAPPINGMAPPING,ACTIONFORMFORM,2HTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSE3LISTLISTSORTSERVICEGETSORTLIST4REQUESTSETATTRIBUTE“SORTLIST“,LIST5RETURNMAPPINGFINDFORWARD“RESULT“6代码说明如下EXECUTE方法通过业务层执行GETSORTLIST方法后,会得到分类信息。而这些信息存储在LIST表中,所以要定义一个LIST对象来接收这些数据。定义LIST类对象时,按照语法要求,要指定LIST类的基类型,否则会有警告错误。这里的LIST类对象用来存储从SORT表中获取的数据,与该表对应的实体类是SORTJAVA,所以第3行代码被改成LISTLISTSORTSERVICEGETSORTLIST随后,按照ECLIPSE编译系统的提示,将所有涉及到该操作的LIST类的声明均改正过来,警告错误会自动消失。以后遇到类似的问题都这样处理,教材中不再作解释说明。将LIST对象存储到内置对象里,由下一个视图页面(LEFTJSP)操作。这一部分工作结束后,STRUTSCONFIGXML文件中增添了一个元素,内容如下156修改LEFTJSP文件的代码。控制器将得到的数据以“SORTLIST”的索引名称存储到了内置对象里,那么接下来的显示视图就要从内置对象里取出索引值,再根据显示的需要设计输出形式。LEFTJSP文件中发生变化的代码如下1LISTARRAYLISTREQUESTGETATTRIBUTE“SORTLIST“345班级事务浏览611“TARGET“MAINFRAME“1213代码中需要强调的一点是第11行代码定义了分类信息的显示和超级链接。由于对超级链接的处理还没有设计,所以将原来的SERVLET名称用“XXXX”代替了。实际上不改变这个值,视图也会正常运行,只是再往下操作就会出错了。之所以代替掉,是为了让读者在这个阶段看到这段代码不至于产生误解。HIBERNATE部分的设计编写ISORTDAO接口方法这个阶段要从SORT表中取出所有的分类信息,要通过DAO类提供的FINDALL方法实现,所以在对应的接口类中要定义这个方法。在ISORTDAOJAVA中定义抽象方法PUBLICLISTFINDALL这样就可以在业务层通过DAO对象调用该方法了。建立并完善SERVICE层业务在SRC目录下建立一个名为SERVICE的包,并创建针对SORTDAO的业务层类SORTSERVICEJAVA。在ACTION组件中设定了获取分类信息的业务层方法是GETSORTLIST,所以接下来编写这个方法并调用DAO类中的FINDALL方法,完成对数据库表SORT所有信息的获取。SORTSERVICEJAVA文件中GETSORTLIST方法的代码如下1PUBLICSTATICLISTGETSORTLIST2ISORTDAODAODAOFACTORYGETSORTDAO3TRY4LISTLISTDAOFINDALL5SYSTEMOUTPRINTLN“成功地获得了所有分类信息“6RETURNLIST7CATCHHIBERNATEEXCEPTIONE8SYSTEMERRPRINTLN“获取分类信息失败“9RETURNNULL10FINALLY11TRY12DAOGETSE

温馨提示

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

评论

0/150

提交评论