




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录1 绪 论11.1 课题背景11.2 课题意义11.3 开发目标21.4 开发工具21.4.1 jdk 1.621.4.2 apache tomcat 6.021.4.3 myeclipse 6.521.4.4 mysql 5.032 系统分析42.1 系统目标42.2 系统用例分析42.2.1 个人信息管理模块42.2.2 公告管理模块62.2.3 搜索管理模块72.2.4 数据库管理模块82.3 系统活动分析92.3.1 参与者为系统管理员92.3.2 参与者为普通用户102.4 数据库设计112.4.1 逻辑结构设计112.4.2 数据库实现122.5 小结133 系统设计与实现153.1 个人信息管理模块153.1.1 模块的功能153.1.2 解决思路153.1.3 采用的技术及优势163.1.4 功能的具体实现173.2 公告管理模块193.2.1 模块的功能193.2.2 解决思路193.2.3 采用的技术及优势203.2.4 功能的具体实现203.3 搜索管理模块223.3.1 模块功能223.3.2 解决思路223.3.3 采用的技术及优势223.3.4 功能的具体实现233.4 数据库管理模块253.4.1 模块的功能253.4.2 解决思路253.4.3 采用的技术及优势253.4.4 功能的具体实现263.5 小结264 系统测试274.1 测试目的274.2 测试环境274.3 系统测试274.3.1 个人信息管理模块测试284.3.2 公告管理模块测试294.3.3 搜索管理模块测试304.3.4 数据库管理模块测试304.4 小结315 结 论32附 录33参考文献37致 谢38平顶山学院本科毕业设计1 绪 论随着计算机及网络技术的飞速发展,internet应用在全球范围内日益普及,信息系统的作用也越来越大。为了人们能够在所居住的地方及时得到相应的信息,大量信息网也随着相应出现。本次毕业设计就是设计一个基于struts的都市供求信息网。而在本子系统中所做的工作是对商品与信息的搜索模块,后台信息管理模块中公告管理模块,以及数据库管理模块的设计。1.1 课题背景 社会的快速发展,网络的普及给人们带了意想不到的好处,尤其是在信息传递这方面尤为突出。为了让人们能够及时快速的查找到自己所需的信息,各种信息网随着出现,并且日臻成熟。本次毕业设计实现以b/s(brower/server)结构、用struts来搭建mvc(model/viewer/controller)框架的设计。也就是以网上搜索信息的形式,搭建一个公共信息平台,为任何访问本网站的客户提供优质的商业服务、可靠的商业信息、最新的商业机会。1.2 课题意义课题研究的意义主要在于改变传统的信息查询模式,最大化的发挥网络信息服务的优势和特点。主要是为大量的个人用户及企业提供基本信息发布和查询,为个人与个人、个人与企业、企业与企业之间进行信息通信提供服务。既能实现传统意义上的业务服务,又能够体现信息时代所具有的跨地区、跨行业的特性。在充分利用网络通讯服务的无地域差别的特点,能够为商品的快速流通,提高一定的效率;为人才流动以及劳动力寻找再就业和创业提高了成功率;同时也能够为人们旅游提供咨询帮助以及为旅行社的业务扩展提供平台。为此,本课题依托于人力资源管理信息化、电子化的现状,设计了基于struts的都市供求信息网。1.3 开发目标 因本系统包括11个模块,鉴于分工合作的要求,不仅要设计及实现数据库管理模块、个人信息模块、商品与信息的搜索模块、后台的公告管理模块。同时要保障所设计的内容能够和其他两个组员设计的内容能够实现兼容,让整个系统能够正常的运行。另外能够使用户在操作上感到方便易用。不会因初次登录本系统而无从下手。同时尽量使本系统所包含的信息足够的全面,能够满足用户查找信息的需求。1.4 开发工具 1.4.1 jdk 1.6jdk(java development kit)是sun针对java开发员的产品。自从java推出以来,jdk已经成为使用最广泛的java sdk。jdk 是整个java的核心,包括了java运行环境,java工具和java基础的类库。jdk是学好java的第一步。而专门运行在x86平台的jrocket在服务端运行效率也要比sun jdk好很多。从sun的jdk 1.5开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。系统所采用的版本是jdk 1.6。1.4.2 apache tomcat 6.0tomcat是一个小型的轻量级应用服务器,它是由apache 软件基金会的jakarta 项目中的一个核心项目,由apache、sun 和其他一些公司及个人共同开发而成。因为tomcat 技术先进、性能稳定,而且免费,因而深受java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web 应用服务器。目前最新版本是6.0。系统采用的正是apache tomcat 6.0。1.4.3 myeclipse 6.5myeclipse,是一个十分优秀的用于开发java, j2ee的eclipse插件集合,myeclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。利用它可以在数据库和javaee的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的javaee集成开发环境,包括了完备的编码、调试、测试和发布功能。目前最新的版本为8.5,系统所使用的版本为6.5。1.4.4 mysql 5.0mysql是一个小型关系型数据库管理系统,开发者为瑞典mysql ab公司1。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一点,系统采用的是mysql数据库。2 系统分析2.1 系统目标系统设计的最终目的就是为了能够让用户方便的使用。因用户要想在网站上进行操作就需要进行一个用户创建步骤。那么在设计时,就需要完成创建普通用户的功能。同时系统还必须有管理员这类用户的存在,而从系统的安全方面考虑,在这里系统不提供管理员创建的功能,而是根据需要在数据库中直接添加。但不论是普通用户还是管理员,都应该具有修改个人信息的权限。所以需要在系统中添加个人信息管理的功能。管理员这类用户添加成功后,就要考虑它所能拥有的权限。在本子系统中主要考虑的是在公告管理模块中有拥有的权限,即发布公告、查看公告、删除公告。而为了系统的管理安全,普通用户只能有查看公告的权限。通过管理员发布公告可以做到及时提醒用户网站的最新动态,提高网站的点击率。在商品和信息的搜索模块中,系统中用到了lucene搜索技术和数据库模糊搜索技术。为了用户能够快速精确的查找到所需的商品或者信息提供了技术支持。2.2 系统用例分析开发一个系统就是为了让用户使用,而本系统的用户可以分为普通用户和管理员用户。不论哪种用户,在设计时都要尽可能从用户的角度出发。当用户在操作时,感到简单方便,无疑这个系统就已经成功了一半。所以在系统(子系统)设计的过程中,都要先把自己当成一个用户,其次是开发人员。只有在这样的前提下,才能够设计出一款符合实际情况的系统。下面对子系统中个所涉及到的用例进行详细分析。2.2.1 个人信息管理模块本模块针对的是普通用户和管理员,其中普通用户所具有的功能有修改个人信息和修改密码,管理员能修改密码。本模块的用例图如图2-1所示: 图2-1 个人信息管理用例图该用例图细分了个人信息管理模块,个人信息管理模块包括普通用户个人管理功能和管理员个人管理功能,普通用户和管理员的个人信息管理用例描述分别为表2-1,表2-2如下: 表2-1 普通用户个人信息管理用例描述用例名称:修改普通用户信息用例标识号:2-1-01参与者:普通用户简要说明:用户对个人信息进行修改前置时间流:登录系统基本事件流:1.成功进入个人信息修改界面2.在问题框中输入新的问题3.在答案框中输入新的答案4.在电话框中输入新的电话号码5.在email框中输入新的email6.在地址栏中输入新的地址7.点击更新按钮8.验证通过后系统保存该用户最新信息到数据库9.成功进入修改密码界面10.在密码框中输入新的密码11.在确认密码框中输入相同的密码12.点击更新按钮13.系统保存该用户信息至数据库14.用例结束其他事件流:无异常事件流:输入非法字符后置条件:用户个人信息更新成功表2-2 管理员个人信息管理用例描述用例名称:修改管理员个人信息用例标识号:2-2-01参与者:管理员简要说明:管理员对个人信息进行修改前置时间流:登录系统基本事件流:1.成功进入修改密码界面2.在确认密码框中输入相同的密码3.点击更新按钮4.系统保存该用户信息至数据库5.用例结束其他事件流:无异常事件流:两次输入的密码不同 后置条件:用户个人信息更新成功2.2.2 公告管理模块该模块主要是对公告信息的管理,包括了发布公告、查看公告、删除公告。该模块的用例图如图2-2所示: 图2-2 公告管理用例图该用例细分了对公告的管理,公告管理模块包含了三个子功能。其中发布公告用例描述如下表2-3:表2-3发布公告用例描述用例名称:发布公告用例标识号:2-3-01参与者:系统管理员简要说明:系统管理员发布公告前置时间流:系统管理员角色成功登录基本事件流:1.点击发布公告链接2.进入公告列表和增加公告界面3.在增加公告区域输入标题和内容,验证通过后点击提交4.系统将公告的标题和内容保存到数据库中5.保存成功,返回成功页面6.用例终止其他事件流:1.进入公告列表和发布公告界面2.点击删除,删除公告信息3.点击详情,查看公告信息4.返回成功页面异常事件流:无后置条件:发布公告信息成功2.2.3 搜索管理模块在该模块中用到了lucene全文检索搜索和数据库模糊查询。系统管理员和普通用户都可以通过这两种搜索方式进行查询商品或者信息。该模块的用例图如图2-3所示:图2-3 搜索管理用例图该用例图细分了搜索模块,搜索管理模块包含了两个子功能,其中lucerne全文检索用例描述如下表2-4:表2-4 lucene全文检索用例描述用例名称:lucene全文检索用例标识号:2-4-01参与者:系统管理员,普通用户简要说明:用户搜索商品或信息前置时间流:进入网站首页基本事件流:1.在搜索栏中输入关键字2.点击搜索栏后的高级搜索按钮3.在增加公告区域输入标题和内容,验证通过后点击提交4.系统将查询的结果显示到界面上5.用例终止其他事件流:1.选择在搜索栏上面类别,点击搜索可进行模糊查询异常事件流:无后置条件:搜索成功2.2.4 数据库管理模块数据库的管理操作可以分为数据库的备份和数据库的还原。而数据库管理的用例图如下图2-4:图2-4 数据库管理用例图数据库管理模块包含了备份和还原两个功能,现对还原数据库和备份数据库用例进行描述如下表2-5:表2-5 还原数据库用例描述用例名称:还原数据库用例标识号:2-5-01参与者:管理员简要说明:管理员还原数据库操作前置时间流:管理员角色成功登录基本事件流:1.点击还原数据库链接 2.进入要备份的文件选择界面3.选择指定的文件,点击备份4.系统将调用批处理命令执行sql语句,将数据库更换为指定的状态5.还原数据库成功,返回成功页面6.用例终止其他事件流:选择一个非法的文件,点击还原数据库按钮异常事件流:无后置条件:还原数据库成功表2-6 备份数据库用例描述用例名称:备份数据库用例标识号:2-6-01参与者:管理员简要说明:管理员备份数据库操作前置时间流:管理员角色成功登录基本事件流:1.点击备份数据库链接 2.在指定盘中生成一个sql脚本文件3.备份数据库成功,返回成功页面4.用例终止其他事件流:无异常事件流:生成的sql脚步文件为空后置条件:备份数据库成功2.3 系统活动分析根据以上系统用例图的分析,将各个用例从参与者角度整合为两大活动图,参与者分别为系统管理员和普通用户,这两类用户的活动图分别为图2-5,图2-6。2.3.1 参与者为系统管理员图2-5 系统管理员活动图系统管理员登录未成功时,可以对商品或者信息进行搜索操作,登录成功后也同样能够进行搜索操作。同时还拥有公告管理的权限,公告管理包括了发布公告、查看公告、删除公告。管理员还具有修改登录密码及对数据库进行备份和还原的权限。具体说明如下:搜索商品或信息:用户可以选择lucene全文检索或者数据库模糊查询进行搜索所需的商品或者信息,若查找到所需商品或者信息,则活动结束。如果没有搜索到,则输入关键字重新操作。发布公告:系统管理员登录成功后,可以再公告管理栏中选择发布公告,在编辑框中进行公告的编写操作,随后进行发布,若发布成功则活动结束。不成功则重新进行发布操作。查看公告:用户进行公告的查看界面,点击详情链接,成功跳转到公告的详情界面,即可查看公告。删除公告:系统管理员进入公共的查看界面,点击公告后的删除,成功就返回公告查看界面,不成功则重新进行删除操作。修改密码:用户进入修改密码界面,输入相同密码,点击更新。备份数据库:数据库作为信息系统的核心担当着重要的角色。而系统在运行中发生崩溃或数据发生异常在所难免,为了保证数据的高可用性,备份数据库就要定时实施。还原数据库:在数据发生异常后,为避免损失,需要及时的还原数据库。用户通过选择还原的文件,系统通过java代码执行一个doc命令,执行还原操作。2.3.2 参与者为普通用户图2-6 普通用户活动图普通用户登录成功后,依然可以进行搜索商品或信息,查看公告以及修改个人信息和修改密码操作。具体说明如下:搜索商品或信息:凡是进入本网站的都可以在搜索栏中输入关键字利用网站提供的搜索技术进行查询。修改个人信息:本系统提供用户对问题、答案、电话、email和地址的修改操作。但用户在这些操作中输入非法字符的情况下,点击更新按钮,系统通过判断决定数据是否更新。修改密码:通过密码确认机制,把两次输入的密码在form标签里进行判断。两次密码不同,返回原修改密码界面。相同,就通过调用hkol语句对数据库中的密码进行更新操作。查看公告:用户可以在首页看到一条滚动的公告,但是由于页面板块的限制仍有很多公共信息不能直接在页面中显示出来。这就需要用户登录后,在查看公告这一模块中进行操作。通过查看公告,用户可以了解网站的最新动态。2.4 数据库设计2.4.1 逻辑结构设计本系统使用mysql数据库, mysql是一个小型关系型数据库管理系统。其拥有众多特性:使用c和c+编写,并使用多种编译器进行测试,保证源代码的可移植性;支持多线程,能够充分利用cpu资源;支持windows、linux、aix、solaris、os/2wrap等多种操作系统;优化的sql查询算法,有效地提高查询速度,既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持。对于一般的个人使用者和中小型企业来说,mysql提供的功能已经绰绰有余。而且由于mysql是开放源码软件,因此任何人都可以再genral public license的许可下下载并根据个性化的需要对其进行修改。mysql因为其速度、可靠性和适应性而备受关注。同时可以大大降低总体拥有成本。在通过以上用例分析和活动分析的情况下,为这个子系统设计了数据项和数据结构:公告信息:id,标题,内容,发布时间;商品信息:id,父类id,子类id,商品名,图片,商品类型,市场价格,本店价格,简介,上架时间,招牌,订单数;管理员信息:id,管理员编号,真实姓名,管理员id,密码,权限,身份证号;类别信息:id,父类别id,类别名;用户信息:id,用户名,密码,性别,密保问题,密保答案,真实姓名,身份证号,电话号,email,地址,注册时间。进一步抽象出了系统管理员实体类、用户实体类、商品实体类、商品类别实体类、公告实体类,它们之间的关系类图表现如下图2-7:图2-7 实体类图2.4.2 数据库实现通过以上类图的描述,可以得到以下数据库物理结构: 表2-7 商品表名类型长度十进制是否为空注释idint110非空主键sord_idvarchar100空子类idnamevarchar200空商品名photovarchar1000空图片typevarchar41空商品类型pricefloat160空商品价格introducevarchar2000空商品简介sjtimedatetime00空上架时间jiaomaivarchar600空招牌ordernumint110空订单数表2-8类别表名类型长度十进制是否为空注释idint110非空主键father_idvarchar200空父类别idnamevarchar200空类别名 表2-9用户表名类型长度十进制是否为空注释idint110非空主键usernamevarchar200空用户名passwordvarchar200空密码sexvarchar100空性别problemvarchar300空密保问题solutionvarchar300空密保答案namevarchar100空真实姓名id_cardvarchar200空身份证号phonevarchar200空电话号emailvarchar300空email号addressvarchar400空地址registtimedatetime00空注册时间表2-10公告表名类型长度十进制是否为空注释idint110非空主键titlevarchar200空标题contextvarchar3000空内容ggtimedatetime00空发布时间表2-11管理员表名类型长度十进制是否为空注释idint110非空主键namevarchar100空管理员idusernamevarchar100空真实姓名passwordvarchar200空密码kl_cardvarchar200空身份证号2.5 小结本章对系统进行了一系列的分析说明,先从系统用例分析,对各个模块所具有的功能进行了介绍。然后用在对系统的活动进行分析,描述了系统的使用者所能够进行的操作。最后对于系统数据库的设计,对系统的数据库结构、涉及的数据库表结构和表字段类型都完整列出。本章的内容分析了业务流程,并为系统程序的具体实现奠定了基础。3 系统设计与实现本系统是用struts来搭建mvc的设计,而根据系统的需求分析,本系统设计了两种用户,分别是系统管理员和普通用户。在普通用户中涉及到的模块有个人信息管理模块、公告管理模块和搜索模块,系统管理员用户中涉及到的模块包括个人信息管理模块、公告管理模块和搜索模块。在系统架构的基础上对负责的这四个模块的功能,设计所用到的技术、解决思路及实现过程进行详细描述。3.1 个人信息管理模块3.1.1 模块的功能该模块所具有的功能包括修改密码的确认验证;邮箱号和电话号的输入字符验证;提交表单的验证:更新数据并持久化到数据库中。3.1.2 解决思路个人信息管理模块中从用户分类,包括普通用户和系统管理员两类。普通用户在个人管理模块中具有修改个人信息和密码的权限。在进入修改个人信息的界面中,用户需要从数据库中读取一系列的个人信息,包括用户名,登录密码等。因在用户注册时,所填写的信息需要是唯一的,所以在修改个人信息的界面中给出的信息就应当有用户不能进行修改的项,如用户名,真实姓名等。用户在修改过个人信息后点击更新按钮,先同过form表单进行验证,对修改的内容进行判断,看其是否符合语法。在把用户名传递到数据处理页面,在数据处理层同数据库建立连接,通过对数据里的数据进行检索,看数据库中是否已经存在此数据。然后把用户的最新数据覆盖用户原来的数据,以保障数据是最新的。同时在检索数据时,所花费的时间就必须考虑到。不能因为检索数据库中的数据而花费太长的时间,这样才能保证用户能够以最短的时间进行下一步的操作。修改密码的确认验证,用户登录网站所需的密码是为了保护用户的个人隐私所设定的。而用户在修改密码时,有可能不注意的情况下按到某个键,而导致所设定的密码与所记得的密码不一致。这就需要用到确认密码机制。把两次输入的数据在form标签里进行判断出来。若是相同,则在提交表单后持久化到数据库中保持。若不同,则提示用户重新输入确认密码。表单的验证,在信息网中,用户个人信息都需尽可能的详细,以增强用户与用户之间交流的可信度。所以本系统在设计用户注册这一表单时,把主要的填写选项都已经涉及到,因此这些填写项都是必填的。而用户在某时段因其他因素使用户注册的信息跟现在的情况不一致,则用户就需要对个人信息进行更改。在更改时各选项时要进行了验证操作,所以当用户点击页面内的更新按钮时,只需要对数据进行空(null)验证。不为空,则把填写的数据持久化到数据库中。若有空值,则提示用户进行填写操作。邮箱号和电话号的输入字符验证,为了能够给用户及时的提供消息,网站有时会把信息通过邮件的方法发给用户,所以用户输入一个合法的邮箱号是必不可少的。同时为了方便用户之间更直接的进行联系,电话号码也需要考虑。在这里邮箱号和电话号的验证可以通过正则表达式来实现。3.1.3 采用的技术及优势模块中密码的确认验证、表单的验证、邮箱号和电话号的输入字符验证所用的技术有struts框架、ajax、js表单验证技术、hibernate操作数据库技术以及正则表达式。struts框架的优势: struts是一种基于mvc经典设计模式的开放源代码的应用框架,也是目前web开发中比较成熟的一种框架。它通过把servlet、jsp、javabean、自定义标签和信息资源整合到一个统一的框架中,为web开发提供具有高可配置行的mvc开发模式。struts体系结构实现了mvc设计模式的概念,它将model、view和controller分别映射到web应用中的组件。controller负责控制流程,由actionservlet负责读取struts-config.xml,并使用actionmapping来查找对应的action;model由系统状态bean actionform和商业逻辑的javabean来构建;view是由jsp和struts提供的自定义标签来实现。struts可以减少在运用mvc设计模型来来开发web应用的时间,清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程2。ajax的优势:ajax,异步javascript与xml,是使用客户端脚本与web服务器交换数据的web应用开发方法。这样,web页面不用打断交互流程进行重新加载,就可以动态地更新。使用ajax,你可以创建接近本地桌面应用的,直接的、高可用的、更丰富的、更动态的web用户接口界面。而传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做法浪费了许多带宽,因为在前后两个页面中的大部分html代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多与此不同,ajax应用可以仅向服务器发送并取回必需的数据,它使用soap或其它一些基于xml的web service接口,并在客户端采用javascript处理来自服务器的响应9。因此在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以web服务器的处理时间也减少了js表单验证的优势:表单的验证一直是网页设计者头疼的问题,而表单验证类validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。通过js表单可以对网页中的表单项输入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。因为是伪静态类,所以在调用时不需要实例化,直接以“类名+语法+属性或方法名”来调用。hibernate的优势:hibernate作为一个开放源代码的对象关系映射框架,它对jdbc进行了非常轻量级的对象封装,使得设计人员可以随心所欲的使用对象编程思维来操纵数据库。能够实现数据库的可移植性。同时带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短20。3.1.4 功能的具体实现用户输入用户名和密码后点击登录这一超链接,因采用ajax异步加载技术,用户进入到个人管理界面。在点击个人信息这一超链接,就跳转到到普通用户个人信息界面。先在界面中创建了一个form表单。因用户只能修改密保问题、密保答案、电话号、email号和地址。而其它的信息选项就应当定义为不可更改的,就需要在程序中使用readonly=”readonly”。 在密码和确认密码的输入框中输入数据后,在本form标签里使用javascript调用onclick( )方法,进行两次数据的判断。若两次数据一致,提示更新成功,并返回修改密码页面;若不一致,这提示用户重新输入确认密码。当按到更新按钮后,通过在本form表单里的fuction submitl( )方法,在此方法中进行各输入项的空(null)判断。若有输入框中有空值,则提交表单失败;若输入框中没有空值,由form标签里的action=”user.do?method=add”属性找到struts的核心配置文件struts-config.xml所映射到的useraction类。通过useraction类中对userdao( )的调用,进入dao层验证那么就可以在userdao.java文件中通过hibernate操作数据库数据持久化到数据库中。如下图3-1所示:图3-1 电话号输入格式错误提示邮箱的输入字符的验证,在这里用了正则表达式来实现输入字符格式的验证,即:!userform.email.value.match(wd+wd+(.wd+)+$)。如下图3-2所示:图3-2 email地址输入格式错误提示更新数据的实现,用户点击更新这一超链接时,触发了一个action。该动作交给web容器处理,web容器根据该动作的参数user.do? method=update。决定进入到useraction类中,然后根据method参数判断进入到哪个分支,本次操作进入修改个人信息的方法。该方法调用dao的adduser方法,而adduser方法通过hibernate封装好的方法session.get 得到用户信息对象,对数据进行处理。完成个人信息的更新。如图下图3-3所示:图3-3 更新信息提示3.2 公告管理模块3.2.1 模块的功能因系统分为系统管理员用户和普通用户,所以系统对系统管理员来讲拥有发布公告、查看公告、删除公告的功能,系统对普通用户来讲拥有可以查看公告的功能。3.2.2 解决思路系统管理员用户和普通用户查看公告可通过两种相同的方式:一种是在网站首页面,通过浏览一条自动循环滚动公告的方式;一种是登录系统,在个人管理中点击公告管理,进入到公告列表界面,在这个界面中列出了网站一段时间内发布的公告,然后用户可以点击详情选项,跳转到公共详情界面,进行查看公告的全文。系统管理员发布公告,要先登录系统进入个人管理界面。在公共管理选择框中点击发表公告,然后跳转到发布公告界面,在fck编辑框内输入内容 ,当点击提交后,就要向数据库中插入一条记录,在插入之前,要先做验证,用js代码验证输入是否为空等前台验证,然后还要进行后台验证,即是查询数据库,看看数据库中有没有这个标题的公告。提示已经存在;否则,提示可以发布本条公告。系统管理员删除公告,需要先找出这一个公告的对象,然后对其执行删除操作。有时用户可能出现手误或者还未确切考虑好是否真要删除,这里就需要在用户点击删除之后应该通过js弹出一个确认删除框,让用户确定是否进行真正的删除。3.2.3 采用的技术及优势在编辑公告内容时用到了fck编辑器,hibernate操作数据库技术和js技术。hibernate操作数据库技术和js技术在上个模块已经谈到。这里主要介绍fck编辑器。fckeditor是一个开源的html在线文本编辑器,它拥有很好的性能,用户只需要很少的时间就可以载入fckeditor所需文件。对于其他在线编辑器来说,这几乎是个很难解决的难题,因为在开启编辑器时需要装载太多的文件。比如cuteeditor,虽然功能比fckeditor还有强大,可是它本身很庞大,在易用性方面不如fckeditor。fckeditor在线编辑器,它里面融入了作者高深的面向对象的javascript功力,集易用性和强大的功能与一体。主要是若用文本框的话,编辑的内容的格式或颜色是无法改变的。而通过使用fck编辑器就可以使编辑的内容的格式或者颜色改变,做到使发布的公告能够醒目,让用户能够及时的注意到。3.2.4 功能的具体实现下面主要介绍了使用fck编辑器编辑内容的操作:要使用fck编辑器,就要先把fck编辑器集成到项目中。首先要把fck编辑器所需要的5个jar核心包(fckeditor-java-core-2.4.jar、commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar、slf4j-api-1.5.2.jar,slf4j-jdk14-1.5.2.jar)添加工程目录web-inf/bin中。接着就要开始配置文件,可以先在工程目录src/下新建一个文件perties,添加内容:connector.useractionimpl=net.fckeditor.requestcycle.impl.useractionimp;再修改web.xml文件,用来提供上传功能支持。为fck编辑器中的核心配置文件fckeditor.js中有关工具栏中功能的选项,格式的配置(换行和换段落),字体设置,字体颜色变化等一系列的默认属性。在进行公告的编辑中就会出现不符合实际的情况。所以就要在工程目录/webroot下重新建一个新的配置文件mytest.js。在其内编写所需要的实例,让其覆盖配置文件fckeditor.js中的实例。这样不仅能够使编辑框更简洁,同时还能是用户操作起来更方便。在fck编辑器中添加内容后,若要改变其格式,就要通过fckeditor中的属性instancename=”context”获取其内容,若是改变的字体样式,就要调用自定义的配置文件mytest.js文件里的fckconfig.fontname这个实例。为了能够使用这个值,就要给核心配置文件里的fckconfig.customconfigurationspath的路径改为/gongqiu/mytest.js(gongqiu为项目名,mytest.js为新配置的文件)。这样就能对字体的样式就行改名。若要想内容进行其他的改变,也是只有对配置文件进行修改就能够达到目的。公告的发布的实现是需要系统管理员登录成功后,点击查看公告链接,系统跳转到公告查看界面,点击添加公告这一超链接,管理员进入添加公告界面。利用fck编辑器进行编辑所需内容,然后点击添加按钮。这时触发一个action,该动作交给web容器处理,web容器根据该动作的参数gg.do? method=add。决定进入到ggaction类中,然后根据method参数判断进入到哪个分支,本次操作进入添加公告的方法。该方法调用dao的addgg方法。而addgg方法通过hibernate封装好的方法session.get 添加公告对象,页面跳转到成功页面。如下图3-4所示:图3-4添加公告内容显示公共删除的实现是,在公共查看界面点击删除链接或者在公告详情界面点击删除链接。点击删除链接时,操作同样会触发一个action,该动作交给web容器处理,web容器根据该动作的参数gg.do? method=deletegg&id=决定进入到ggaction类中,然后根据method参数判断 进入到哪个分支,本次操作进入删除公告的方法。该方法调用deletegg方法,deletegg方法通过hibernate封装好的方法session.get得到公告对象,然后通过hibernate封装好的方法session.delete删除该对象,页面跳转到成功页面。如下图3-5所示:图3-5添加公告内容显示3.3 搜索管理模块3.3.1 模块功能对网站内的信息进行数据库模糊查询和lucene全文检索。3.3.2 解决思路在本系统的数据库中数据不是太多的情况下,通过数据库提供的方便的检索查询功能,利用标准的sql语句很容易得到某个数据库表内的具体记录。然后在把检索到的数据以列表的形式显示到界面中。lucene全文检索,是把所有文档都经过索引过程完成了预处理,预处理后在文档库使用倒排索引结构,搜索引擎的信息查询采用了索引查询方法5。这样能够保证在系统数据太庞大时,能够顺利并快速的检索到所需的信息。3.3.3 采用的技术及优势在搜索模块中主要用到了lucene搜索引擎技术。一般的数据库管理系统,都能够提供一般的搜索和模糊查询,但是利用数据库管理系统自动的查询功能,因其性能比较差,不能够胜任对拥有海量的数据库进行查询。如果强行操作,容易导致系统的崩溃。既不方便用户的查询,又给数据库的维护带了很的麻烦。所以在对那些每天都有巨量的数量流的网站时,这种数据库查询模式就不能够在适用了。这就需要一种新的搜索技术:lucene搜索引擎技术。lucene作为一个全文检索引擎,其具有很多突出的优点:1.索引文件格式独立于应用平台。lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。2.在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。3.设计了独立于语言和文件格式的文本分析接口,索引器通过接受token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。4.已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力,lucene的查询实现中默认实现了布尔操作、模糊查询、分组查询等。同时面对已经存在的商业全文检索引擎,lucene也具有相当的优势。它的开发源代码发行方式,在此基础上程序员不仅仅可以充分的利用lucene所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面向对象编程的实践。进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。在这一点上,商业软件的灵活性远远不及lucene。而本系统作为一个都是供求网,是属于商业软件的一种,在这里应用lucene是很恰当的7。3.3.4 功能的具体实现要在项目中实现lucene搜索,就要先把lucene集成到项目中。可以先把lucene开发工具包lucene-core-2.3.0.jar集成到项目中。在新建一个类包(本系统的类包为com.pdsu.lucene),在类包下新建两个java文件,一个是名为indexmanger的java文件,此文件是为了实现lucene索引的创建和优化功能。另一个是名为tgg的java文件,这是一个索引文件,是整个项目在实现搜索功能上的核心文件,实现与数据库的交互。而在索引结构的限定下,索引过程需要指定一个索引目录,并且要求目录下预先保存了创建好的索引。所以就要在这个tgg.java文件创建好后,并运行,以生成一个索引文件。在索引已建立的条件下,那么在搜索栏中用户输入查询条件,点击全文检索(lucene)按钮后,利用indexsearcher这个查询类,作为检索的主要控制器和工具,也就是所有搜索操作的入口。因indexsearcher继承自searcher基类,可以实现search方法用来完成检索查询操作。进一步在使用过程中,利用相关参数(本系统使用的是directory对象方式)来构造一个indexsearcher实例(代码:indexsearcher searcher=new indexsearcher(disrectory);),实现对目录索引的访问。然后进一步的生成索引项term,通过这个term对象来保存查询信息。并传递给query对象(鉴于每一个query实例代表了一个查询请求。而query类本身是一个抽象类,无法直接实例化。那么在本系统中query对象是通过queryparser类来构造的)来构造查询器。项目中的query对象为lucene提供了对用户查询的提炼和约束能力。而本系统是通过先跳到配置文件action中调用对应的dao类(本系统的是lucenedao)。在dao类中通过参数keyword调用queryparser(查询分析器)和booleanquery(逻辑组合搜索)。queryparser在这里通过实例对象来完成检索分析,即先生成分析器实例,用于分析器对指定字段检索内容的分析。这里要注意一点:分析器对象在使用时,要与索引创建时对应域的检索。功能代码:analayzer analyzer=new simpleanalyzer();然后在创建查询解析器实例,对指定域的检索进行分析。在这里要记住解析器通常对应一个文本分析器实例,分析器的作用范围是对整个域的检索,功能代码:queryparser parser=new queryparser(“content”,analyzer);。最后在调用查询解析器parse方法,对输入的检索词进行分析。分析的结果形成对应的lucene
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 园林行业:新质生产力的指向
- 2025年耳鼻喉疾病诊断治疗实践考核答案及解析
- 安全生产包含讲解
- 2025年神经外科手术技巧实践考试卷答案及解析
- 2025年核医学技术应用实验操作考核答案及解析
- 2025年病理生理学病理生理指标异常解读综合考试答案及解析
- 2025年生殖医学试管婴儿辅助生殖知识模拟考试答案及解析
- 和谐医护关系价值
- 技术是新质生产力的支点
- 新质生产力50强上市公司
- 阿里巴巴一达通服务
- 《人才池 人才培育的靶心战略》读书笔记思维导图
- DB11∕T 1789-2020 餐饮服务单位餐饮服务场所布局设置规范
- 现代设计理论与方法(上)
- EP 中文的课件资料
- 碳纤维材料工程检验批质量验收记录表优质资料
- GB/T 95-2002平垫圈C级
- 现代化工绿色化工课件
- 单孔腹腔镜课程讲义课件
- 人工血管动静脉内瘘术后护理课件
- 普通逻辑ppt课件(完整版)
评论
0/150
提交评论