




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕 业 设 计题 目 面向服务架构的内容管理系统 设计与实现 学 院 XXXXXXXXXXXX 专 业 XXXXX 班 级 XXXXXX 学 生 XXXXXX 学 号 XXXXXXX 指导教师 XXXXX 二①XX年六月十日摘 要在高校信息化进程中,内容管理系统扮演者非常重要的角色,各种教学资源(放,WEB耦合度,提高系统的灵活性。课题研究展开的过程中,我学习了JavaEE技术及相关知识,包括JSP、EJBServletJDBCXMLJNDIStrutsSpringHibernate和WebService技术;对内容管理系统进行详细的需求分析和设计;学习面向服务ExtJs从而简化前端界面的开发。SSHExtJsCXF有待改善。关键词:内容管理系统;面向服务架构;SSH框架;ExtJs框架;CXF框架ABSTRACTIntheprogressofinformationizationinUniversity,thecontentmanagementsystemplayanimportantrole.Thestorageofallteachingresources(Courseware,Videos,Files,andsoon)contentsresources、allportals、allassistantsystemofteaching,alltheabovefallintocontentmanagementsysteminthefinalanalysis.Traditionalcontentmanagementsystemsaredesignedsolelyanddeployeddispersedly,whichleadtotremendouswastingofresources.ThisprojectuseSOAtoimplementacontentmanagementsystemwhichstorecontentsresourcesuniformlyanddeployFront-endsofWEBdistributedly.Then,thesystemwillimprovetheefficiencyofstorageandreducethedegreeofcoupling,what’smore,itwillimprovetheflexibilityofthesystem.Withtheexpandingoftheproject,IstudyJavaEEtechnologyandsomeknowledgeaboutit,includingJSP,EJB,Servlet,JDBC,XML,JNDI,Strutsframe,Springframe,HibernateframeandWebServicetechnology;Dorequirementanalysisandsystemdesignindetails,anddoUMLmodelingaboutthecontentmanagementsystem;StudySOAarchitecture,andthenrealizethedesignofdistributivesystem;Realizemainfunctionsofthesystem,includingauthoritymanagement,thedisplay,add,delete,modifyofcontentsresources.Throughstudyinganddesigningtheproject,IconsolidatetheknowledgethatIeverstudied,suchasSSHframe,andatthesametime,Ilearnedalotofnewknowledge,suchasExtJsframe,CXFframe.WhatisthemostimportantisthatIdesigntheexpectedsystemwhichrealizerequestedfunctions.Buttherestillexistsomedeficiencies,forexampleitisnotenoughinhumanization,whichneedfurtherimproved.Keywords:Contentmanagementsystem;SOA;SSHframe;ExtJsframe;CXFframe目 录摘 要 IABSTRACT II前言 1系统目的 1系统背景 1系统使用对象及范围 2论文的组织结构 3需求分析 4功能要求 4学生功能要求 4教师功能要求 4管理员功能要求 5性能要求 6可靠性要求 7出错处理要求 7概要设计 8系统实现环境 8整体架构 8UML建模 8数据模型 10基本实体 10各模块系统 13详细设计 15数据库设计 15数据库命名规范 15对应表设计 15原型设计 18技术框架 19ExtJs框架 19CXF框架 20SSH框架 20技术总结 23编码与测试 26服务端开发 26Model层开发 26Dao层开发 27Service层开发 27Service.xml配置文件举例 28Applicationcontext.xml配置文件举例 29客户端开发 29Model层开发 29Service层开发 29Action层开发 30Applicationcontext.xml配置文件举例 31Jsp页面开发 31测试及效果图 31结 论 36参考文献 37致 谢 381 前言系统目的(资源浪费,本课题利用面向服务架构设计实现一个内容资源统一存放,WEB前端分活性。系统背景外部信息资源已经成为人们关注的焦点,在这一背景下内容管理系统CMS(ContentManagementSystem)CMSWebWeb服务器、以及后端办公系统或流程(内容创作、编辑)之间的软件系统,其功能比较多,模块通用性比较强强,管理起来很方便,应用也很广泛。CMS主要有以下几大类:第一类,面向政府和事业单位的内容管理CMS系统。一般在实施时要求订制开发,不可能用现成产品来满足需求。这样的解决方案有:WITS、中关村软件、方正祥羽、清华万博等。第二类,针对政府、媒体、ICP、大型企业的内容管理系统,其特点是维护内容的人数TurboCMS、TRSWCM杂,比如要跟BBS、用户注册等应用集成在一起,满足个性化的需求,最好有原代C++索引擎、日历、Web邮件等也会以第三方插件的形式集成进来。(计实现一个内容资源统一存放,WEB前端分布式部署的内容管理系统,大大提高存储的效率,降低系统的耦合度,提高系统的灵活性。SOA(service-orientedarchitecture)概念的地方.netjava的系统,像这样的需求就需要用到WebService进行信息数据的操作。面向服务的体以理解,SOA的关键是服务,开发的思路是首先将功能拆分为组件,然后用服务包装这些组建,提供给系统终端使用。系统使用对象及范围的大致权限。管理员:管理员拥有自己唯一的登录账号,并使用其登陆账号登录系统的后台,对各种课程、资源和用户进行管理。ID和密码登陆,可以管学生:可以用自己的学号登陆,查看所有老师的各种资源以及个人选课情况,还可以修改个人的一些信息。更加清晰直观的系统使用对象及范围如表1.1所示:1.1使用对象表系统名称 使用对象 使用范围面向服务架 管理员 允许后台登录,修改、删除、整理各种资源,管理用户,修改菜单。构的内容管 教师 允许登录,修改个人信息,上传图片、视频和文档,编辑和修改已存在的文件理系统 学生 允许登录,修改个人信息,查看选课情况,访问系统资源,下载文件,留言论文的组织结构全文共分为九个部分第一部分是前言,主要介绍系统目的以及开发背景,阐述了国内外相关技术的研究现状,以及该系统的使用对象及范围。第二部分是需求分析,主要介绍系统的功能要求、性能要求、可靠性要求、出错处理要求等内容。,E-RUML建模。第四部分是详细设计,主要介绍数据库设计,以及原型设计方法。第五部分是技术总结,主要是对开发过程中遇到的技术问题进行总结。以及两端开发的不同,对系统进行功能测试。第七部分是结论,主要对系统整体设计和完成情况进行总结。第八部分是参考文献,列出了做设计和写论文过程中所参考到的中英文的文献。第九部分是致谢,感谢大学四年帮助和教育过我的所有人,特别是在做设计和写论文过程中予以指导的老师和同学们。需求分析其中功能要求是本文需求分析的重点。功能要求功能要求是需求分析很重要的一个部分,这一部分的内容对整个系统的可用性起着决定性作用,因此对功能要求要做仔细认真的分析。下面我们将从学生功能要求、教师功能要求、管理员功能要求三个方面进行分析。学生功能要求2.1所示。功能 功能描
表2.1学生功能要求选课功能 选择要学习的课程浏览资源 浏览相应教学资源(视频、图片、文档)个人资料 维护个人资料教师功能要求于实体课堂的管理。最后就是个人基本信息的维护了,可以修改个人相关信息。如2.2所示。功能 功能描
表2.2教师功能要求课程管理 查看所教课程的相关信息,如开课学期等资源管理 管理自己上传的资源,如增删改查,查看其他人上传的资本门课学生查看 查看选择本门课程(教师为自己)的学生个人资料 维护个人资料管理员功能要求对本系统来说,管理员这个角色是一个很重要的角色,其功能最多,权限最大。要求,方便系统设计和开发,特制订了如下表格,如表2.3所示。功能 功能描
表2.3管理员功能要求用户管理 添加用户,修改用户信息,删除用户,搜索用户;菜单管理 添加新菜单,修改菜单信息,删除菜单,搜索菜单学生管理 添加学生,修改学生信息,删除学生,搜索学生;教师管理 添加教师,修改教师信息,删除教师,搜索教师;课程管理 添加课程,修改课程,删除课程,查看选课学生,搜索课程;视频资源管理 添加视频资源,修改视频信息,删除视频,播放视频,搜索视频图片资源管理 搜索图片,查看图片,添加图片,修改图片信息,删除图片;课件资源管理 课件资源的上传、删除、修改、查看、搜索;性能要求依据,以便开发时做出合理的设计选择。基础平台(平台管理系统()交互系统:满足教师、学生间相互交流,如留言。平台课件内容存储和管理应基于数据库系统,实现动态管理Web服务器上应用服务器的部署需要:操作系统Windows2000AdvanceServer;WindowsXP;Linux数据库系统使用MySql通讯接口采用TCP/IP、HTTP网络协议。要求的性能指标:系统平均无故障运行时间大于99%页面响应时间在五秒以内可靠性要求能保证在并发高峰时,系统的访问速度不能有明显的下降。能保证系统长期正常稳定的运行。出错处理要求当出现错误时,有明显的错误提示信息。当出现硬件当机时,能够完成对数据的自我保护。概要设计系统实现环境前端开发语言的选择:JavaEE基本框架:Struts2、Spring、Hibernate运行服务器:ApacheTomcat前端开发工具的选择:Eclipse后台数据库的选择:MySql整体架构究的内容资源统一存放,Web前端分布式部署。本课题所研究的系统实现的架构大3.1服务,还有留言管理服务等:图3.1 整体架构图UML建模Id和名字,其基本方法是对Id和姓名,基本方法是对选课Id和姓名,基本方法是对课程和资IdId和课程名以及教师外键,基本方法Id和资源名,基本方法也都是增删改查。这些对象之间存在的关系主要有学生选课、教师教课、用户管理资源等。UML3.2所示。图3.2 UML类图UML类图中我们可以清楚的了解系统中各个对象的属性、方法、以及它们之3.3晰的了解系统用户使用本系统时的功能流程。数据模型
图3.3时序图基本实体Id大小、存储地址、上传者、资源类型(视频、图片、文档、备注。菜单这个实体的IdE-RE-R图的3.7源的管理主要包括对资源信息的增删改查等。老师教课学生选课,如图3.8所示,该图以非常清晰,不在赘述。管理ID学生管理ID学生宿舍电话学院专业班级学号用户Id用户账号密码昵称角色状态用户图3.4用户管理学生管理ID教师管理ID教师办公电话学院职称备注教工号用户Id用户账号密码昵称角色状态用户图3.5用户管理教师管理菜单Id名称连接网址菜单管理菜单Id名称连接网址菜单图标上级菜单Id权限描述用户Id用户账号密码昵称角色状态用户图3.6用户管理菜单资源ID名称文件名资源资源ID名称文件名资源大小存储位置上传人ID文件类型描述浏览/上传/管理用户Id用户帐号密码昵称角色状态用户图3.7 用户与资源选课学生课程教课教师ID课程号选课学生课程教课教师ID课程号课程名开课时间学分开课学院课程类型人数IDID姓名姓别邮箱手机办公电话学院职称备注ID宿舍电话学院专业班级图3.8 教师教课与学生选课各模块系统93.9文档资源管理系统,权限管理。修改相应菜单的信息,删除相应的菜单。用户管理系统:管理员可以按学号或教工号搜索用户,还可以添加新用户信息,删除学生。师信息,删除教师。程信息,删除课程,查看选该门课程的所有学生信息。文件,修改视频信息,删除视频文件,播放视频。图片,修改图片信息,删除图片。文档,删除文档,修改文档信息。于各用户的操作权限。3.9系统整体功能图详细设计数据库设计数据库命名规范course字段:对应的英文,并且字段名为两个英文单词时,第二个单词的首字母courseName外键:表名+字段名,字段名首字母大写比如,在课程表中,教师ID是teacherId对应表设计课程表设计,课程是一个重要实体,该实体在数据库中对应的表的详细信息如表4.1IDID,每门课程都要有一ID的作用了。学院,由程做相应的描述,介绍课程的大致内容。表4.1课程表(course)名称属性名类型长度是否为空说明课程IDidint11否主键课程号courseNumvarchar20否课程名courseNamevarchar40否开课学期timevarchar40学分creditint11教师IDteacherIdint11学院academyvarchar20属性propertiesvarchar50最大选课数maxNumberint10课程介绍introductionvarchar2004.2ID个实体,另外每个学院有一个代号,还有学院名称以及学院的管理员数。表4.2学院表(academy)名称属性名类型长度是否为空说明学院IDidint11否主键学院代号deptCodevarchar10学院名称deptNamevarchar20学院管理员数deptManagerint114.3同的角色赋予其不同的操作权限。状态,是指显示用户是否在线。表4.3登陆表(login)名称属性名类型长度是否为空说明登陆IDidint11否主键登陆账号numbervarchar20否密码passwordvarchar20昵称nicknamevarchar50角色rolevarchar11否状态statusint114.4IDIdId,权限是指该菜单对于不同角色的不同权限,描述是对菜单的简单介绍。表4.4菜单表(menu)名称属性名类型长度是否为空说明菜单IDidint11否主键菜单名namevarchar30否网址urlvarchar100图标iconvarchar20上级IdparentIdint11权限permissionvarchar10描述descriptionvarchar404.5ID备注,即对资源的描述和说明。4.5资源表(source)名称属性名类型长度是否为空说明资源IDidint11否主键搜索名searchNamevarchar40资源名sourceNamevarchar40资源大小sizefloat网址urlvarchar200用户账号userNumvarchar20资源类型typevarchar20备注commentvarchar2004.6ID表4.6学生表(student)名称属性名类型长度是否为空说明学生IDidint11否学号stuNumvarchar20否姓名stuNamevarchar20否性别sexvarchar10电子邮箱emailvarchar20电话号码telephonevarchar20手机号码handphonevarchar20所在学院academyvarchar20所在专业majorvarchar20所在班级classesvarchar20学生选课表的设计,如图4.7所示,该表主要包括学生ID和课程ID,该表是用来连接学生表和课程表的。4.7学生选课表(studentcourse)名称属性名类型长度是否为空说明学生IDstuIdint11否Student表的外课程IDcourseIdint11否键course表的外键4.8ID4.8教师表(teacher)名称属性名类型长度是否为空说明教师IDteaIdint11否主键教工号teaNumvarchar20否姓名teaNamevarchar20否性别sexvarchar2电子邮箱emailint40所在学院academyint40电话号码telephone15手机号码handphone15职称jobTitle40备注content2004.2 原型设计中,我逐步形成了系统整体的一个框架出来。下面是我做原型时的一个页面,如图4.1所示:4.1原型设计界面举例技术框架ExtJs框架首先来认识一下该框架,ExtJs是一个用来开发前端用户界面的技术框架,是用Javascript编写的,并且与后台技术实现无关,不管后面用C#,还是Java或者PHP都没有关系。该框架的功能极其丰富,设计出来的界面特别美观,比如它的高亮显示选中行,还有很多动画效果做的很好,这些都可以提高用户的感知度。最重要的是使用该框架不仅可以使开发的界面更加美观,而且可以简化我们的界面设计工作,为我们省去了设计样式的麻烦,比如它能自动生成行号,并支持checkbox全选,还可以动态选择显示哪些列,还可以支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,再加上可编辑grid,添加新行,删除一或多行,提示多行数据,推拽改变grid大小,grid之间拖拽一行或多行,甚至可以在tree和grid之间进行拖拽等等这些功能。ExtJs之所以有这么强大的功能,其主要原因是该框架封装了一些比较美观又实用的组件,比如TreePanel组件,它是用于显示树信息的,还有GridPanel及EditorGridPanel组件,它们是用于显示表格的,另外还有Ext.Window等控件,它代表应用程序窗口的ExtJs控件。在使用ExtJs的时候,掌握其中的核心控件对于我们来说非常重要,尤其是那些基础类控件。例如上面提到的那些控件,它们都是继承于Panel面板,因此我们要对面板这一核心控件的属性进行重点理解和掌握。下面对面板这一控件进行大概的介绍,面板由以下几个部分组成:一个顶部工具栏(tbar)、一个底部工具栏(bbar)、面板头部(header)、面板尾部(bottom)、面板主区域(body)这几个部分组成。另外,面板类中还内置了面板展开、关闭等功能,并提供一系列可重用的工具按钮,这就使得我们可以轻松实现自定义的行为,面板还可以放入其它任何容器中,另外面板本身又是一个容器,它里面又可以包含各种其它组件。如果我们能够掌握好Panel的应用,那么学习TreePanel、Window等就会变得容易得多。一样的道理,对于ExtJs的表单字段来说,不管是ComboBox,NumberField、还是DateField,它们都是Ext.form.Field类的子类,在它上面定义了表单字段的各种基本操作及特性。所以,在学习使用表单字段组件时,Field这个类一定要作为研究的重点,掌握了它的主要方法、事件等,就能有助于更好的学习使用其它的字段。在项目中,Ext本身的华丽外表的确很吸引人,但这仅仅是其外在的美,还有最核心的内在美,即:Json(JavaScriptObjectNotation)。Json是一种数据交互格式,Ajax框架的数据交互Json,如:jQuery、ExtJsJsonJson并熟练运用是很重要.NETJsonJavaJsonJavaJson插件(和类相似,但是不用配置,直接封装使用。在实际的项目中,各自的取舍配置,都基于项目和需求,并不是每个项目(WEB)都一定要用到。但是,如果想在项目中用Ajax框架,Json的掌握又是必须的。CXF框架ApacheCXF是一个开源的Services框架,CXF可以帮助我们利用Frontend编程API来构建和开发Services,比如JAX-WS。这些Services可以支持多种协议,例如:SOAP、XML/HTTP、RESTfulHTTP或者CORBA,并且可以在多种传输协议上运行,比如:HTTP、JMS或者JBI,而且CXF大大简化了Services的创建,同时它继承了XFire传统,一样可以天然地和Spring进行无缝集成。CXF包含了大量的功能特性,主要集中在以下几个方面:支持WebServices支持多种WebServicesSOAPBasicProfileWS-Addressing、WS-Policy、WS-ReliableMessaging和WS-Security。Frontends:CXF支持多种“Frontend编程模型,CXF实现了JAX-WSAPI(遵循JAX-WS2.0TCK版本,它也包含一个“simplefrontend”允许客户端和EndPoint的创建,而不需要Annotation注解。CXF既支持WSDL优先开发,也支持从Java的代码优先开发模式。容易使用:CXF设计得更加直观与容易使用。有大量简单的API用来快速地构建代码优先的Services,各种Maven的插件也使集成更加容易,支持JAX-WSAPI,支持Spring2.0更加简化的XML配置方式,等等。支持二进制和遗留协议:CXF的设计是一种可插拨的架构,既可以支持XML,也可以支持非XML的类型绑定,比如:JSON和CORBA。CXF有一些优势,它的开发简单,在Standalone方式下执行效率高,可以灵活部署,比如可以部署在一些轻量级的容器上,像TomcatSpringJavaEE应用服务器中部署Services;还可以在独立的客户端或者服务器端进行JavatoWSDL;WSDLtoJava;XSDtoWSDL;WSDLtoXML;WSDLtoSOAP;WSDLtoService;本系统采用的是其中的JavatoWSDL方式。SSH框架首先对该框架做大致的介绍:SSH(SpringStrutsJavaWeb轻量级开发三大开源框架的首字母的缩写。JavaEE的体系结构有三层:表示层、业SSH项目,也要遵循这三层模式。SSH分别实现这样的功能:用Hibernate来完成数据的持久层应用,用Spring的Bean来管理组件(SrutsAcions来完成页面的控制跳转。SSH各个包来实现分层:ActionAction类调用业务逻辑来处理用户请求,然后控制跳转。DAO(数据访问对象互,这些方法由实现它们的类来实现。:放置实现DAO接口的类。org.model:放置表对应的POJO类及映射文件*..service:放置业务逻辑接口。接口中的方法用来处理用户请求,这些方法由实现接口的类来实现。:放置实现业务逻辑接口的类。org.tool:放置公用的工具类,如分页类。perties:实现Struts2和Spring整合。struts.xml:配置Action。applicationContext.xml和web.xmlSSH各部分功能如下:Struts框架技术是JavaWeb开发人员逐步深入应用需要掌握的一种常用的框架技术,掌握这种技术将给实际工程的开发工作带来许多方便,成倍的提高开发效率。比如采用Struts框架技术的Web应用能够自动保留表单中的输入数据,能够自动进行常见的数据校验工作,能够通过OGNL表达式简化JSP页面的代码,实现MVC模式,使系统具有更好的可维护性并能适应更大的应用场合,即是实现了模型(Model)-视图(View)-控制(Cotroller)三部分模块的分离。Struts2基本流程:Web浏览器请求一个资源。DispatcherAction。拦截器自动对请求应用通用功能,如验证和文件上传等操作。Actionexecute方法通常用来存储和(或)重新获得信息(通过数据库。HTML、图片、PDF或其他。SpringMVCSpringWebMVCSpringSpringAOPLoC常多。可以把Spring看成是各种开源技术的黏合剂,用它可以把各种组件组装在一起SpringJ2EE系统开发的Spring个组件,同时为JavaEE应用程序开发提供集成的框架。Spring由7个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理Bean的方式。组成Spring框架的每个模块(或组件)存在,或者与其他一个或多个模块联合实现。各模块的功能如下:SpringBeanFactory模式的实现。SpringSpring框架提供上下文信息,包括企业服务,如JNDIEJB、电子邮件、国际化、校验和调度等。SpringAOP。通过配置管理特性,可以很容易地使Spring框架管理的任何对象支持AOP。SpringAOPSpring框架中。它Spring应用程序的对象提供了事务管理服务。SpringDAO。JDBCDAO地降低了需要编写的异常代码数量(如打开和关闭连接。SpringORMSpringORMORMJDOHibernateiBatisSQLSpring的通用事务和DAO异常层次结构。SpringWeb模块。为基于Web上下文模块之上,简化了处理多份请求及将请求参数绑定到域对象的工作。Spring框架支持与JakartaStruts的集成。SpringMVCWeb应用程序的MVC略接口实现高度可配置,MVCJSP、Velocity、Tiles、iTextPOI。HibernateJava对象与数据库中的关系型数据的桥梁,它可以将关系型数JavaJavaORM,课件HiberbateORM的中间件。Hibernate还可以用来作持久化和反持久化,持化则是将数据库中的二维关系示例化到内存中。因此,Hibernate常位于数据库和应HibernateHibernate的对象-关系映射,程序员即可免去繁重的编码工作量,只需要在映射文件中对关系进hibernate代劳。Hibernate作为模型层/数据访问层。它通过配置文件(hibernate.cfg.xml或perties)和映射文件(*.hbm.xml)把Java对象或持久化对象(PersistentObject,PO)映射到数据库中的数据表,然后通过操作PO,对数据库中的表进行各种操作,其中PO就是POJO(普通Java对象)加映射文件。POJO类中的属性和表中得知字段通过*.hbm.xml映射文件来一一对应。Hibernate开发步骤:Hibernate的配置文件。创建持久化类。创建对象—关系映射文件。HibernateAPI编写访问数据库的代码。总之,SSH三大框架简化了系统开发的工作量,是JavaEE轻量级网站开发更加的简单和规范。技术总结在系统设计的过程中遇到了一些技术上的重点和难点,下面把这些主要的难点问题及对应的解决方案总结如下:ExtGrid是把得到的数据一次性显示在表格里,并没有直接为我们提Extexamples/locale/PapingMemoryProxy.js地数据读取数据,并实现内存分页。实现步骤如下:PagingMemoryProxy.js导入html以前的MemroryProxy换成PagingMemoryProxy①调用store.load({params:{start:0,limit:3}});显示最开始的3条记录。GridExtJsGrid分页功能,现对其参数做以下总结:pageSize:每页显示的记录数,默认是20。store:这个和grid里边的store参数是一样的,因为分页也需要和数据打交道,所以需要这个参数。“第{0}-第{1}{2}条0,1,2displayInfo:是否显示displayMsg,默认是不显示。emptyMsg:没有记录时显示的文本。items:要在工具栏上显示的项,我们在构造之后再来看一下都可以有哪些项。root:包含数据行集合的属性名字。totalPropertyidProperty:数据行中用来作为标识的属性的名字。remoteSortproxyfalse。fields:上一个系列里边提到过。这里多了一个mapping,它是将数据里边的名字映射成封装后的Record字段的名字,名字相同的时候,可以忽略。proxy:数据的来源。在这里,我们只需要知道我们的数据是从url指明的地址获得的,因为这个地址是跨域的,所以使用ScriptTagProxyStrutsradioradiovalue值是字符串,我没radiovalue值是字符value值是非字符串的时候直接写就行了,举例如下:<s:radiolist="#{'student':'学生','teacher':'教师','admin','管理员'}"name="role"value="'admin'"/><s:radiolist='#{1:"A",2:"B",3:"C"}'name="LoginType"value="3"/>hibernatedaogetSession()方法来操getHibernateTemplate()getSession()方法只要继承sessionFactorygetHibernateTemplate()方法必须继承HibernateDaoSupport当然包括sessionFactory;getSession()方法是没有经过spring包装的,spring会把最原始的session给你,在使用完之后必须自己调用相应close方法,而且也不会对声明式事务进行相应的管理,一旦没有及时关闭连接,就会导致数据库连接池的连接数溢出,getHibernateTemplate()spring封装spring管理相应的连接。在实际的使用过程中发现的确getHibernateTemplate()比getSession()方法要好很多,但是有些方法在getHibernateTemplate()并没有提供,这时我们用HibernateCallback回调的方法管理数据库。ExtGridPanelListJSON格式,如果只是用JSONObjectjson=newJSONObject();JSONArraydataArray=JSONArray.fromObject(list);list数据都存在外键的数据,比如有个News类,它可能会有个发布人User的外键,那象的数据:JsonConfigjsonConfig=newJsonConfig();jsonConfig.setJsonPropertyFilter(newPropertyFilter(){publicbooleanapply(Objectsource,Stringname,Objectvalue){if(name.equals("property1")||name.equals("property2")){//这里填写需要过滤的属性名returntrue;}returnfalse;}});JSONObjectjsonModel=JSONArray.fromObject(yourObject,jsonConfig);通过下列途径也可以将不需要的属性过滤掉:JsonConfigjsonConfig=newJsonConfig();jsonConfig.setExcludes(newString[]{"property1","property2"});JSONObjectjsonModel=JSONArray.fromObject(yourObject,jsonConfig);}{ListSexIDs=(List)request.getAttribute("SexIDs");request.setAttribute("SexNames",SexNames);HttpSessinsession session.setAttribute("baseuser",theForm);request.getSession().getAttribute("baseuser")ActionContext.getContext().getSession().put("validateCode",s);ActionContext.getContext().getSession().get("validateCode")}java项目改项目名字,F2web404该在项目改名后,还得在如下地方改:项目上右击鼠标-->Properties-->MyEclipse-->Web-->ContentRoot-->Webcontent-root-->改成想要的项目名即可。SSHjdk6.0Tomcat6.0CXFjdk或者jdk/jre目录(具体在哪个目录参考下面)下加入endorsed文件夹,把和jaxws-api.jar放入endorsed文件夹中。具体是哪个目录下,可以通过System.out.println(System.getProperty("java.endorsed.dirs"));endorsed目录的位置。抛异常Exceptioninthread"main"javax.xml.ws.WebServiceException:Couldnotfindwsdl:bindingoperationinfoforwebmethodsay.Atorg.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:113)at$Proxy30.say(UnknownSource)atTest.main(Test.java:18)原因是:客户端接口少了一段代码@WebService加上之后就好了。importjavax.jws.WebService;@WebService//publicinterfaceHelloWorldpublicStringsayHello(Stringtext);}(9)抛异常 Exception in thread "main" com/sun/activation/registries/LogSupport解决方法是:删除JavaEE5Libraries/javaee.jar/mail,activation包里的东西。具体方法如下:用rar打开_6.0.1.zmyeclipse601200710/data/libraryset/EE_5/javaee.jar,然后删除mail,activation就行了.(10)在struts.xml中添加此语句<constantname="struts.devMode"value="true"/>,进入开发模式,就不用改一次代码重新发布一次了编码与测试服务端开发Model层开发Model层主要包括数据库中表所对应的POJO类,以及对应的配置文件。model层截图:如图6.1所示,服务端model层的开发,主要是学生、教师、课程、资源等实体所对应的类和这些类与数据库对应的配置文件。图6.1 服务端model层对应代码举例@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name="course")publicclassCourseimplementsjava.io.Serializable{privateIntegerid;privateStringcourseNum;@XmlTransientprivateSet<Student>stus=newHashSet<Student>();publicCourse(){}publicCourse(StringcourseNum,StringcourseName,Stringtime,Integercredit,IntegerteacherId,Stringacademy,Stringproperties,IntegermaxNumber,Stringintroduction){this.courseNum=courseNum;this.courseName=courseName;……}Dao层开发Dao(数据访问对象6.2Dao口和接口实现类。图6.2 服务端dao层Service层开发该层主要放置业务逻辑接口。接口中的方法用来处理用户请求,这些方法由实现接口的类来实现。service6.3所示,每个实体对应一个业务逻辑接口以及对应的实现类。图6.3 服务端service层相应代码举例①Service层接口@WebServicepublicinterfaceCourseService{publicvoidsave(@WebParam(name="courses")Coursecourse);public@WebResult(partName="out")CoursefindByCourseNum(StringcourseNum);publicList<Course>find(StringcourseNum,StringcourseName,StringteaName,Integerstart,Integerlimit);publicSet<Student>findStudent(StringcourseNum);}①Service层实现类@WebService(endpointInterface="org.service.CourseService")publicclassCourseServiceManageimplementsCourseService{privateCourseDaocourseDao;publicvoidsetCourseDao(CourseDaocourseDao){this.courseDao=courseDao;}publicList<Course>find(StringcourseNum,StringcourseName,StringteaName,Integerstart,Integerlimit){returncourseDao.find(courseNum,courseName,teaName,start,limit);}publicCoursefindByCourseNum(StringcourseNum){returncourseDao.findByCourseNum(courseNum).get(0);}}Service.xml配置文件举例该配置文件是服务端开发的重要组成部分,利用该配置文件进行服务的发布,然后客户端就可以调用发布出来的服务。<jaxws:endpointid="courses"address="/CourseService"implementorClass="org.service.CourseService"><jaxws:implementor><beanid="courseService"class="org.service.imp.CourseServiceManage"><propertyname="courseDao"><refbean="courseDao"/></property></bean></jaxws:implementor></jaxws:endpoint>Applicationcontext.xml配置文件举例该配置文件主要作用是把service.xml和struts.xml配置文件交由Spring配置文件进行管理。<!--课程--><beanid="courseDao"class="org.dao.imp.CourseDaoImp"><propertyname="sessionFactory"><refbean="sessionFactory"/></property></bean><beanid="courseService"class="org.service.imp.CourseServiceManage"><propertyname="courseDao"><refbean="courseDao"/></property></bean><beanid="courseAction"class="org.action.CourseAction"><propertyname="courseService"><refbean="courseService"/></property></bean>客户端开发Model层开发model.hbm.xml的都与服务器端一样,如图6.4所示:6.4model层Service层开发service6.5所示:图6.5客户端service层Action层开发该层主要放置对应的用户自定义的Action类。由Action类调用业务逻辑来处理用户请求,然后控制跳转。action6.6action类。图6.6 客户端action层代码举例publicStringjsonExecute()throwsException{returnSUCCESS;}try{List<Course>list=this.getCourseService().find(number,"","",getStart(),getLimit());List<Course>temp=this.getCourseService().find(number,"","",0,100);if(temp!=null){setTotalCount(temp.size());//过滤掉关联的属性courcesJsonConfigjsonConfig=newJsonConfig();jsonConfig.setExcludes(newString[]{"stus",});//将List转化为json数组JSONArrayarray=JSONArray.fromObject(list,jsonConfig);this.setJsonString("{success:true,totalCount : " this.getTotalCount()+",list:"+array.toString()+"}");System.out.println(this.getJsonString());this.setNumber(null);}else{//查询没有符合的结果是返回空数据this.setJsonString("{success:true,totalCount:0,list:[]}");}}catch(Exceptione){e.printStackTrace();}Applicationcontext.xml配置文件举例对客户端开发而言,该配置文件是重要组成部分,在此调用服务器端发布的服务。<!--课程管理--><beanid="courseService"class
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 20582:2025 EN Software and systems engineering - Capabilities of build and deployment tools
- 【正版授权】 IEC 60530:1975/AMD1:1992 EN-D Amendment 1 - Methods for measuring the performance of electric kettles and jugs for household and similar use
- 【正版授权】 IEC 60155:1993/AMD1:1995 EN-D Amendment 1 - Glow-starters for fluorescent lamps
- 商业保险产品销售与理赔协议
- 当代国际服务贸易的发展趋势及我国的对策
- 百年孤独:小说选段赏析教案
- 会计准则制定的动因与前提
- 音程考试试题及答案解析
- 疫情韩国考试试题及答案
- 医院在线考试试题及答案
- 口腔实习生岗前培训课件
- 自动生成的文档-202504081202-70
- 钢结构检测管理制度
- T/SHPTA 030-2022民用航空器用聚氟乙烯基阻燃耐候复合装饰膜
- 吊车吊篮高空作业施工方案
- 工资调整变更协议书
- 基于YOLOv5的目标检测算法优化及其在工业场景的应用研究
- 地铁保安服务应急预案
- 早产儿肠内营养管理专家共识2024年解读
- 商务谈判实务-形考任务二-国开(ZJ)-参考资料
- 2025年度专业技术人员继续教育公需科目考试题(附答案)
评论
0/150
提交评论