《课程设计-毕业论文-毕业设计-基于Webservice的信息查询系统.doc》由会员分享,可在线阅读,更多相关《课程设计-毕业论文-毕业设计-基于Webservice的信息查询系统.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、毕业论文基于Webservice的信息查询系统旅游城市信息、天气预报、人民币汇率、手机号码归属地等信息查询时间:2014-1-20目录项目开发人员角色与工作任务分配2项目部署与测试说明3摘 要41 Webservice相关模型及理论51.1 Webservice介绍51.2 WebService的技术支持61.2.1 XML和XSD61.2.2 SOAP协议61.2.3 UDDI71.2.4 WSDL81.2.5远程过程调用RPC与消息传递82 当前Webservice开发技术92.1 微软.NET92.2 Sun的Java WSDP92.3 IBM的WebSphere92.4 ApAche的
2、Axis103 系统设计与实现113.1服务发布端Axis2配置113.1.1搭建axis2环境113.1.2生成wsdl文件113.1.3生成server端的.java文件113.1.4生成server端的.java文件113.2 客户端设计与实现123.2.1搭建项目架构123.2.2模块代码开发123.2.3 WSDL文件分析133.2.4解析XML数据文件143.3系统测试流程173.3.1部署系统测试环境173.3.2旅游景点查询测试173.3.3 天气预报查询测试183.3.4 外汇-人民币即时报价测试193.3.5 国内手机号码归属地查询查询测试204项目总结与开发心得体会22项
3、目开发人员角色与工作任务分配排名姓名联系方式角色完成工作任务1王立峰yuw01架构设计、编写代码、测试调试、文档编写,设计流程图组织项目架构,完成主要代码编写,调试修改,编写项目文档,搜集相关资料2高超开发、测试、文档编写,搜集相关资料编写代码、测试、文档编写,搜集相关资料3黎超开发、测试、文档编写、使用Visio画流程图编写代码、测试、文档编写、使用Visio画流程图项目部署与测试说明1、运行环境:jdk1.5以上,tomcat5.52、tomcat配置:修改tomcat根目录下conf文件夹下的server.xml配置文件,在中加入如下配置,;重新启动tomcat,在浏览器中输入:http
4、:/localhost:8090/webservicetest (其中8090为测试机tomcat端口号),进入系统。3、使用本系统需是计算机处在联网状态,才能访问Internet上发布的Webservice服务的功能。4、由于在Internet上未找到可用的“旅游城市信息查询”的Webservice服务,故该功能暂时无法进行测试使用。摘 要Web Service是构建互联网分布式系统的基本部件,已正成为企业应用集成(Enterprise Application Integration)的有效平台。在互联网中可以直接调用Web Service构建应用程序,而不必考虑这些Web Service内
5、部是怎么实现的。Web Service通过标准通信协议,通过使用SOAP通信协议,在互联网上发布web Service服务程序模块(以服务的方式)。Web Service发布一份详细的WSDL(Web Service Description Language)接口说明,来帮助用户构建应用程序。Web Service将服务注册到管理服务器,通过UDDI(Universal Discovery Description and Integration)文档说明服务接口,用户查询和使用所发布的web Service服务。Web Service 是一种新的web应用程序,是自包含、自描述、模块化的应用,
6、可以发布、定位、通过web调用。可以执行从简单的请求到复杂商务处理的任何功能。部署以后,其他Web Service应用程序可以发现并调用它部署的服务。 关键词:Webservice;WSDL;SOAP;XML;旅游城市信息、天气预报、人民币汇率、手机号码归属地; 1 Webservice相关模型及理论1.1 Webservice介绍从表面上看,WebService就是一个应用程序,该应用程序向外界提供了一个能够通过Web进行调用的API。即用编程的方法通过Web调用来实现某个功能的应用程序。如图:创建Web Service,该Web Service作用是查询旅游城市信息、天气预报、人民币汇率、
7、手机号码归属地信息。接受查询条件字符串,通过SOAP协议将客户端请求信息发送到Web Service服务发布服务器上,Web Service服务端接收用户请求信息,调用中间层组件,把结果格式化为xml数据形式,最后还要通过SOAP协议将结果数据发挥客户端,客户端通过浏览器即可查看该信息。如图:从深层次上看,Web Service是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。 Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与
8、其他兼容的组件进行互操作。它可以使用标准的互联网协议,像超文本传输协议HTTP和XML,将功能体现在互联网和企业内部网上。Web Service平台是一套标准,主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。你可以用你喜欢的任何语言,在你喜欢的任何平台上写Web Service。1.2 WebService的技术支持WebService平台需要一套协议来实现分布式应用程序的创建。要实现互操作性,平台无关性,Web Service平台必
9、须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。目前这些协议有:1.2.1 XML和XSDXML是可扩展的标记语言,是Web Service平台中表示数据的基本格式。其易于建立、易于分析和平台无关。XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD 定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。XSD是 XML结构定义 ( XML Schemas Definition )。 XML Schema 是DTD的替代品。XML Schema语言也就是XSD。XML Schema描述了XML文档的结构。可以用一个指定的XML Sc
10、hema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析。Web Service平台是用XSD来作为数据类型系统的。当用某种语言如Java、VB.NET或C# 来构造一个Web Service时,为了符合Web Service标准,所使用的数据类型都必须被转换为XSD类型。并使用SOAP协议使其在不同平台和不同软件的不同组织间传递。1.2.2 SOAP协议SOAP(Simple O
11、bject Access Protocol)即简单对象访问协议,用于交换XML编码信息的轻量级协议。主要有三个方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,可以使用 SMTP(简单邮件传输协议)来传递SOAP消息。在传输层之间的头是不同的,但XML的有效负载保持相同。简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 Web 上交换结构化的和固化的信息。 SOAP可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(
12、 HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。还支持从消息系统到远程过程调用(RPC)等大量的应用程序。 SOAP 包括三个部分: SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。 SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。 SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。 SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模式。所有的 SOAP 消息都使用 XML 编码。一条 SOAP 消息就是
13、一个包含有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的 XML 文档。 把SOAP绑定到 HTTP 提供了同时利用 SOAP 的样式和分散的灵活性的特点以及 HTTP 的丰富的特征库的优点。在 HTTP 上传送 SOAP 并不是说 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP上的SOAP语义会自然的映射到 HTTP语义。在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上,而 RPC 应答映射到 HTTP 应答。然而,在 RPC 上使用 SOAP 并不仅限于 HTTP 协议绑定。在本系统中,采用的是基于SOAP协议
14、的直接的Webservice的调用。1.2.3 UDDI UDDI(Universal Description, Discovery and Integration)统一描述、发现和集成协议,是为解决Web服务的发布和发现问题而制订的新一代基于Internet的电子商务技术标准。它包含一组基于Web的、分布式的Web服务信息注册中心的实现标准,以及一组使企业能将自己提供的Web服务注册到该中心的实现标准。UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service
15、注册,以使别的企业能够发现的访问协议的实现标准。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件。UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。UDDI 项目中的成员可以通过UDDI Business Registry (UBR)来操作Web服务的调用,UBR是一个全球性的服务。Web服务供应商可以在UBR中描述并且注册他们的服务。用户可以在UBR中查找并定位他们所需要的服务。UDDI是一种根据描述文档来引导系统查找相
16、应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布、编辑,浏览以及查找注册信息。采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。1.2.4 WSDLWeb Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。WSDL在UDDI中总是作为一个接口描述文档。因为UDDI是一个通用的用来注册WSDL规范的地方,UDDI的规范并不限制任何类型或者格式描述文档。这些文档可能是一
17、个WSDL文档,或者是一个正规的包含导向文档的Web页面,也可能只是一个包含联系信息的电子邮件地址。现在Java提供了一个 Java API for WSDL (JWSDL)规范。WSDL提供了一套能快速处理WSDL文档的方法,并且不用直接对XML文档进行操作,它会比JAXP更方便,更快速。1.2.5远程过程调用RPC与消息传递Web Service本身其实是在实现应用程序间的通信。现在有两种应用程序通信的方法:RPC远程过程调用和消息传递。RPC远程过程调用,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一种位置上的透明性:服务器暴露
18、出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。2 当前Webservice开发技术2.1 微软.NET 微软的.NET技术应该算是现在最为流行的Web Service 开发技术。首先因为其公司在以前相应的产品就占有相当大的市场份额,以至使新推出的.NET得以有比较稳定的用户群;其次也是更重要的是 .NET平台不仅延续了微软一贯的编程风格,而且还增加了许多支持Web 服务的关键性技术,使得.NET在操作的简单性和执行的稳定性,高效性上达到了一个非常好的结合。 微软的Visual Studio.NET便是一个便于
19、 Web 服务的开发工具。微软的目标是,将其新编程语言C#作为Web Service的首选语言。虽然C#看起来与Java类似,但是还有一些Java中没有的独特的功能。.NET技术中用于Web Service 开发的主要工具是ASP.NET。ASP 提供了一些超出ASP以前版本的优点(例如:代码和HTML的分离,支持C#语言等)。2.2 Sun的Java WSDP针对开发Web Services程序的需求,Sun推出了Java Web Services Developer Pack,简称Java WSDP。随着1.2版本的发布,Java开发人员现在可以拥有一个方便的、集所有功能于一身的开发包,用
20、来帮助在Java平台上开发Web服务。Java WSDP包含Java XML Pack中的所有用于XML的Java API(Java APIs for XML(JAX),还包含有Apache Tomcat服务器以及为开发与测试Web服务提供一个功能完备的环境所需的其他组件。Java WSDP Registry Server (UDDI Server)。2.3 IBM的WebSphereIBM公司是业界第一家能够提供全面支持Web服务的电子商务基础设施中间件的公司。通过多年来与W3C(The World Wide Web Consortium)的共同努力,包括DB2、Lotus、Tivoli 和
21、WebSphere在内的所有IBM软件都实现了对SOAP、WSDL、UDDI、Linux、XML、J2EE等开放技术和标准的全面支持。IBM公司的WebSphere也是比较好的基础架构软件开发平台。WebSphere软件平台及开发工具包括WSAD (WebSphere Studio Application Developer) 基于J2EE、XML 和Web服务等开放标准,并具备 IBM 在可靠性、扩展性和安全性上的主要优势。WebSphere 是 IBM 在 Web Services策略中的核心平台,它支持所有开发、发布、部署 Web Services应用所必需的开放标准和技术,包括 UDD
22、I,SOAP,J2EE,WSDL,和对 XML 技术集成的增强,这特使得它在全球有很多用户。2.4 ApAche的AxisAxis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java语言。Axis是Eclipse下的Lomboz插件。3 系统设计与实现在实际Webservice项目开发中,分为Webservice服务发布端和客户端开发,由于本系统的主要是基于Internet上已发布的Webservice服务的客户端开发,因此本章主要介绍客户端的开发过程,有关Webservice服务发布端的开发,将使用ApAche的Axis2来进行发布。
23、3.1服务发布端Axis2配置3.1.1搭建axis2环境将axis2.war包拷到Tomcat根目录webapps目录下,然后启动Tomcat,访问http:/localhost:8080/axis2/ ,显示Axis2欢迎页面,则axis2已经部署成功 。3.1.2生成wsdl文件将axis2的lib拷入项目的lib文件夹下,在build.xml的Outline视图中右键生成wsdl,并按要求修改wsdl文件,如生成的客户端或服务端的类名等。3.1.3生成server端的.java文件在build.xml的Outline视图中右键generate.service,控制台显示build su
24、ccessful后会生成对应的一些service提供类。3.1.4生成server端的.java文件在build.xml的Outline视图中右键aar.service,生成service提供类的aar文件,启动tomcat服务器,然后在浏览器中访问:http:/localhost:8090/axis2/,选择左侧的Tools中的上传 Service,选择刚生成的aar文件,则服务端的webservice服务发布完成。3.2 客户端设计与实现3.2.1搭建项目架构在Eclipse下建立一个web项目,将axis相关开发包拷到项目目录中。项目目录结构如下:3.2.2模块代码开发在weather包
25、下建立GetCityWeather将Action类,作为天气预报查询服务的servlet处理类,该类将调用business包下的WeatherService 类的业务处理方法,该方法通过SOAP协议调用服务器端的webservice服务,得到服务器端的查询结果数据。GetCityWeather类的接口函数如下:public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException String provice = req.getParameter(prov
26、ince1);/查询的省份名字String city=req.getParameter(city1);/获取查询城市的名字System.out.println(输出参数:*:省:+provice+市:+city);List weatherList = WeatherService.getWeatherService(provice,city);PrintWriter pw=resp.getWriter();if(weatherList != null & weatherList.size()=0)for (String weather : weatherList) pw.println(+ w
27、eather+); else pw.println(+没有查到你要的城市!请确认您的查询条件!+); WeatherService类的接口函数如下: /* * 获得SOAP协议发回数据流 * param url 服务器端url * return */ public static InputStream getSoapInputStream(String url) /* * 服务调用接口函数 * param provinceName * param cityName * return */ public static List getWeatherService(String provinceN
28、ame,String cityName)3.2.3 WSDL文件分析在浏览器中输入 WeatherWS.asmx?wsdl,查看WSDL文件的借口描述,会看到如下内容,从这里找到调用webserviceAPI借口函数,如图:3.2.4解析XML数据文件在客户端接收到服务器端通过SOAP协议发回的XML数据文件,根据借口说明文件,来解析XML文件,将解析出来的服务器端数据显示出来。在浏览器中输入: WeatherWS.asmx查看接口文件,接口描述文件如图:点击上图的getWeather,然后点击“调用”,看一看到服务器端发回的XML文件的格式如下: - ArrayOfString xmlns:
29、xsi=http:/www.w3.org/2001/XMLSchema-instance xmlns:xsd=http:/www.w3.org/2001/XMLSchema xmlns=http:/WebX 直辖市 上海 上海 2013 2010/02/01 20:16:40 今日天气实况:气温:7.8;风向/风力:西北风 小于3级;湿度:66%;气压:1022.9hPa 空气质量:良;紫外线强度:最弱 穿衣指数:天气凉,建议着厚外套加毛衣等春秋服装。年老体弱者宜着大衣、呢外套加羊毛衫。感冒指数:相对于今天将会出现大幅度降温,易发生感冒,注意增加衣服,加强自我防护避免感冒。晨练指数:早晨天气寒
30、冷,风力稍大,请尽量避免户外晨练,若坚持户外晨练请注意保暖防冻。洗车指数:不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。晾晒指数:天气晴朗,午后温暖的阳光仍能满足你驱潮消霉杀菌的晾晒需求。旅游指数:天空状况还是比较好的,但温度稍微有点低,且风稍大,会让您感觉些许凉意。外出请注意防风。路况指数:晴天,其它条件适宜,路面比较干燥,路况较好。舒适度指数:白天天气晴好,但仍会使您感觉偏冷,不很舒适,请注意适时添加衣物,以防感冒。 2月2日 小雨 2/6 东北风3-4级转东风3-4级 7.gif 7.gif 2月3日 小雨转阴 2/5 东风3-4级 7.gif
31、2.gif 2月4日 小雨 5/6 东北风3-4级 7.gif 7.gif 2月5日 阴转小雨 7/8 东风3-4级转东南风3-4级 2.gif 7.gif 2月6日 小雨 7/9 东南风3-4级 7.gif 7.gif 根据上面的XML文件的格式,客户端的解析程序的核心算法代码段如下:public static List getWeather(int cityCode) List weatherList = new ArrayList(); Document doc; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstanc
32、e(); dbf.setNamespaceAware(true); try DocumentBuilder db = dbf.newDocumentBuilder();InputStream is = getSoapInputStream(WEATHER_QUERY_URL + cityCode);doc = db.parse(is);NodeList nl = doc.getElementsByTagName(string);int len = nl.getLength();for (int i = 0; i len; i+) Node n = nl.item(i); String weat
33、her = n.getFirstChild().getNodeValue(); weatherList.add(weather);is.close(); catch (UnsupportedEncodingException e) e.printStackTrace(); catch (DOMException e) e.printStackTrace(); catch (ParserConfigurationException e) e.printStackTrace(); catch (SAXException e) e.printStackTrace(); catch (IOExcept
34、ion e) e.printStackTrace(); return weatherList; 通过getWeather算法将服务器端的XML数据文件解析出来,然后显示数据到客户端浏览器。其他webservice服务采用了相同的程序流程来进行处理。3.3系统测试流程3.3.1部署系统测试环境参考前面“项目部署与测试说明”章节,将系统部署在jdk1.5 + tomcat5.5的测试环境中。启动tomcat,在浏览器中输入:http:/localhost:8090/webservicetest/,进入系统主页面,如图:3.3.2旅游景点查询测试在webservice主页中点击“旅游景点查询”,因为
35、Internet上没有相关的webservice服务发布,该功能暂时还不能用,将转发到一个错误处理页面。如下图:3.3.3 天气预报查询测试在webservice主页中点击“天气预报查询”,进入天气预报查询界面,如图:在上图中选择省份和城市,点击查询,将实时显示天气预报查询结果,如图:3.3.4 外汇-人民币即时报价测试在webservice主页中点击“外汇-人民币即时报价”,进入外汇-人民币即时报价查询界面,如图:在上图中点击,查询,将得到外汇-人民币的实时报价,如图:3.3.5 国内手机号码归属地查询查询测试在webservice主页中点击“国内手机号码归属地查询”,进入国内手机号码归属地查询界面,如图:在上图中输入所要查询的手机号码,点击查询,将可以实时查询手机号码归属地信息,查询结果如图:4项目总结与开发心得体会在这次项目开发中,我们三人开发小组中(王立峰、高超、黎超),从项目的需求分析、架构设计、编码、调试、最终测试成功整个流程开发中,感受了项目开发的完整的流程。在这次课程设计中学习到的不光是知识,还有团队的合作精神。在一个项目中,一个人的思路的是有限的,三个人的智慧却是可以克服许多困难的。在开发过程中,我们三人开发小组,分工合作,顺利地完成了全部的任务。非常感谢王老师给我们提供了一个可以体验项目开发过程和学习项目开发经验的机会。
限制150内