山东师范大学Career团队第1页第六届齐鲁软件设计大赛网上淘宝--网络资源检索软件开发文档参赛单位:山东师范大学信息科学与工程学院作品名称:网上淘宝团队名称:Career山东师范大学Career团队第2页需求规格说明书一.引言1.编写目的本文档的编写为下阶段提供依据,为项目组成员对需求的详尽理解,以及在开发开发过程中的协同工作提供强有力的保证。同时本文档也作为项目评审验收的依据之一。2.项目背景目前,网络上存在大量的资源共享服务器。这些服务器一般存储了一定量的资源,并以web服务的方式供用户和其它服务器访问。现存的问题在于不同服务器的资源组织方式往往不同,有的是通过数据库,有的是通过一些描述文件(如XML),而且数据库的种类和结构也有很大的差别,这就导致不同服务器之间资源共享和资源发现都十分困难。因此,用户如果想访问这些资源,就要登陆每一个服务器去检索和下载需要的资源。由于服务器的分布广泛,数量众多,用户显然难以检索到自己需要的资源。而分布式的资源检索策略则可以有效的解决这一问题。该策略的思想是当用户登陆任何一台服务器的时候,这个服务器除了要检索自己本地的资源以外,还可以作为一个客户端,自动地去连接其它服务器,发出检索请求,并将检索的结果进行合并和汇总,返回给用户。3.定义XML(eXtensibleMarkupLanguage,可扩展标记语言);WEB服务是一种基于XML、SOAP、HTTP、UDDI、WSDL、等一系列标准实现的分布式计算技术。4.参考资料Java编程思想;XML语言;HTML应用程序;Javascript编程大全;JSP编程;软件文档编写指南等。二.任务概述1.目标本系统主要实现资源检索,当用户登陆任何一台服务器的时候,这个服务器除了要检索自己本地的资源以外,还可以作为一个客户端,自动地去连接其它服务器,发出检索请求,并将检索的结果进行合并和汇总,返回给用户。用户只需要登陆任意一台服务器,就可以检索到该xml所描述的所有资源,并以友好方式呈现,另外提供查询花费的时间。对于其中的特定格式资源,如动画、视频等能够直接播放。对于word或PPT文档,能够预览其中的部分内容。2.运行环境硬件环境CPU:Pentium(R)42.60GHZ以上物理内存:512MB以上硬盘:可用空间100MB以上软件环境操作系统:windowsxp山东师范大学Career团队第3页MyEclipse-6.0TOMCAT:tomcat-6.0.网络环境3.条件与限制网络上存在大量的资源共享服务器。这些服务器一般存储了一定量的资源,并以web服务的方式供用户和其它服务器访问。现存的问题在于不同服务器的资源组织方式往往不同,有的是通过数据库,有的是通过一些描述文件(如XML),而且数据库的种类和结构也有很大的差别,这就导致不同服务器之间资源共享和资源发现都十分困难。因此,用户如果想访问这些资源,就要登陆每一个服务器去检索和下载需要的资源。由于服务器的分布广泛,数量众多,用户显然难以检索到自己需要的资源。三.数据描述1.静态数据在网络中,各个服务器的资源所拥有的资源相对固定,资源的信息保存在一个test.xml文档中,存放在服务器根目录下。2.动态数据对一个服务器进行特定字符串的检索会返回同样的结果。因此,在本地服务器保存常用字符串检索结果的缓存会大大减轻网络流量的负担,提高检索效率,所以我们引入了缓存机制缓存数据。3.数据采集每次检索时,先把检索组合条件存放到包access中ResourceOperate类中变量privatestaticListStringplist中,然后进行资源检索,并把检索的结果分别存放到结果缓存列表privatestaticListResourceItemBeanprslist中,和子结果缓存列表privatestaticListResourceItemBeanreslist中。前者为下次同条件新检索提供缓存数据,后者为下次在结果中检索提供缓存数据。四.功能需求功能描述采用WEB服务,这是一种基于XML、SOAP、HTTP、UDDI、WSDL、等一系列标准实现的分布式计算技术。五.性能需求1.数据精确度当资源有更新时能及时准确的将资源反馈给用户。2.时间特性响应时间短、更新处理时间及时、运行时间迅速。3.适应性与操作系统无关、程序设计语言无关、机器类型无关、运行环境无关的平台实现网络上应用的共享,并可用于复杂的系统集成。六.其他需求本系统具有可使用性强、安全保密性高、可维护性好、可移植能力强等特性。山东师范大学Career团队第4页概要设计说明书(ArchitecturalDesignSpecification)一.项目结构1.项目背景实现用户只需要登陆任意一台服务器,就可以检索到大量所需资源,尽管这些资源来自于不同的服务器,但检索的过程对用户来说是透明的,用户检索和获取这些资源就如同检索和获取所请求的服务器上的资源一样。2.参考资料(1)项目开发计划;(2)需求规格说明书;(3)测试计划;(4)用户操作手册;(5)软件开发文档指南。二.总体设计1.需求概述在网络环境下(也可以是一个局域网),用户登陆任何一台服务器的时候,这个服务器除了要检索自己本地的资源以外,还可以作为一个客户端,自动地去连接其它服务器,发出检索请求,并将检索的结果进行合并和汇总,返回给用户。2.软件结构如下流程图:山东师范大学Career团队第5页用户查询请求查询服务器请求判断组合条件是否与上次相同不同相同把组合条件写入缓存读取上次缓存结果把结果集写入缓存检索类型新检索把结果写入子缓存结果中检索本地检索遍历网络检索判断检索范围本地网络是否超时远端检索将此网络结点删除是否汇总合并资源把结果集写入缓存把结果写入子缓存把组合条件写入缓存读取上次缓存子结果把结果写入子缓存显示检索结果查询结束山东师范大学Career团队第6页详细设计说明书(ProceduralDesignSpecification)一.项目包说明com.career.websearch基包com.career.websearch.action逻辑处理包com.career.websearch.access数据操作包com.career.websearch.form数据模型包com.career.websearch.client客户端包com.career.websearch.server服务器端包com.career.websearch.xmlxml解析包com.career.websearch.util公共类包二.程序描述(逐个模块给出以下的说明:)1.路径的获得及处理代码如下publicclassConvertUrl{//将url转化为服务器的绝对路径publicStringconvert(Stringpath,Stringurl){Propertiesprop=newProperties(System.getProperties());Stringsep=prop.getProperty(file.separator);inti=path.lastIndexOf(sep);StringserverPath=path.substring(0,i);i=url.lastIndexOf(/);StringfileName=url.substring(i+1);StringfilePath=serverPath+sep+resources+sep+fileName;returnfilePath;}//对绝结路径进行中文处理publicStringchinaesePath(Stringpath,Stringurl){Propertiesprop=newProperties(System.getProperties());Stringsep=prop.getProperty(file.separator);inti=path.lastIndexOf(sep);StringserverPath=path.substring(0,i);i=url.lastIndexOf(/);StringfileName=url.substring(i+1);try{fileName=java.net.URLEncoder.encode(fileName,UTF-8);}catch(Exceptione){山东师范大学Career团队第7页e.printStackTrace();}StringfilePath=serverPath+sep+resources+sep+fileName;returnfilePath;}//对url中文进行处理publicStringchineseUrl(Strings){inti=s.lastIndexOf(/);Stringformer=s.substring(0,i+1);Stringnext=null;try{next=java.net.URLEncoder.encode(s.substring(i+1),UTF-8);}catch(Exceptione){e.printStackTrace();}Stringpath=newString(former+next);returnpath;}//获得文件名publicStringgetName(Stringurl){inti=url.lastIndexOf(/);StringfileName=url.substring(i+1);returnfileName;}2.用Poi技术获得文件信息并实现对各类信息的转换和提取等操作publicclassOfficePoi{Filefile;FileInputStreamfis;//构造函数创建流文件publicOfficePoi(Stringstr){file=newFile(str);try{fis=newFileInputStream(file);}catch(IOExceptionex){ex.printStackTrace();}}//获得文件名publicStringgetName(){returnfile.getName();}//获得文件大小publiclonggetBytes(){returnfile.length()/1024;山东师范大学Career团队第8页}//修改时间publicStringgetModified(){SimpleDateFormatsdf=newSimpleDateFormat(yyyy.MM.dd);Datedate=newDate(file.lastModified());returnsdf.format(date);}//poi操作word文档publicStringwordPoi(){StringBuffercontent=newStringBuffer( );WordExtractorwordExtractor=null;StringwordStr=null;try{wordExtractor=newWordExtractor(fis);}catch(IOExceptionex){ex.printStackTrace();}try{String[]str=wordExtractor.getParagraphText();for(inti=0;istr.length;i++){content.append(str[i]+br );}wordStr=content.toString();wordStr=wordStr.replace(?,);wordStr=wordStr.replace(null,);inti=wordStr.length();if(i500)wordStr=wordStr.substring(0,500);}catch(NullPointerExceptionne){wordStr=资