于mvc设计模式的struts架构的研究---毕业论文_第1页
于mvc设计模式的struts架构的研究---毕业论文_第2页
于mvc设计模式的struts架构的研究---毕业论文_第3页
于mvc设计模式的struts架构的研究---毕业论文_第4页
于mvc设计模式的struts架构的研究---毕业论文_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

经济学院本科生毕业设计I摘摘摘摘要要要要电子商务已经成为目前商务领域中非常重要的一种运作方式,如何快速、高效的构建出客户所需的电子商务网站已经成为JAVAWEB程序员最关心的问题。作为对经典的MVC设计模式的一种具体实现,STRUTS是建立在当前动态网站设计中JSP,SERVLET,XML等相关开发技术基础之上的一种主流的开发架构,是一种基于MVC的经典MVC设计模式框架。STRUTS跟TOMCAT、TURBINE等诸多APACHE项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许STRUTS是一个很好的起点。虽然它现在还有不少缺点,但它是一种非常优秀的J2EEMVC实现方式。关键词STRUTS;J2EE;MVCABSTRACTTHEELECTRONICCOMMERCEALREADYBECOMESPRESENTCOMMERCEDOMAINCENTRALAFRICAOFTENTHEIMPORTANTONEOPERATIONWAY,HOWFAST,HIGHLYEFFECTIVETHEELECTRONICCOMMERCEWEBSITEWHICHCONSTRUCTEDTHECUSTOMERTONEEDALREADYBECOMESJAVATHEWEBPROGRAMMERMOSTISSUEOFCONCERNASTHECLASSICSMVCDESIGNPATTERNONEKINDOFCONCRETEREALIZATION,STRUTSISTHEESTABLISHMENTINTHECURRENTDYNAMICWEBSITEDESIGNJSP,SERVLET,CORRELATIONDEVELOPMENTTECHNOLOGYBASEANDSOONTHEABOVEXMLONEKINDOFMAINSTREAMDEVELOPMENTOVERHEADCONSTRUCTION,ISONEKINDBASEDONTHEMVCCLASSICSMVCDESIGNPATTERNFRAMESTRUTSWITHTOMCAT,TURBINEANDSOONMANYAPACHEPROJECTISSAME,OPERATESSOURCESOFTWARE,THISISITSBIGMERITENABLESTHEDEVELOPMENTTHEMORETHOROUGHUNDERSTANDINGITSINTERIORREALIZATIONMECHANISMMOREOVER,SPEAKINGOFATPRESENTTHEDOMESTICJSPDEVELOPMENT,BESIDESUSESTHECOMMONLYUSEDMARKWHICHJSPBRINGS,VERYLITTLEDEVELOPSOWNMARK,PERHAPSSTRUTSISAVERYGOODBEGINNINGALTHOUGHITNOWALSOHASMANYSHORTCOMINGS,BUTITISONEKINDOFEXTREMELYOUTSTANDINGJ2EETHEMVCREALIZATIONWAYKEYWORDSTRUTSJ2EEMVC经济学院本科生毕业设计II经济学院本科生毕业设计III目目目目录录录录摘要IABSTRACTI1绪论111选题及研究意义112课题研究的背景及内容12J2EE知识121J2EE概述122J2EE技术23STRUTS框架基于MVC的设计模式231MVC模式232框架的概念433STRUTS概述4331STRUTS组件4332STRUTS工作流程5333STRUTS实现MVC的机制74开发工具的安装和配置841JDK的安装和配置842TOMCAT的安装和配置943ECLIPSE和MYECLIPSE的安装和配置105基于STRUTS的课程查询中心系统开发1051需求分析1052功能设计1153创建视图1354构建模型1755创建控制器组件2156发布和运行课程查询中心系统27总结28参考文献29致谢30经济学院本科生毕业设计1基于基于基于基于MVC设计模式的设计模式的设计模式的设计模式的STRUTS架构的研究架构的研究架构的研究架构的研究1引言11选题及研究意义选题及研究意义选题及研究意义选题及研究意义寻求在软件开发过程中设计级的重用的想法由来已久,这个领域的一个突破就是设计模式的提出。所谓设计模式,实际上就是对以往成功的解决方案的重复利用。就如同一个建筑设计师要设计一栋商用写字楼,一定会借鉴许多在商用楼设计方案中成功的设计经验一样。软件设计领域中的设计模式则是对以往成功软件设计方式的重用,是对专业软件开发人员技术和经验的重复利用,这无疑能够有效地降低软件开发的风险,提高软件开发的效率。MVC模式是国外用的比较多的一种设计模式,很多的开源项目,就是利用这一设计思想,已将其做成了WEB框架。WEB框架有很多,例如TURBINE,JETSPEED,STRUTS。它们各有特点,而且功能强弱不同,这里只使用STRUTS框架作为研究对象。12课题研究的背景及内容课题研究的背景及内容课题研究的背景及内容课题研究的背景及内容STRUTS是一个基于SUNJ2EE平台的MVC框架,主要是采用SERVLET和JSP技术来实现的。由于STRUTS能充分满足应用开发的需求,简单易用,敏捷迅速。STRUTS把SERVLET、JSP、自定义标签和信息资源MESSAGERESOURCES整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,是一个非常不错的应用框架。STRUTS构架一经推出,即受到各JAVA开发群体的广泛重视,从2004年开始逐渐升温,并日渐成为JAVA创建WEB应用开发的最流行的框架工具,在目前JAVAWEB程序员的招聘要求中,几乎都提出了对STRUTS的要求,精通STRUTS架构已经成为JAVAWEB程序员必备的技能。在这样的一个情况下,我选择了这个课题作为我的毕业设计题目,一是为了掌握一种语言,但更重要的是为毕业以后的工作做更充分的准备。2J2EE知识知识知识知识21J2EE概述概述概述概述J2EE是美国SUN公司刚刚推出的一种全新概念的模型,与传统的互联网应用程序模型相比有着不可比拟的优势。当今许多企业都需要扩展他们的业务范围,降低自身经营成本,缩短他们和客户之间的响应时间,这就需要存在一种简捷,快速的服务于企业,合作伙伴和雇员之间。典型的说,提供这些服务的应用软件必须同企业信息系统(EIS)相结合,并提供新的能向更为广阔的用户提供的服务。这些服务要具备以下的特点A高可用性来满足现在的全球商业环境B安全性保护用户的隐私和企业数据的安全C可依赖性和可扩展性保证商业交易的正确和迅捷经济学院本科生毕业设计2通常这些服务是由分布的应用程序组成的,包括前端数据端和后端数据源以及它们之间的一层或几层,这些中间层提供了把商业功能和数据与EIS相结合的功能。这些中间层把客户端从复杂的商业逻辑中分离出来,利用成熟的INTERNET技术使用户在管理上所花费的时间最小化。J2EE正式降低了开发这种中间层服务的成本和复杂程度,因而使得服务可以被快速的展开,并能够更轻松的面对竞争中的压力。22J2EE技术技术技术技术J2EE包括的技术如下1ENTERPRISEJAVABEANSEJBEJB定义了服务器方组件编写的规则和,同时定义了如何管理组件和应用程序以及他们之间如何通信。EJB促进了组件交易市场的发展,在这里,组件提供商可以出售可重用的组件。2JAVAREMOTEMETHODINVOCATIONRMIANDRMIIIOPRMI允许内部通信并且提供和其他服务通信的能力。RMIIIOP是使用IIOP协议的RMI的精简扩充,可以和CORBA整合在一起。3JAVANAMINGANDDIRECTORYINTERFACEJNDIJNDI鉴别组件或者其他网络资源的位置。4JAVADATABASECONNECTIVITYJDBCJDBC是一个关系数据库的桥,允许操作关系型数据库5JAVATRANSACTIONAPIJTAANDJAVATRANSACTIONSERVICEJTSJTA和JTS规范允许组件支持交易保护。6JAVAMESSAGINGSERVICEJMSJMS允许分布式对象异步通信。7JAVASERVLETSANDJAVASERVERPAGESJSPSSERVLETS和JSPS是网络组件,观念上符合面向请求/回应计算,象通过HTTP协议和CLIENT端通信。8JAVAIDLJAVAIDL是SUN公司实现基于JAVA的CORBA技术。JAVAIDL允许和其他语言的应用整合,同时也允许基于CORBA的分布式计算。3STRUTS框架框架框架框架基于基于基于基于MVC的设计模式的设计模式的设计模式的设计模式31MVC模式模式模式模式MVC是一种设计模式,它强制性地把应用程序的输入、处理和输出分开。MVC应用程序分成三个核心模块模型、视图和控制器,它们分别担负不同的任务。如图31。1)视图视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接受用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。经济学院本科生毕业设计3图31MVC模式图2)模型模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。3控制器控制器接受用户的输入并调用模型和视图去完成用户的需求。当WEB用户单击WEB页面中的提交按钮来发送HTML表单时,控制器接收请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据。4)MVC处理过程首先控制器接受用户的请求,并决定应该调用哪个模型来进行处理,然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。5)MVC的优点首先,多个视图能共享一个模型。如今,同一个WEB应用程序会提供多个用户界面,例如用户希望既能通过浏览器来收发电子邮件,还希望通过手机来访问电子邮箱,这就要求WEB网站同时提供INTERNET界面和WAP界面。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。其次,模型是自包含的,与控制器和视图保持相对独立,所以可以方便的改变应用程序的数据层和业务规则。如果把数据库从MYSQL移植到ORACLE,或者把RDBNS数据源改变成LDAP数据源,只需控制器接受用户请求调用模块响应用户请求选择视图显示响应结果视图显示模型状态接受数据更新请求把用户输入数据传给控制器模型代表应用程序状态响应状态查询处理业务流程通知视图业务状态更新选择视图业务处理用户请求状态查询通知数据更新经济学院本科生毕业设计4改变模型即可。一旦正确的实现了模型,不管数据来自数据库还是LDAP服务器,视图都会正确的显示它们。由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松耦合的构件。32框架的概念框架的概念框架的概念框架的概念框架,即FRAMEWORK。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。33STRUTS概述概述概述概述STRUTS就是在JSPMODEL2的基础实现了MVC设计模式的WEBFRAMEWORK。基于STRUTS构架的WEB应用程序基本上符合JSPMODEL2的设计标准,可以说是MVC设计模式的一种变化类型。331STRUTS组件组件组件组件1)控制器组件STRUTS架构的核心是一个MVC风格的控制器,该控制器实际上是模型组件和视图组件之间的桥梁,是整个WEB应用程序的“控制中枢”。STRUTS架构中控制器组件所承担的主要功能如下。接受浏览器客户端的处理请求根据用户的不同请求,调用对应的模型组件来执行相应的业务逻辑。获取模型组件业务逻辑的处理结果。根据当前的状态数据及业务逻辑的处理结果,选择合适的视图组件呈现在浏览器客户端。下面是对这些组件的一些介绍(1)ACTIONSERVLET在STRUTS架构中CONTROLLER组件的核心控制器组件是ACTIONSERVLET,所有客户端提交的用户请求都由它进行处理,ACTIONSERVLET负责接受到客户端请求后将其分发到相应的ACTIONBEAN处理,再根据处理的结果将不同的显示请求重定向到响应的JSP页面中进行显示。(2)REQUESTPROCESSOR包含了STRUTS控制器在处理SERVLET请求时所遵循的控制逻。在STRUTS中只允许应用中提供一个ACTIONSERVLET类,可以存在多个REQUESTPROCESSOR类。(3)ACTIONFORM经济学院本科生毕业设计5在STRUTS架构中,通常使用一种名为ACTIONFORM的系统状态BEAN,来实现应用系统的非持久性数据存储和维护功能。具体来说,这种类型的对象主要用于保存用户请求表单中的数据,并可保持其状态的连续性,即在不同的页面间传递这些数据。(4)ACTIONACTION类是STRUTS架构中控制器组件的重要组成部分,它是用户请求和业务逻辑之间沟通的媒介。每个ACTION类型的对象实际上都在充当客户的业务代理。它就像政府部门接待群众来访的接待室工作人员,负责倾听群众的要求,然后按不同的要求,点用不同的业务逻辑处理方法进行处理,即转达给对应的部门进行处理。(5)ACTIONMAPPINGACTIONSERVLET负责转发客户端请给相应的ACTION对象进行处理,同时还转发了其他一些相关信息,这种请求和处理动作之间具体的映射关系保存在配置文件STRUTSCONFIGXML文件中。具体情形是,在系统启动初始化的时候,会对这些配置信息进行处理,系统针对每个元素都创建一个与之对应的ORGAPACHESTRUTSACTIONACTIONMAPPING类的实例,以供STRUTS应用程序运行期间使用。当ACTIONSERVLET转发请求时,ACTIONMAPPING实例被作为参数之一传递给相应ACTION对象的EXECUTE方法。2)模型组件在STRUTS架构中并没有为设计和创建模型组件提供现成的框架。JAVA开发人员一般使用JAVABEAN来实现模型组件,对应着其作用可以分为两方面,记录系统状态和封装业务逻辑,即包含了业务实体和业务逻辑BEAN。在设计模型时应该尽量和视图以及控制器之间保持独立。3)视图组件视图组件主要负责为浏览器客户端提供动态页面的显示,是模型的外在表现形式。在MVC设计模式中,用户是通过视图来了解模型状态的,同一个模型可以对应着多个不同的视图。STRUTS的VIEW组件主要表现为JSP页面、用户标记库,有时人们也将映射了用户请求表单的ACTIONFORMBEAN作为VIEW组件。这些组件提供了对国际化、接受用户输入的表单数据、表单验证及错误处理等功能的支持。332STRUTS工作流程工作流程工作流程工作流程对于采用STRUTS框架的WEB应用,在WEB应用启动时就会加载并初始化ACTIONSERVLET,ACTIONSERVLET从STRUTSCONFIGXML文件中读取配置信息,把它们存放在各种配置对象中,例如ACTION的映射信息存放在ACTIONMAPPING对象中。当ACTIONMAPPING接收到一个客户请求时,将执行如下流程。(1)检索和用户请求匹配的ACTIONMAPPING实例,如果不存在,就返回用户请求路径无效的信息。(2)如果ACTIONFORM实例不存在,就创建一个ACTIONFORM对象,把客户提交的表单数据保存到ACTIONFORM对象中。(3)根据配置信息决定是否需要表单验证。如果需要验证,就调用ACTIONFORM的VALIDATE()方法(4)如果ACTIONFORM的VALIDATE()方法返回NULL或返回一个不包含ACTIONMESSAGE的经济学院本科生毕业设计6ACTIONERRORS对象,就表示表单验证成功。图32STRUTS工作流程图经济学院本科生毕业设计7(5)ACTIONSERVLET根据ACTIONMAPPING实例包含的映射信息决定将请求转发给哪个ACTION。如果相应的ACTION实例不存在,就先创建这个实例,然后调用ACTION的EXECUTE()方法。(6)ACTION的EXECUTE()方法返回一个ACTIONFORWARD对象,ACTIONSERVLET再把客户请求转发给ACTIONFORWARD对象指向的JSP组件。(7)ACTIONFORWARD对象指向的JSP组件生成动态网页,返回给客户。333STRUTS实现实现实现实现MVC的机制的机制的机制的机制STRUTS实质上就是在JSPMODEL2的基础上实现的一个MVC框架。在STRUTS框架中,模型由实现业务逻辑的JAVABEAN或EJB组件构成,控制器由ACTIONSERVLET和ACTION来实现,视图由一组JSP文件构成。如图33图33STRUTS的MVC机制1)视图视图就是一组JSP文件。在这些JSP文件中没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准的JSP标签或客户化标签,如STRUTS标签库中的标签。此外,通常把STRUTS框架中的ACTIONFORMBEAN也划分到视图模块中。ACTIONFORMBEAN也是一种JAVABEAN,除了具有一些JAVABEAN的常规方法,还包括一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。STRUTS框架利用ACTIONFORMBEAN来进行视图和控制器之间表单数据的传递。STRUTS框架利用把用户输入的表单数据保存在ACTIONFORMBEAN中,把它传递给控制器,控制器可以对ACTIONFORMBEAN中的数据进行修改,JSP文件使用STRUTS标签读取修改后的ACTIONFORMBEAN的信息,重新设置HTML表单。2)模型模型JAVABEANEJB浏览器WEB服务器STRUTSCONFIGXML控制器(ACTIONSERVLET)视图JSPACTIONACTIONACTION经济学院本科生毕业设计8模型表示应用程序的状态和业务逻辑。对于大型应用,业务逻辑通常由JAVABEAN或EJB组件来实现。3)控制器控制器由ACTIONSERVLET类和ACTION类来实现。ACTIONSERVLET类是STRUTS框架中的核心组件。ACTIONSERVLET继承了JAVAXSERVLETHTTPHTTPSERVLET类,它在MVC模型中扮演中央控制器的角色。ACTIONSERVLET主要负责接收HTTP请求信息,根据配置文件STRUTSCONFIGXML的配置信息,把请求转发给适当的ACTION对象,如果该ACTION对象不存在,ACTIONSERVLET会先创建这个ACTION对象。ACTION类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。对于小型简单的应用,ACTION类本身也可以完成一些实际的业务逻辑。对于大型应用,ACTION充当用户请求和业务逻辑处理之间的适配器,其功能就是将请求与业务逻辑分开,ACTION根据用户请求调用相关的业务逻辑组件。业务逻辑由JAVABEAN或EJB来完成,ACTION类侧重于控制应用程序的流程,而不是实现应用程序的逻辑。通过业务逻辑放在单独的JAVA包或EJB中,可以提高应用程序的灵活性和可重用性。当ACTIONSERVLET控制器收到用户请求后,把请求转发到一个ACTION实例。如果这个实例不存在,控制器会首先创建它,然后调用这个ACTION实例的EXECUTE()方法,ACTION的EXECUTE()方法返回ACTIONFORWARD对象,它封装了把用户请求再转发给其他WEB组件的信息。用户定义自己的ACTION类,即ACTION基类的子类时,必须覆盖EXECUTE()方法,在ACTION基类中该方法返回NULL。4开发环境的安装和配置开发环境的安装和配置开发环境的安装和配置开发环境的安装和配置41JDK的安装和配置的安装和配置的安装和配置的安装和配置首先要安装JDK,下载后假定装到DJDK,如图41图41JDK安装完成图经济学院本科生毕业设计9JDK安装结束后需要配置三个环境变量,分别是“JAVA_HOME”、“PATH”和“CLASSPATH”。环境变量在“我的电脑”右键属性的“高级”选项卡中。点击“环境变量”出现环境变量配置页面。我们要配置的是系统变量,点击新建按钮来新建上面提到的三个环境变量。“JAVA_HOME”变量的变量值是JDK的安装路径。“PATH”变量的变量值指到JDK的安装路径的BIN文件夹,如图5所示JDK本身提供编译、运行等命令,这些命令都在JDK安装路径的BIN文件夹中,为了能够找到这些命令,要在“PATH”变量中制定这些命令的位置也就是配置“PATH”变量的变量值。配置“CLASSPATH”变量是为了引入编译“JAVA”文件时,“JAVA”文件中使用的基础类库。如果采用JDK来编译“JAVA”文件,必须配置“CLASSPATH”变量。“CLASSPATH”变量的变量值为一些“JAR”文件,这些文件是一种压缩文件,最基本的两个是在JDK安装路径的LIB文件夹下的“DTJAR”和“TOOLSJAR”文件,这两个文件中包含了最常用的基本类库,一定要引入,当引入的“JAR”文件为多个时,中间用“;”号隔开,除了JDK提供的类库外,如果用到了一些外来类库,也要在“CLASSPATH”变量中引入。以上就是JDK安装和配置中要注意的问题,一般学生都不使用集成开发环境,所以都是通过JDK来编译“JAVA”文件的,所以一定要配置“PATH”变量和“CLASSPATH”变量,如果学生在编译过程中出现问题,很可能是环境变量没配置或配置不正确引起的。42TOMCAT的安装和配置的安装和配置的安装和配置的安装和配置然后安装TOMCAT55假设安装到DTOMCAT55,如图42经济学院本科生毕业设计10图42TOMCAT运行图下面设置环境变量TOMCAT_HOMEDTOMCAT到CTOMCATBIN下,双击STARTUPBAT启动TOMCAT,打开IE,输入HTTP/LOCALHOST8080,小猫出现了吧,说明TOMCAT已经配置成功了。43ECLIPSEMYECLIPSE的安装和配置的安装和配置的安装和配置的安装和配置首先下载ECLIPSE31安装程序,下载地址HTTP/WWWECLIPSEORG/DOWNLOADS/INDEXPHP。下载的是一个压缩包,例如解压到D盘的根目录下,进入ECLIPSE的目录就可以直接运行了。然后下载ENTERPRISEWORKBENCHINSTALLER_411GA_E31EXE,下载地址HTTP/WWWMYECLIPSEIDECOM/CONTENTEXPRESSDISPLAYCEID10HTML);这个就是MYECLIPSE的安装程序,将其安装。在安装的过程中要求选择ECLIPSE的程序的路径,然后保持默认,安装成功。下图是安装过程中的一个截图。图43MYECLIPSE安装图安装完MYECLIPSE后,将其安装目录下的FEATURES和PLUGINS目录复制到ECLIPSE的目录下,将其原来的两个同名目录覆盖掉。其实MYECLISE是ECLIPSE的一个插件。然后就可以将MYECLIPSE删除了。要是长期使用的话,还要对MYECLIPSE进行破解,这里就不进行破解了,试用期也有一个月的时间。环境安装配置完成,运用MYECLIPSEECLIPSETOMCAT进行系统开发。5基于基于基于基于STRUTS的课程查询中心系统开发的课程查询中心系统开发的课程查询中心系统开发的课程查询中心系统开发51需求分析需求分析需求分析需求分析经济学院本科生毕业设计11课程查询中心主要是为了实现网上课程信息实时动态查询显示的系统。对于没有任何培训目标和意向、初次访问网站的用户,动态页面中应该能够分类列出目前可以提供的所有课程信息,如果用户需要了解某个培训课程的更详细信息,也能够方便的进行查看。而对于熟悉公司产品及服务的老客户,应该提供迅速敏捷的课程信息查询功能,以使客户迅速获取所需要了解的课程信息。本系统需要完成的具体任务如下课程信息分类显示在进入课程查询中心主页时,应该能够根据数据库中存放的课程信息分类显示最近开设课程的课程表,例如,程序员就业班所开设课程的情况,实战技能班所开设课程的情况。课程信息查询客户可以在课程查询中心主页中进行所需课程信息的快速查询。例如,可以按照课程名称、班号、上课地点分别选择符合条件的相关课程信息。这里应该能够支持模糊查询,即用户只需要输入待查询条件的关键字,例如“JAVA”,即可查出所有课程名称中有包含有JAVA的课程信息。课程详情显示课程表中有关每个课程信息的显示中都应该提供对应的超级链接,在客户单击选择该课程后,可以跳转到有关该课程详细内容的显示页面。如图51。图51系统链接图52功能设计功能设计功能设计功能设计1)课程信息的分类显示该模块实现课程信息的分类显示,例如,所有课程可以分为程序员就业课程培训长期班及实战技能课程培训短期班两大类,在课程查询中心主页用户可以选择查看不同类别中的课程信息,同时用户选择了某个课程后,还可以借助提供的超级链接显示有关该课程更加详细的课程信息。2)课程信息查询该模块为用户提供了分类模糊查询的功能,即用户可以选择按照班号、课程名称以及课程关键字查询课程分类查询课程详情显示经济学院本科生毕业设计12上课地点等,方便的进行查询,结果中将依据用户设置的查询条件显示不同的课程信息,在查询结果的基础上,用户同样可以借助超链接查看有关该课程更详细的信息。3)数据库设计与实现数据库的需求分析,对应数据表的设计及功能如下课程基本信息表存放与每个开设课程对应班级相关的信息。课程类别信息表存放课程类别的相关信息。4)数据库的逻辑设计根据以上需求分析,在确定了各个表主键字段的基础上,依据表与表之间相关字段之间的联系建立了两个表之间的关系,如图52所示。图52数据库关系图课程基本信息表用来保存与课程相关的所有基本信息的数据表,是显示课程相关数据信息的依据。字段描述信息,如表51表51课程基本信息表字段名描述类型长度是否允许空是否主键ID记录编号INT4否是CLASSNO班号VARCHAR20否否COURSENAME课程名称VARCHAR20否否COURSETYPEIDINTNAMEVARCHAR20COURSEIDINTCLASSNOVARCHAR20COUSENAMEVARCHAR20PRICEINTPLACEVARCHAR50TIMEVARCHAR10DETAILVARCHAR200CONDITIONVARCHAR200COURSETYPEIDINT经济学院本科生毕业设计13PRICE价格FLOAT8是否PLACE上课地点VARCHAR50是否TIME上课时间VARCHAR10是否DETAIL课程介绍VARCHAR200是否CONDITION入学条件VARCHAR200是否COURSETYPEID类型编号INT4否否数据库中显示如图53所示。其中,课程记录中类型编号决定了该课程信息属于哪一种课程类型,这将最终决定课程信息在页面中分类显示的位置。课程分类信息表记录了开设课程的类别信息,依据课程基本信息表中的课程类别编号,可以在该表中确定课程所属类别的名称。图53课程信息图表52课程分类信息表字段名描述类型长度是否为空是否主键ID分类IDINT4否是NAME名称VARCHAR20否否数据库中显示界面如图54所示。53创建视图创建视图创建视图创建视图使用者用来浏览的第一个界面是COURSEMAINJSP。这个窗体生成一个表单,表单的ANTION经济学院本科生毕业设计14图54课程分类信息图属性指定为控制器的名称COURSESEARCHDO,当使用者点击搜索按钮时,窗体的数据就会转交给控制器,控制器调用相应的模块进行处理,返回要查询的数据,将其显示在表单下面的表格里。控制器在响应了查询请求后,从对应的数据库获取到与课程分类及课程的相关信息,然后显示在该页面中。在用户单击该页面某条课程信息的详细图标后,将发出“COURSEDETAILDOCOURSEID”请求,同时提交用户所选课程记录的编号,以便于后续控制层和业务逻辑层进行处理。1)COURSEMAINJSP“经济学院本科生毕业设计15请输入关键字班号课程名称上课地点课程信息总目录班号课程名称价格时间上课地点详细经济学院本科生毕业设计16“输入查询数据后的界面如图55所示。图55登陆首页图2)课程详细内容显示页面COURSEDETAILJSP该页面实在控制器响应COURSEMAINJSP发出的“COURSEDETAILDOCOURSEID”请求后,跳转到的页面。软件类课程经济学院本科生毕业设计17入学条件课程安排班号上课地点时间学费元元响应页面如图56所示。54构建模型构建模型构建模型构建模型在本系统中完成了对课程信息以及课程分类信息的保存和处理。对应的JAVA文件保存在WEBINFCLASSES中。当用户提交了HTML表单后,STRUTS框架将自动把表单数据组装到ACTIONFORMBEAN中。经济学院本科生毕业设计18图56响应首页图ACTIONFORMBEAN中的属性和HTML不表单中的字段一一对应。ACTIONFORMBEAN还提供了数据验证的方法,这里只是一个很小的程序,没有用到数据验证。STRUTS框架中定义的ANTIONFORM类是抽象的,必须在应用中创建它的子类,来存放具体的HTML表单数据。下面创建的COURSEJAVA、COURSETYPEJAVA就是用来处理COURSEJSP页面请求的。1)处理课程信息的BEAN(COURSEJAVA)PUBLICCOURSEPUBLICVOIDSETIDINTIDTHISIDID/查询满足指定条件课程信息的方法PUBLICSTATICVECTORSEARCHCOURSEDBDB,INTCOURSETYPE,STRINGFIELD,STRINGKEYWORDTHROWSEXCEPTIONVECTORCOURSELISTNEWVECTORRESULTSETRS,RSNESTSTRINGSTRSQLNULLSTRINGSFIELDNULLIFCOURSETYPE0经济学院本科生毕业设计19STRSQL“SELECTFROMCOURSEWHERE11“ELSESTRSQL“SELECTFROMCOURSEWHERECOURSETYPEID“COURSETYPEIFKEYWORDNULL|KEYWORD“STRSQLSTRSQL“ORDERBYCLASSNO“ELSEIFFIELDEQUALS“1“SFIELD“CLASSNO“ELSEIFFIELDEQUALS“2“SFIELD“COURSENAME“ELSEIFFIELDEQUALS“3“SFIELD“PLACE“STRSQLSTRSQL“AND“SFIELD“LIKE“KEYWORD“ORDERBYCLASSNO“RSDBOPENSQLSTRSQLWHILERSNEXTCOURSECOURSENEWCOURSECOURSESETIDRSGETINT“ID“COURSESETCLASSNORSGETSTRING“CLASSNO“COURSESETCOURSENAMERSGETSTRING“COURSENAME“COURSESETPRICERSGETINT“PRICE“COURSESETPLACERSGETSTRING“PLACE“COURSESETTIMERSGETSTRING“TIME“COURSELISTADDCOURSESYSTEMOUTPRINTLN“COURSELIST“COURSELISTSIZERETURNCOURSELIST/获取课程详细信息的方法PUBLICSTATICCOURSEGETDETAILDBDB,INTCOURSEIDTHROWSEXCEPTIONRESULTSETRS,RSNESTSTRINGSTRSQLNULLSTRINGRPLCONTENTNULLSTRSQL“SELECTFROMCOURSEWHEREID“COURSEIDRSDBOPENSQLSTRSQLCOURSECOURSENEWCOURSEIFRSNEXTCOURSESETIDRSGETINT“ID“经济学院本科生毕业设计20COURSESETCLASSNORSGETSTRING“CLASSNO“COURSESETCOURSENAMERSGETSTRING“COURSENAME“COURSESETPRICERSGETINT“PRICE“COURSESETPLACERSGETSTRING“PLACE“RPLCONTENTRSGETSTRING“DETAIL“RPLCONTENTRPLCONTENTREPLACEALL“N“,“COURSESETDETAILRPLCONTENTCOURSESETTIMERSGETSTRING“TIME“COURSESETCONDITIONRSGETSTRING“CONDITION“RETURNCOURSE声明了与课程数据相关的基本属性和方法之外,还提供了与课程查询处理相关的几个方法。其中在调用查询满足条件的课程信息方法时,需要提供查询的依据,以及查询的关键字。而在获取详细信息时,则需要提供对应课程记录的编号。2)COURSETYPEJAVAPUBLICCLASSCOURSETYPEPROTECTEDINTIDPROTECTEDSTRINGCOURSETYPEPUBLICCOURSETYPEPUBLICVOIDSETIDINTIDTHISIDID/获取课程分类信息集合的方法PUBLICSTATICVECTORSEARCHCOURSETYPEDBDBTHROWSEXCEPTIONVECTORCOURSETYPELISTNEWVECTORRESULTSETRSSTRINGSTRSQLNULLSTRSQL“SELECTFROMCOURSETYPE“RSDBOPENSQLSTRSQLWHILERSNEXTCOURSETYPECOURSETYPENEWCOURSETYPECOURSETYPESETIDRSGETINT“ID“COURSETYPESETCOURSETYPERSGETSTRING“NAME“COURSETYPELISTADDCOURSETYPE经济学院本科生毕业设计21SYSTEMOUTPRINTLN“COURSETYPELIST“COURSETYPELISTSIZERETURNCOURSETYPELIST/获取第一个课程分类编号PUBLICSTATICINTGETFIRSTCOURSETYPEDBDBTHROWSEXCEPTIONRESULTSETRSSTRINGSTRSQLNULLSTRSQL“SELECTFROMCOURSETYPE“RSDBOPENSQLSTRSQLIFRSNEXTRETURNRSGETINT“ID“ELSE声明了与课程分类数据相关的基本属性和方法之外,还提供了与课程分类查询处理相关的两个方法,包括获取所有课程分类信息列表的方法,此外,为了实现默认进入课程查询中心主页时,显示第一个课程分类中的课程信息,在该程序中声明了获取数据库中第一个分类信息编号的方法。55创建控制器组件创建控制器组件创建控制器组件创建控制器组件控制器组件包括ACTIONSERVLET类和ACTION类。ACTIONSERVLET类是STRUTS框架自带的,它是整个STRUTS框架的控制枢纽,通常不需要扩展。STRUTS框架还提供了可扩展的ACTION类,它用于处理特定的HTTP请求。本系统中FIRSTACTIONJAVA、SEARCHACTIONJAVA、DETAILACTIONJAVA是扩展的ACTION类,用来响应COURSEMAINDO、COURSESEARCHDO以及COURSEDETAILDO请求,如表53所示。表53ACTION映射表ACTION入口ACTIONFORM出口FIRSTACTIONINDEXJSPCOURSETYPEIDFORMCOURSEMAINJSPDETAILACTIONCOURSEMAINJSPCOURSEIDFORMCOURSEDETAILJSPSEARCHACTIONCOURSEMAINJSPCOURSESEARCHFORMCOURSEMAINJSP该映射表决定了ACTION与其他WEB组件之间的关联关系。作为前后台之间的桥梁,本表中指明了每个ACTION的入口(即调用ACTION的组件)及出口(请求转发的目标组件),以及传递ACTION的ACTIONFORM。1)FIRSTACTIONJAVAPUBLICFINALCLASSFIRSTACTIONEXTENDSACTIONPUBLICACTIONFORWARDEXECUTE经济学院本科生毕业设计22ACTIONMAPPINGMAPPING,ACTIONFORMFORM,HTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSETHROWSEXCEPTION/获取动态ACTIONFORM中接收到的课程分类编号DYNAACTIONFORMCOURSETYPEIDFORMDYNAACTIONFORMFORMINTEGERCOURSETYPEIDINTEGERCOURSETYPEIDFORMGET“COURSETYPEID“SERVLETCONTEXTCONTEXTSERVLETGETSERVLETCONTEXTDATASOURCEDATASOURCEDATASOURCECONTEXTGETATTRIBUTECONSTANTSDATASOURCE_KEYDBDBNEWDBDATASOURCEINTITYPEID0IFCOURSETYPEIDNULLITYPEIDCOURSETYPEIDINTVALUE/如果获取不到编号,则默认取数据库中第一个课程分类编号ELSEITYPEIDCOURSETYPEGETFIRSTCOURSETYPEDBVECTORCOURSELISTNEWVECTORHTTPSESSIONSESSIONREQUESTGETSESSION/按照分类编号获取该分类下所有课程信息列表SESSIONSETATTRIBUTECONSTANTSCOURSE_TYPE_LIST_KEY,COURSETYPESEARCHCOURSETYPEDBCOURSELISTCOURSESEARCHCOURSEDB,ITYPEID,“,“SESSIONSETATTRIBUTECONSTANTSCOURSE_LIST_KEY,COURSELISTDBCLOSE/跳转到课程查询主页RETURNMAPPINGFINDFORWARD“TOCOURSEMAIN“2)SEARCHACTIONJAVAPUBLICFINALCLASSSEARCHACTIONEXTENDSACTIONPUBLICACTIONFORWARDEXECUTEACTIONMAPPINGMAPPING,经济学院本科生毕业设计23ACTIONFORMFORM,HTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSETHROWSEXCEPTION/获取查询依据以及查询关键字DYNAACTIONFORMCOURSESEARCHFORMDYNAACTIONFORMFORMSTRINGKEYWORDSTRINGCOURSESEARCHFORMGET“KEYWORD“STRINGCATSTRINGCOURSESEARCHFORMGET“CAT“HTTPSESSIONSESSIONREQUESTGETSESSIONVECTORCOURSELISTNEWVECTORSERVLETCONTEXTCONTEXTSERVLETGETSERVLETCONTEXTDATASOURCEDATASOURCEDATASOURCECONTEXTGETATTRIBUTECONSTANTSDATASOURCE_KEYDBDBNEWDBDATASOURCECOURSELISTCOURSESEARCHCOURSEDB,0,CAT,KEYWORD/保存查询结果SESSIONSETATTRIBUTECONSTANTSCOURSE_LIST_KEY,COURSELISTSESSIONSETATTRIBUTECONSTANTSCOURSE_TYPE_LIST_KEY,COURSETYPESEARCHCOURSETYPEDBDBCLOSE/跳转到课程查询主页RETURNMAPPINGFINDFORWARD“TOCOURSEMAIN“3)DETAILACTIONJAVAPUBLICFINALCLASSDETAILACTIONEXTENDSACTIONPUBLICACTIONFORWARDEXECUTEACTIONMAPPINGMAPPING,ACTIONFORMFORM,HTTPSERVLETREQUESTREQUEST,HTTPSERVLETRESPONSERESPONSETHROWSEXCEPTION/获取待查询详细信息的课程编号DYNAACTIONFORMCOURSEIDFORMDYNAACTIONFORMFORMINTEGERCOURSEIDINTEGERCOURSEIDFORMGET“COURSEID“HTTPSESSIONSESSIONREQUESTGETSESSIONVECTORCOURSELISTNEWVECTORCOURSECOURSENEWCOURSESERVLETCONTEXTCONTEXTSERVLETGETSERVLETCONTEXTDATASOURCEDATASOURCE经济学院本科生毕业设计24DATASOURCECONTEXTGETATTRIBUTECONSTANTSDATASOURCE_KEYDBDBNEWDBDATASOURCE/按课程编号获取课程详细信息COURSECOURSEGE

温馨提示

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

评论

0/150

提交评论