<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>技工窝</title>
    <description>以能力为友，以实力为友，更以品德为友。</description>
    <link>http://mhqawjh.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>这种情况，我该怎么办</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/205526" style="color:red;">http://mhqawjh.javaeye.com/blog/205526</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>情况描述：</p>
<p>我签了Ａ城市的一家公司，且于今年３－－－５月份到该公司实习并参加了相应的业务培训和技术培训．</p>
<p>实习结束后，我考虑了一下，感觉Ａ城市的公司不是很适合我，所以我想毁约．</p>
<p>但是公司管我要４０００违约金（其中包括２０００培训费）．</p>
<p>&nbsp;</p>
<p>问题：</p>
<p>我的档案没有转到Ａ城市的公司，Ａ城市的公司说：＂如果不交钱，就不开具退函和返回三方协议＂，在这种情况下，我是否可以不负违约金，大不了三方协议我不要了？（假设接受我的新公司不需要三方协议的情况下）</p>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/205526#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 18 Jun 2008 21:01:51 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/205526</link>
        <guid>http://mhqawjh.javaeye.com/blog/205526</guid>
      </item>
      <item>
        <title>视频监控软件----作品面世 </title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/199135" style="color:red;">http://mhqawjh.javaeye.com/blog/199135</a>&nbsp;
          发表时间: 2008年06月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>我的毕业设计作品---基于WEB方式访问的视频监控软件终于和大家见面了！此软件主要采用Flex+FlashMediaServer完成。基本上能满足一般的监控需求。o(&cap;_&cap;)o...，自恋一下，是不是Flex版本的第一个呢？<br /><br />附件下面供下载的是：本软件的Flex项目源文件，Java源文件，数据库，使用文档。<br /><br />运行此软件，注意事项颇多，请参考：<br /><br />1 在运行本软件时，要确保你的机器上安装了FlexBuilder MyEclipse FlashMediaServer Access。<br /><br />2 client.mxml程序运行机器，server.mxml程序运行机器，FlashMediaServer所在机器，Tomcat所在机器，Access所在机器之间可以相互访问。因为本软件开发时所有的软件全都部署在一台机器上，假如您需要分布部署，请确保上述事项，并根据需要修改源代码。<br /><br />3 在运行Flex项目源文件中的server.mxml时，请确保其所在机器上安装了摄像头。<br /><br />有什么问题，与我联系</p>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/199135#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 01 Jun 2008 13:39:14 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/199135</link>
        <guid>http://mhqawjh.javaeye.com/blog/199135</guid>
      </item>
      <item>
        <title>Oracle中实现分页的SQL语句</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/186927" style="color:red;">http://mhqawjh.javaeye.com/blog/186927</a>&nbsp;
          发表时间: 2008年04月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>写了两个有关分页的SQL 语句,希望对大家有点帮助...记住,只能在Oracle下使用</p>
<p><strong><span style="color: #ff6600;">1 获取总页数</span></strong></p>
<pre name="code" class="sql">SELECT DECODE(mod(COUNT(*),100),0,COUNT(*)/100,TRUNC(COUNT(*)/100,0)+1)
AS  pages FROM XZQH </pre>
<p>&nbsp;其中XZQH是表名,可以换成别的表格或者与别的表格相连或者加上查询条件....总之可以把XZQH换成FROM后的一切东西.</p>
<p>100是没页显示的记录数,换成你想要的!!!</p>
<p>生成结果是具有pages列的一个表格.可以用resultSet.getInt("pages")获得</p>
<p><span style="color: #ff6600;"><strong>2 获取特定的记录数据</strong></span></p>
<pre name="code" class="sql">SELECT x.* from (SELECT z.*,rownum numbers from XZQH z where rownum&lt;101) x where x.numbers&gt;90</pre>
<p>&nbsp;其中XZQH的含义与上述一样,可以换成你任何想要的条件和表连接</p>
<p>其中101和90是指定界限的数字,拿此例来说,是取出第90-----100条数据.</p>
<p>好了,点到为止..具体在实践中该怎么用,大家自己慢慢琢磨吧!!!</p>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/186927#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 25 Apr 2008 20:26:53 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/186927</link>
        <guid>http://mhqawjh.javaeye.com/blog/186927</guid>
      </item>
      <item>
        <title>Struts使用validation的注意事项</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/180132" style="color:red;">http://mhqawjh.javaeye.com/blog/180132</a>&nbsp;
          发表时间: 2008年04月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>一个很老土的问题，好长时间没有摸这个东西了，昨天同事忽然问到我一个这样的问题：&ldquo;Validation怎么用？&rdquo;，生生的调试了两个小时。</p><p>下面把一些注意事项亮出来，这些鬼东西要注意的细节东西太多了，呵呵，脑袋晕了！！！</p><p>&nbsp;</p><p>1 在struts-config.xml中配置Plugin，网上多的是，随便找点来看吧！</p><p>2 配置validation.xml，网上多的是，随便找点来看吧！！！</p><p>3 本该继承ActionForm的FormBean改为从ValidatorForm继承</p><p>4 &lt;action-mapping&gt;下的&lt;action&gt;子节点中的validate属性设为true</p><p>5 在需要验证的jsp页面添加&lt;html:errors property=&quot;和validation.xml中field中的property一致&quot;/&gt;,用来显示错误信息。</p><p>&nbsp;</p><p>至此，validate框架的基本配置就搞定了！！！随后就是一个烦人的问题，错误消息不能显示！！！</p><p>&nbsp;</p><p>解决办法：（假设我们使用的验证规则是required），required规则默认的消息显示key是errors.required。</p><p>&nbsp;</p><p>办法1：在资源文件中加入&nbsp; errors.required=&quot;要显示的错误信息&quot;</p><p>办法2：如果不想要默认的key，可以在validation.xml中的field子元素下添加一个&lt;msg key=&quot;自定义key&quot;/&gt;,把validator-rules.xml中相应的required验证规则中的默认key去掉或者改为自定义key的名(与&lt;msg/&gt;中的key属性值一致)</p><p>&nbsp;</p><p>行了，能想到的注意事项就这么多了！如果仍有问题，留言吧！！！</p>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/180132#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 07 Apr 2008 14:47:10 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/180132</link>
        <guid>http://mhqawjh.javaeye.com/blog/180132</guid>
      </item>
      <item>
        <title>视频监控软件(2)---异步录像</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/166125" style="color:red;">http://mhqawjh.javaeye.com/blog/166125</a>&nbsp;
          发表时间: 2008年02月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br /><p>不好意思，让大家久等了！今天我要实现的一个功能是异步录像！先讲下为什么要提出这样一个问题----假设被监控区域出现了异常（一个陌生人进入），那么本监控系统就要对这一段时间发生的一切进行录制，但此同时我们又在另一端观测这一段时间的实时视频，如何才能做到这一点-----既能录像又不打断我们观测实时视频？</p><p>&nbsp;</p><p>解决原理：我们可以制作发布两个视频流，一个视频流的作用仍然是我们上篇文章所讲到的&ldquo;把实时视频流传送到FMS服务器&rdquo;，另外一个视频流的作用则是播放此实时视频流，假如发生异常则利用此视频流进行录像，这样就解决了第一段落提出的问题。 下面的代码可以覆盖上篇文章提到的server.mxml</p><p>&nbsp;</p><pre name="code" class="xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; height=&quot;571&quot;&gt;
	&lt;mx:Script&gt;
		&lt;![CDATA[
			import mx.core.UIComponent;
			import flash.media.Microphone ;
			import mx.controls.Alert ;
			import flash.display.Graphics ;
			//测试网络可行性
			private var conne:NetConnection = new NetConnection() ;
			private function xianshi():void {
				//必须  在AS3.0中默认的ObjectEncoding为AMF3，但是FMS不支持AMF3，所以
				//要显示的声明为AMF0
				conne.objectEncoding = ObjectEncoding.AMF0 ;
				conne.connect(&quot;rtmp://127.0.0.1/example&quot;) ;
				conne.addEventListener(NetStatusEvent.NET_STATUS,chuli) ;
			}
			
			private var nnnns:NetStream = null ;//专门用来向连接到服务器的客户端提供共享视频流
			private var nnnnns:NetStream = null ;//分支视频流 专门用来录像
			private var time:String = null ;//定义时间寄存器
			private function chuli(e:NetStatusEvent):void {
				var result:String = e.info.code ;
				switch(result) {
					case &quot;NetConnection.Connect.Success&quot;:
                    vd.attachCamera(Camera.getCamera()) ;
					nnnns = new NetStream(conne) ;
					nnnns.attachAudio(Microphone.getMicrophone()) ;
					nnnns.attachCamera(Camera.getCamera()) ;
					//播放server端的视频流(实时视频流，供client端播放)
					nnnns.publish(&quot;wwww&quot;,&quot;live&quot;) ;
					nnnnns = new NetStream(conne) ;
					nnnnns.attachAudio(Microphone.getMicrophone()) ;
					nnnnns.attachCamera(Camera.getCamera()) ;
					time = new Date().getTime().toString() ;
					nnnnns.publish(time,&quot;live&quot;) ;//记录当前时间,以此作为标志位,发布到FMS
					nnnnns.addEventListener(NetStatusEvent.NET_STATUS,netStreamHandler) ;
                    break;
                    case &quot;NetStream.Play.StreamNotFound&quot;:
                    Alert.show(&quot;失败&quot;) ;
                    break;
                    default :
                    Alert.show(&quot;缺省&quot;) ;
                    break ;
				}
			}
			//停止播放
			private function tingzhi():void {
				nnnns.close() ;
				nnnnns.close() ;
				conne.close() ;
			}
			
			private function bofang():void {
				nnnns = new NetStream(conne) ;
				var v:Video = new Video() ;
				v.attachNetStream(nnnns) ;
				v.width = 276 ;
				v.height = 202 ;
				vv.addChild(v) ;
				nnnns.play(&quot;1199001232984&quot;) ;
			}
			private function luxiang():void {
				time = new Date().getTime().toString() ;
				nnnnns.publish(time,&quot;record&quot;) ;
			}
			//停止录像
			private function stopLuxiang():void {
			    nnnnns.close() ;
			}
			//NetStream事件处理器
			private function netStreamHandler(e:NetStatusEvent):void {
				var s:String = e.info.code ;
				switch(s) {//停止录像时，再记录当前时间，并以此为标志位，发不到FMS
					case &quot;NetStream.Record.Stop&quot; :
					nnnnns = new NetStream(conne) ;
					nnnnns.attachAudio(Microphone.getMicrophone()) ;
					nnnnns.attachCamera(Camera.getCamera()) ;
					time = new Date().getTime().toString() ;
					nnnnns.publish(time,&quot;live&quot;) ;
					break ;
				}
			}
			//拍照功能实现
			private function paizhao():void {
				var bmp:BitmapData = new BitmapData(vd.width,vd.height,true,0) ;
				bmp.draw(vd) ;
				var bitMap:Bitmap = new Bitmap(bmp) ;
				image.source = bitMap ;
			}
			
		]]&gt;
	&lt;/mx:Script&gt;
	&lt;mx:VideoDisplay x=&quot;0&quot; y=&quot;0&quot; width=&quot;264&quot; height=&quot;213&quot; id=&quot;vd&quot;/&gt;
	
	&lt;mx:Button label=&quot;连接服务器&quot; click=&quot;xianshi()&quot; x=&quot;10&quot; y=&quot;247&quot;&gt;
	&lt;/mx:Button&gt;
	&lt;mx:Button click=&quot;tingzhi()&quot; x=&quot;99&quot; y=&quot;247&quot; width=&quot;125&quot; height=&quot;21&quot; label=&quot;断开与服务器连接&quot;&gt;
		
	&lt;/mx:Button&gt;
	&lt;mx:VideoDisplay x=&quot;285&quot; y=&quot;11&quot; width=&quot;276&quot; height=&quot;202&quot; id=&quot;vv&quot;/&gt;
	&lt;mx:Button x=&quot;458&quot; y=&quot;247&quot; label=&quot;播放&quot; click=&quot;bofang()&quot;/&gt;
	&lt;mx:Button x=&quot;302&quot; y=&quot;247&quot; label=&quot;开始录像&quot; click=&quot;luxiang()&quot;/&gt;
	&lt;mx:Button x=&quot;380&quot; y=&quot;247&quot; label=&quot;停止录像&quot; click=&quot;stopLuxiang()&quot;/&gt;
	&lt;mx:Button x=&quot;229&quot; y=&quot;247&quot; label=&quot;拍照&quot; click=&quot;paizhao()&quot;/&gt;
	&lt;mx:Image x=&quot;45&quot; y=&quot;314&quot; width=&quot;264&quot; height=&quot;213&quot; id=&quot;image&quot;/&gt;
&lt;/mx:Application&gt;
</pre><p>请大家注意看下，写注释的地方，那些是本篇文章的核心！（因为代码比较多，因此本人大致做了些删改），有什么不明白的可以留言，本人将会为大家解答！</p><p>&nbsp;</p><p>下篇文章就是本视频监控软件最核心的地方----图像识别，至今为止，本人仍在探寻较为高效的算法。哪位兄弟对此方面的图像识别算法有研究，可以共同交流下！</p>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/166125#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Feb 2008 13:56:23 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/166125</link>
        <guid>http://mhqawjh.javaeye.com/blog/166125</guid>
      </item>
      <item>
        <title>视频监控软件(1)---FMS视频流共享</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/155442" style="color:red;">http://mhqawjh.javaeye.com/blog/155442</a>&nbsp;
          发表时间: 2008年01月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>呵呵！临近毕业了，本人选择的毕业设计题目是(基于B/S模式的视频监控软件的设计与实现)，对于这个题目，我打算用Flex+FMS(FlashMediaServer)进行开发，从今天起，本人会不定期的把一些成果拿出来与大家分享，有什么描述不妥的地方还请大家批评指正。</p><p>&nbsp;</p><p>这次要解决的问题是FMS的视频流共享。问题的大概描述是：我们把被监控的一方叫做Server，对Flex熟悉的同学都知道，Flex中的&lt;mx:VideoDisplay&gt;+AS3.0中的Camera.getCamera()组合可以很容易的捕捉摄像头的视频数据并将其显示在&lt;mx:VideoDisplay&gt;中，但是这里有个问题，这里所谓的显示，只是基于本地机器，而捕捉摄像头的动作也只是捕捉本机的摄像头，我们要设计的视频监控软件是B/S模式，假如我们把编译好的swf文件放到WebAppServer下，用户远程访问，将看不到Server端的实时视频，这样至少从实时监控来说，就完全失去了意义！</p><p>&nbsp;</p><p>解决思路：</p><p>创建两个文件，一个文件用来捕捉Server端的视频数据，并将其发布到FMS中，假设这段视频流名为wwww。</p><p>另一个文件用来显示给客户，其所起的作用就是播放Server端口发布到FMS的wwww视频流。</p><p>&nbsp;</p><p>实现步骤：</p><p>1&nbsp; 在FMS_HOME/applications/下建立一个example文件夹，用来做本例的FMS工程实例。</p><p>2&nbsp; 编写&lt;解决思路&gt;中涉及的第一个文件server.mxml</p><pre name="code" class="xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; height=&quot;571&quot;&gt;
	&lt;mx:Script&gt;
		&lt;![CDATA[
			import mx.core.UIComponent;
			import flash.media.Microphone ;
			import mx.controls.Alert ;
			import flash.display.Graphics ;
			//测试网络可行性
			private var conne:NetConnection = new NetConnection() ;
			private function xianshi():void {
				//必须  在AS3.0中默认的ObjectEncoding为AMF3，但是FMS不支持AMF3，所以
				//要显示的声明为AMF0
				conne.objectEncoding = ObjectEncoding.AMF0 ;
				//FMS所在机器的IP地址
				conne.connect(&quot;rtmp://172.30.209.75/example&quot;) ;
				conne.addEventListener(NetStatusEvent.NET_STATUS,chuli) ;
			}
			
			private var nnnns:NetStream = null ;//专门用来向连接到服务器的客户端提供共享视频流
			private var time:String = null ;//定义时间寄存器
			private function chuli(e:NetStatusEvent):void {
				var result:String = e.info.code ;
				switch(result) {
					case &quot;NetConnection.Connect.Success&quot;:
                    vd.attachCamera(Camera.getCamera()) ;
					nnnns = new NetStream(conne) ;
					nnnns.attachAudio(Microphone.getMicrophone()) ;
					nnnns.attachCamera(Camera.getCamera()) ;
					//播放server端的视频流
					nnnns.publish(&quot;wwww&quot;,&quot;live&quot;) ;
                    break;
                    case &quot;NetStream.Play.StreamNotFound&quot;:
                    Alert.show(&quot;失败&quot;) ;
                    break;
                    default :
                    Alert.show(&quot;缺省&quot;) ;
                    break ;
				}
			}
			//停止播放
			private function tingzhi():void {
				nnnns.close() ;
				conne.close() ;
			}
			
		]]&gt;
	&lt;/mx:Script&gt;
	&lt;mx:VideoDisplay x=&quot;0&quot; y=&quot;0&quot; width=&quot;264&quot; height=&quot;213&quot; id=&quot;vd&quot;/&gt;
	
	&lt;mx:Button label=&quot;连接服务器&quot; click=&quot;xianshi()&quot; x=&quot;10&quot; y=&quot;247&quot;&gt;
	&lt;/mx:Button&gt;
	&lt;mx:Button click=&quot;tingzhi()&quot; x=&quot;99&quot; y=&quot;247&quot; width=&quot;125&quot; height=&quot;21&quot; label=&quot;断开与服务器连接&quot;&gt;
		
	&lt;/mx:Button&gt;
	&lt;mx:VideoDisplay x=&quot;285&quot; y=&quot;11&quot; width=&quot;276&quot; height=&quot;202&quot; id=&quot;vv&quot;/&gt;
&lt;/mx:Application&gt;
</pre><p>&nbsp;</p><p>3&nbsp; 编写&lt;解决思路&gt;中涉及的第二个文件client.mxml，此文件显示给用户远程观看</p><pre name="code" class="xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot;&gt;
	&lt;mx:Script&gt;
		&lt;![CDATA[
			import mx.core.UIComponent;
			import flash.media.Microphone ;
			import mx.controls.Alert ;
			//测试网络可行性
			private var conne:NetConnection = new NetConnection() ;
			private function xianshi():void {
				conne.objectEncoding = ObjectEncoding.AMF0 ;
				conne.connect(&quot;rtmp://172.30.209.75/example&quot;) ;
				//网络连接时间处理器
				conne.addEventListener(NetStatusEvent.NET_STATUS,chuli) ;
			}
			
			private var nnnns:NetStream = null ;
			
			private function chuli(e:NetStatusEvent):void {
				var result:String = e.info.code ;
				switch(result) {
					case &quot;NetConnection.Connect.Success&quot;:
					bofang() ;
                    break;
                    case &quot;NetStream.Play.StreamNotFound&quot;:
                    Alert.show(&quot;失败&quot;) ;
                    break;
                    default :
                    Alert.show(&quot;缺省&quot;) ;
                    break ;
				}
			}
			
			private function tingzhi():void {
				nnnns.close() ;
				conne.close() ;
			}
			//网络连接成功时 播放server端发布到FMS的wwww视频流
			private function bofang():void {
				nnnns = new NetStream(conne) ;
				var v:Video = new Video() ;
				v.attachNetStream(nnnns) ;
				v.width = 276 ;
				v.height = 202 ;
				vv.addChild(v) ;
				nnnns.play(&quot;wwww&quot;) ;
			}
		]]&gt;
	&lt;/mx:Script&gt;
	&lt;mx:VideoDisplay x=&quot;0&quot; y=&quot;0&quot; width=&quot;264&quot; height=&quot;213&quot; id=&quot;vd&quot;/&gt;
	
	&lt;mx:Button label=&quot;连接服务器&quot; click=&quot;xianshi()&quot; x=&quot;72&quot; y=&quot;247&quot;&gt;
	&lt;/mx:Button&gt;
	&lt;mx:Button click=&quot;tingzhi()&quot; x=&quot;190&quot; y=&quot;247&quot; width=&quot;123&quot; height=&quot;21&quot; label=&quot;断开与服务器连接&quot;&gt;
		
	&lt;/mx:Button&gt;
	&lt;mx:VideoDisplay x=&quot;285&quot; y=&quot;11&quot; width=&quot;276&quot; height=&quot;202&quot; id=&quot;vv&quot;/&gt;
	
&lt;/mx:Application&gt;
</pre><p>&nbsp;</p><p>&nbsp;</p><p>4&nbsp; 启动FMS，打开编译好的server.swf，先点击按钮：连接服务器</p><p>&nbsp;</p><p>5&nbsp; 把编译好的client.swf拷贝到任何客户端，然后点击按钮：连接服务器，即可以看到server端传送过来的视频流。</p><p>如果想要部署swf文件到WebApplication下，可以把FlexBuilder工程目录下的server.html和client.html拷贝到相应的目录，然后通过URL访问。</p><p>&nbsp;</p><p>好了，关于FMS视频流共享的问题到此为止，各位有何疑问，不妨留言一起探讨！下一次我将解决怎样在不切断server端输出流的情况下进行视频录像。</p>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/155442#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 13 Jan 2008 21:07:19 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/155442</link>
        <guid>http://mhqawjh.javaeye.com/blog/155442</guid>
      </item>
      <item>
        <title>打造自己的天气预报Function----Web版</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/150954" style="color:red;">http://mhqawjh.javaeye.com/blog/150954</a>&nbsp;
          发表时间: 2007年12月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">题外话：<br />
本程序利用网络上发布的公共webservice endpoint</font></p>
<p><font face="Arial"><a href="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx  ">www.webxml.com.cn/WebServices/WeatherWebService.asmx </a></font></p>
<p><font face="Arial"><br />
大致步骤是<br />
1&nbsp; 利用soap向webservice endpoint进行请求，取回请求结果<br />
2&nbsp; 把结果显示在web界面上，web界面采用Java+Jsp（呵呵，有点丑陋，篇幅所迫）<br />
好，废话少说，直接进入核心程序讲解。</font></p>
<p><font face="Arial">一&nbsp; WeatherReport类&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 方法 1&nbsp; 构造soap请求（请求格式请见上面的链接），用用户输入的城市名称镶在此请求里面</font></p>
<font face="Arial">
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">/** </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获取SOAP的请求头，并替换其中的标志符号为用户输入的城市 </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;编写者：王景辉 </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;city </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用户输入的城市名称 </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;客户将要发送给服务器的SOAP请求 </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;String&nbsp;getSoapRequest(String&nbsp;city)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;sb&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StringBuilder(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(</span><span class="string">&quot;&lt;?xml&nbsp;version=\&quot;1.0\&quot;&nbsp;encoding=\&quot;utf-8\&quot;?&gt;&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;</span><span class="string">&quot;&lt;soap:Envelope&nbsp;xmlns:xsi=\&quot;http://www.w3.org/2001/XMLSchema-instance\&quot;&nbsp;&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;</span><span class="string">&quot;xmlns:xsd=\&quot;http://www.w3.org/2001/XMLSchema\&quot;&nbsp;&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;</span><span class="string">&quot;xmlns:soap=\&quot;http://schemas.xmlsoap.org/soap/envelope/\&quot;&gt;&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;</span><span class="string">&quot;&lt;soap:Body&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;getWeatherbyCityName&nbsp;xmlns=\&quot;http://WebXml.com.cn/\&quot;&gt;&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;</span><span class="string">&quot;&lt;theCityName&gt;&quot;</span><span>&nbsp;+&nbsp;city &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;</span><span class="string">&quot;&lt;/theCityName&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/getWeatherbyCityName&gt;&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;</span><span class="string">&quot;&lt;/soap:Body&gt;&lt;/soap:Envelope&gt;&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;sb.toString(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>方法 2&nbsp; 向endpoint发送上述SOAP请求，并设置一些请求属性，返回一个服务器端的InputStream（XML文档流）</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">/** </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;用户把SOAP请求发送给服务器端，并返回服务器点返回的输入流 </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;编写者：王景辉 </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;city </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用户输入的城市名称 </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;服务器端返回的输入流，供客户端读取 </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Exception </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;InputStream&nbsp;getSoapInputStream(String&nbsp;city)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;soap&nbsp;=&nbsp;getSoapRequest(city); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(soap&nbsp;==&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL&nbsp;url&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;URL( &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">&quot;http://www.webxml.com.cn/WebServices/WeatherWebService.asmx&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URLConnection&nbsp;conn&nbsp;=&nbsp;url.openConnection(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setUseCaches(</span><span class="keyword">false</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setDoInput(</span><span class="keyword">true</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setDoOutput(</span><span class="keyword">true</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setRequestProperty(</span><span class="string">&quot;Content-Length&quot;</span><span>,&nbsp;Integer.toString(soap &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.length())); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setRequestProperty(</span><span class="string">&quot;Content-Type&quot;</span><span>,&nbsp;</span><span class="string">&quot;text/xml;&nbsp;charset=utf-8&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setRequestProperty(</span><span class="string">&quot;SOAPAction&quot;</span><span>, &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">&quot;http://WebXml.com.cn/getWeatherbyCityName&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;os&nbsp;=&nbsp;conn.getOutputStream(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStreamWriter&nbsp;osw&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;OutputStreamWriter(os,&nbsp;</span><span class="string">&quot;utf-8&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;osw.write(soap); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;osw.flush(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;osw.close(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;=&nbsp;conn.getInputStream(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;is; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>方法 3&nbsp; 解析方法2返回的XML文档流，并用特定的符号分隔，以便我们在Jsp页面进行结果分析</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">/** </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;对服务器端返回的XML进行解析 </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;编写者：王景辉 </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;city </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用户输入的城市名称 </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;字符串&nbsp;用,分割 </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;String&nbsp;getWeather(String&nbsp;city)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;doc; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilderFactory&nbsp;dbf&nbsp;=&nbsp;DocumentBuilderFactory.newInstance(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbf.setNamespaceAware(</span><span class="keyword">true</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilder&nbsp;db&nbsp;=&nbsp;dbf.newDocumentBuilder(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;=&nbsp;getSoapInputStream(city); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc&nbsp;=&nbsp;db.parse(is); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodeList&nbsp;nl&nbsp;=&nbsp;doc.getElementsByTagName(</span><span class="string">&quot;string&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;sb&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StringBuffer(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">int</span><span>&nbsp;count&nbsp;=&nbsp;</span><span class="number">0</span><span>;&nbsp;count&nbsp;&lt;&nbsp;nl.getLength();&nbsp;count++)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;n&nbsp;=&nbsp;nl.item(count); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(n.getFirstChild().getNodeValue().equals(</span><span class="string">&quot;查询结果为空！&quot;</span><span>))&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StringBuffer(</span><span class="string">&quot;#&quot;</span><span>)&nbsp;; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">break</span><span>&nbsp;; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(n.getFirstChild().getNodeValue()&nbsp;+&nbsp;</span><span class="string">&quot;#\n&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is.close(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;sb.toString(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>二&nbsp;&nbsp; weatherInfo.jsp页面</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 核心功能是解析 方法3 所返回的字符串，向endpoint进行请求时，一个XML文档片段是</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;?</span><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;utf-8&quot;</span><span>&nbsp;</span><span class="tag">?&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">ArrayOfString</span><span>&nbsp;</span><span class="attribute">xmlns:xsi</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span><span>&nbsp;</span><span class="attribute">xmlns:xsd</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/2001/XMLSchema&quot;</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://WebXml.com.cn/&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>湖南</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>长沙</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>57687</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>57687.jpg</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>2007-12-26&nbsp;14:35:26</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>7℃&nbsp;/&nbsp;6℃</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>12月26日&nbsp;小雨</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>西北风</span><span class="tag">&lt;</span><span>=3级</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>7.gif</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>7.gif</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>今日天气实况：多云；7.4℃；风向/风力：西北风2级；空气质量：较差；紫外线强度：最弱</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>穿衣指数：感冒指数：温度较低，较易发生感冒，请适当增加衣服。体质较弱的朋友尤其应该注意防护。晨练指数：早晨天气阴沉，气温极低，请尽量避免户外晨练，若坚持户外晨练请注意保暖防冻。交通指数：中暑指数：温度不高，其他各项气象条件适宜，中暑机率极低。公园指数：天气不好，不适宜放风筝。防晒指数：属弱紫外辐射天气，长期在户外，建议涂擦SPF在8-12之间的防晒护肤品。旅行指数：阴天，缺少阳光的陪伴，加上过低的温度会给出行带来些不便，旅游指数一般，请您在旅游时注意增加衣物。</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>8℃&nbsp;/&nbsp;5℃</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>12月27日&nbsp;小雨</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>西北风</span><span class="tag">&lt;</span><span>=3级</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>7.gif</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>7.gif</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>10℃&nbsp;/&nbsp;4℃</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>12月28日&nbsp;小雨</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>西北风</span><span class="tag">&lt;</span><span>=3级</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>7.gif</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>7.gif</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>长沙市位于湖南省东部偏北,湘江下游和长浏盆地西缘。其地域范围为东经111&deg;53&prime;-114&deg;15&prime;,北纬27&deg;51&prime;-28&deg;41&prime;。东邻江西省宜春地区和萍乡市，南接株洲、湘潭两市，西连娄底、益阳两市，北抵岳阳、益阳两市。东西长约230公里，南北宽约88公里。全市土地面积11819.5平方公里，其中城区面积556平方公里。长沙是一座有2000余年悠久文化历史的古城，早在春秋时期，就是楚国雄踞南方的战略要地之一。汉朝的刘邦立国之后，于公元前206年改临江为长沙，并设立汉朝的属国----长沙国，自此之后，长沙开始筑建城墙，并逐渐成为兵家必争之地。长沙属亚热带季风性湿润气候。气候特征是：气候温和，降水充沛，雨热同期，四季分明。长沙市区年平均气温17.2℃，各县16.8℃-17.3℃，年积温为5457℃，市区年均降水量1361.6毫米。景观：岳麓山、桔子洲、天心阁、烈士公园、月亮岛等。</span><span class="tag">&lt;/</span><span class="tag-name">string</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;/</span><span class="tag-name">ArrayOfString</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>在Jsp中解析的代码如下，基本上是对字符串的操作，截取及截取长度的控制</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">//穿衣指数 </span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s1&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;穿衣指数：&quot;</span><span>),str.indexOf(</span><span class="string">&quot;穿衣指数：&quot;</span><span>)+</span><span class="number">4</span><span>)&nbsp;; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s1Content&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;穿衣指数：&quot;</span><span>)+</span><span class="number">5</span><span>,str.indexOf(</span><span class="string">&quot;感冒指数：&quot;</span><span>))&nbsp;; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//感冒指数 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s2&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;感冒指数：&quot;</span><span>),str.indexOf(</span><span class="string">&quot;感冒指数：&quot;</span><span>)+</span><span class="number">4</span><span>)&nbsp;; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s2Content&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;感冒指数：&quot;</span><span>)+</span><span class="number">5</span><span>,str.indexOf(</span><span class="string">&quot;晨练指数：&quot;</span><span>))&nbsp;; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//晨练指数 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s3&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;晨练指数：&quot;</span><span>),str.indexOf(</span><span class="string">&quot;晨练指数：&quot;</span><span>)+</span><span class="number">4</span><span>)&nbsp;; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s3Content&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;晨练指数：&quot;</span><span>)+</span><span class="number">5</span><span>,str.indexOf(</span><span class="string">&quot;交通指数：&quot;</span><span>))&nbsp;; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//交通指数 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s7&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;交通指数：&quot;</span><span>),str.indexOf(</span><span class="string">&quot;交通指数：&quot;</span><span>)+</span><span class="number">4</span><span>)&nbsp;; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s7Content&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;交通指数：&quot;</span><span>)+</span><span class="number">5</span><span>,str.indexOf(</span><span class="string">&quot;中暑指数：&quot;</span><span>))&nbsp;; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//中暑指数 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s4&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;中暑指数：&quot;</span><span>),str.indexOf(</span><span class="string">&quot;中暑指数：&quot;</span><span>)+</span><span class="number">4</span><span>)&nbsp;; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s4Content&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;中暑指数：&quot;</span><span>)+</span><span class="number">5</span><span>,str.indexOf(</span><span class="string">&quot;防晒指数：&quot;</span><span>))&nbsp;; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//防晒指数 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s5&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;防晒指数：&quot;</span><span>),str.indexOf(</span><span class="string">&quot;防晒指数：&quot;</span><span>)+</span><span class="number">4</span><span>)&nbsp;; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s5Content&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;防晒指数：&quot;</span><span>)+</span><span class="number">5</span><span>,str.indexOf(</span><span class="string">&quot;旅行指数：&quot;</span><span>))&nbsp;; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//旅行指数 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s6&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;旅行指数：&quot;</span><span>),str.indexOf(</span><span class="string">&quot;旅行指数：&quot;</span><span>)+</span><span class="number">4</span><span>)&nbsp;; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s6Content&nbsp;=&nbsp;str.substring(str.indexOf(</span><span class="string">&quot;旅行指数：&quot;</span><span>)+</span><span class="number">5</span><span>)&nbsp;;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>程序运行效果见附件上的截图！！！运行附件：<a href="http://localhost:8080/yourProject/tianqi.jsp">http://localhost:8080/yourProject/tianqi.jsp</a></p>
<p>好了，基本上核心代码就是上边那些了！不仅如此，加入我们想要在自己的系统里加入飞机票，火车票，股票信息等等之类的功能，只要有相应的webservice，我们都可以实现（呵呵，好像免费的少哦），各位有什么疑问，留言吧！！！</p>
</font>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/150954#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 26 Dec 2007 14:58:13 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/150954</link>
        <guid>http://mhqawjh.javaeye.com/blog/150954</guid>
      </item>
      <item>
        <title>调用非本机WebService时传入自定义对象参数的解决方案</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/138664" style="color:red;">http://mhqawjh.javaeye.com/blog/138664</a>&nbsp;
          发表时间: 2007年11月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>问题描述：</p>
<p>由于业务需要，我们在服务器A上发布了一些WebService供开发人员调用，其中一个WebService有一个方法是以自定义对象为方法参数的，当我们在客户机调用此方法时，报出了No serializabler for class 之类的错误，大致的意思是不能为本机类找到序列化器，这个本机类是我在客户机上编写的一个类，用来和服务器上的类相对应，其中属性方法全部一致。</p>
<p>解决方案：</p>
<p>1&nbsp;&nbsp; 在服务器上的server-config.wsdd中的相应service（你要进行调用的service）添加一个&lt;beanMapping&gt;元素，就像下面这样：</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">service</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;Hzwh&quot;</span><span>&nbsp;</span><span class="attribute">provider</span><span>=</span><span class="attribute-value">&quot;java:RPC&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">parameter</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;methodName&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;*&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">parameter</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;className&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;shout.xtgl.Hzwh&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">beanMapping</span><span>&nbsp;</span><span class="attribute">languageSpecificType</span><span>=</span><span class="attribute-value">&quot;java:shout.pub.PubRtn&quot;</span><span>&nbsp;</span><span class="attribute">qname</span><span>=</span><span class="attribute-value">&quot;ns1:PubRtn&quot;</span><span>&nbsp;</span><span class="attribute">xmlns:ns1</span><span>=</span><span class="attribute-value">&quot;urn:BeanService&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">beanMapping</span><span>&nbsp;</span><span class="attribute">languageSpecificType</span><span>=</span><span class="attribute-value">&quot;java:shout.pub.PubArg&quot;</span><span>&nbsp;</span><span class="attribute">qname</span><span>=</span><span class="attribute-value">&quot;ns2:PubArg&quot;</span><span>&nbsp;</span><span class="attribute">xmlns:ns2</span><span>=</span><span class="attribute-value">&quot;urn:BeanService&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">beanMapping</span><span>&nbsp;</span><span class="attribute">languageSpecificType</span><span>=</span><span class="attribute-value">&quot;java:shout.db.CoHzml&quot;</span><span>&nbsp;</span><span class="attribute">qname</span><span>=</span><span class="attribute-value">&quot;ns3:CoHzml&quot;</span><span>&nbsp;</span><span class="attribute">xmlns:ns3</span><span>=</span><span class="attribute-value">&quot;urn:BeanService&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span>&nbsp;/service</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>2&nbsp; 在客户机上注册本机上的类与服务器上的WebService提供类提供关联。我是在jsp代码里调用WebService的，所以看起来就像这样：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //要调用的WebService&nbsp;URL地址 </span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;endpoint&nbsp;=&nbsp;</span><span class="string">&quot;http://yan:8088/server/axis/Hzwh?wsdl&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Service&nbsp;service&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Service(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Call&nbsp;call&nbsp;=&nbsp;(Call)&nbsp;service.createCall(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//参数1对应&lt;beanMapping&gt;的xmlns:ns属性，参数2对应&lt;beanMapping&gt;的qname属性 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QName&nbsp;name&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;QName(</span><span class="string">&quot;urn:BeanService&quot;</span><span>,&nbsp;</span><span class="string">&quot;CoHzml&quot;</span><span>);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#339966">//CoHzml是本机上的类，注册本机类，使其与服务提供类对应起来</font>&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call.registerTypeMapping(CoHzml.</span><span class="keyword">class</span><span>,&nbsp;name, &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">new</span><span>&nbsp;BeanSerializerFactory(CoHzml.</span><span class="keyword">class</span><span>,&nbsp;name), &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">new</span><span>&nbsp;BeanDeserializerFactory(CoHzml.</span><span class="keyword">class</span><span>,&nbsp;name)); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call.setTargetEndpointAddress(</span><span class="keyword">new</span><span>&nbsp;java.net.URL(endpoint)); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//填写你要调用的方法名称&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call.setOperationName(</span><span class="string">&quot;add&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//CoHzml是自定义的与服务提供类相对应的类 </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CoHzml&nbsp;hzml&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;CoHzml(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hzml.ascm&nbsp;=&nbsp;</span><span class="string">&quot;1&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hzml.hz&nbsp;=&nbsp;</span><span class="string">&quot;我&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hzml.id&nbsp;=&nbsp;</span><span class="number">6</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hzml.pym&nbsp;=&nbsp;</span><span class="string">&quot;w&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hzml.wbm&nbsp;=&nbsp;</span><span class="string">&quot;2&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//传入参数 </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str&nbsp;=&nbsp;(String)&nbsp;call.invoke(</span><span class="keyword">new</span><span>&nbsp;Object[]&nbsp;{&nbsp;hzml&nbsp;}); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(str);&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>3&nbsp; 如果返回的也是自定义对象，那么方法大同小异。只不过在第2步的Java代码21行中返回客户机与服务提供类相对应的类。</p>
<p>有什么疑问的欢迎大家留言。。。。</p>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/138664#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 07 Nov 2007 08:19:25 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/138664</link>
        <guid>http://mhqawjh.javaeye.com/blog/138664</guid>
      </item>
      <item>
        <title>使用自己发布的WebService与Flex通信</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/137820" style="color:red;">http://mhqawjh.javaeye.com/blog/137820</a>&nbsp;
          发表时间: 2007年11月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>前几天发了个Flex利用HttpService和XML与后台的Servlet通信的例子，今天再给大家展示下本人近几天的学习成果－－－－发布一个WebService，并利用其做为Flex与Java通信的桥梁。最后，我会给出在做这个例子时遇到的一些困难和解决方案。希望对大家有些帮助！</p>
<p><font size="4">The First Step：</font></p>
<p><font size="2">利用Apache的AXIS引擎发布WebService。（本文假设您已经下载了AXIS）</font></p>
<p><font size="2">1 利用MyEclipse新建一个Web工程，把AXIS_HOME/webapps/axis/web-inf下的web.xml和lib目录拷贝到你所建的工程的相应目录。</font></p>
<p><font size="2">2 创建一个Web服务的提供类，这里展示下我创建的类。</font></p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">/** </span>&nbsp;</span> </li>
    <li class=""><span><span class="comment">&nbsp;*&nbsp;Web服务提供类 </span>&nbsp;</span> </li>
    <li class="alt"><span><span class="comment">&nbsp;*&nbsp; </span>&nbsp;</span> </li>
    <li class=""><span><span class="comment">&nbsp;*&nbsp;编写者：王景辉&nbsp;湖南农业大学&amp;湖南爱瑞洁投资管理公司 </span>&nbsp;</span> </li>
    <li class="alt"><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="keyword">package</span><span>&nbsp;com.wjh; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.util.HashMap; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;WebServiceClass&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;HashMap&nbsp;data&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;HashMap()&nbsp;; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;init()&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.put(</span><span class="string">&quot;百度&quot;</span><span>,&nbsp;</span><span class="string">&quot;李彦宏&quot;</span><span>)&nbsp;; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.put(</span><span class="string">&quot;腾讯&quot;</span><span>,&nbsp;</span><span class="string">&quot;马化腾&quot;</span><span>)&nbsp;; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.put(</span><span class="string">&quot;网易&quot;</span><span>,&nbsp;</span><span class="string">&quot;丁磊&quot;</span><span>)&nbsp;; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;get(String&nbsp;key)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init()&nbsp;; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;data.get(key)&nbsp;; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;put(String&nbsp;key,String&nbsp;value)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.put(key,&nbsp;value)&nbsp;; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>} &nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p>然后把此类编译。</p>
<p>3 把此工程部署到Tomcat，然后转到Tomcat_HOME/webapps/你的工程/web-inf下面，建立一个wsdd文件，本例创建的文件名称为dep.wsdd。</p>
<div class="code_title">
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">deployment</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://xml.apache.org/axis/wsdd/&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xmlns:java</span><span>=</span><span class="attribute-value">&quot;http://xml.apache.org/axis/wsdd/providers/java&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">service</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;wjhService&quot;</span><span>&nbsp;</span><span class="attribute">provider</span><span>=</span><span class="attribute-value">&quot;java:RPC&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">parameter</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;className&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;com.wjh.WebServiceClass&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">parameter</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;allowedMethods&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;*&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">service</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">deployment</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
</div>
<p>&nbsp;</p>
<p>注意，这里面的className值和上面所建的类的包名一致，其中service的name取值任意，代表的在当前Web应用服务器唯一的WebService标识。</p>
<p>4 运用AXIS的AdminClient工具生成server-config.wsdd文件，即服务器端WebService的声明（行使到这一步，本文假设你已经正确的把AXIS的必须jar文件和其依赖库设置到了classpath，具体设置方式看看JavaEye的AXIS－<font face="Arial"><a href="http://www.javaeye.com/subject/Axis-Webservice"><font face="Arial">http://www.javaeye.com/subject/Axis-Webservice</font></a>打开命令行窗口，进入dep.wsdd文件所在的目录，运行java org.apache.axis.client.AdminClient&nbsp; undeploy.wsdd，如果出现<span><span class="tag">&lt;</span><span class="tag-name">Admin</span><span class="tag">&gt;</span><span>Done&nbsp;processing则表明发布成功。</span></span></font></p>
<p><font face="Arial"><span><span>5 在FlexBuilder2中画出Flex界面，本例的界面代码如下：</span></span></font></p>
<font face="Arial"><span><span>
<div class="code_title"><span><span class="tag"><span class="tag"><span class="tag"><span class="cdata"><span class="tag"><span class="tag"><span class="tag">
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag"><!--sp--><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;utf-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span> </span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">mx:Application</span><span>&nbsp;</span><span class="attribute">xmlns:mx</span><span>=</span><span class="attribute-value">&quot;http://www.adobe.com/2006/mxml&quot;</span><span>&nbsp;</span><span class="attribute">layout</span><span>=</span><span class="attribute-value">&quot;absolute&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:WebService</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ws&quot;</span><span>&nbsp;</span><span class="attribute">wsdl</span><span>=</span><span class="attribute-value">&quot;http://localhost:8080/ws/services/wjhService?wsdl&quot;</span><span>&nbsp;</span><span class="attribute">useProxy</span><span>=</span><span class="attribute-value">&quot;false&quot;</span><span>&nbsp;</span><span class="attribute">showBusyCursor</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:operation</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;put&quot;</span><span>&nbsp;</span><span class="attribute">result</span><span>=</span><span class="attribute-value">&quot;Alert.show('恭喜！添加成功','返回框',3)&quot;</span><span>&nbsp;</span><span class="attribute">fault</span><span>=</span><span class="attribute-value">&quot;Alert.show('添加失败','失败',3)&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">mx:operation</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:operation</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;get&quot;</span><span>&nbsp;</span><span class="attribute">result</span><span>=</span><span class="attribute-value">&quot;showInfo(event)&quot;</span><span>&nbsp;</span><span class="attribute">fault</span><span>=</span><span class="attribute-value">&quot;Alert.show('失败','tile',2)&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag"><span class="tag-name">mx:operation</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span> </span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag"><span class="tag-name">mx:WebService</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class="alt"><span class="tag"><span>&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="cdata"><span class="tag"><span>&nbsp;</span> </span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:Panel</span><span>&nbsp;</span><span class="attribute">title</span><span>=</span><span class="attribute-value">&quot;DataGrid&nbsp;Control&nbsp;Example&quot;</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">&quot;100%&quot;</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">&quot;100%&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">paddingTop</span><span>=</span><span class="attribute-value">&quot;10&quot;</span><span>&nbsp;</span><span class="attribute">paddingLeft</span><span>=</span><span class="attribute-value">&quot;10&quot;</span><span>&nbsp;</span><span class="attribute">paddingRight</span><span>=</span><span class="attribute-value">&quot;10&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:Label</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">&quot;10&quot;</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">&quot;10&quot;</span><span>&nbsp;</span><span class="attribute">text</span><span>=</span><span class="attribute-value">&quot;公司&quot;</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">&quot;39&quot;</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">&quot;55&quot;</span><span>&nbsp;</span><span class="attribute">fontSize</span><span>=</span><span class="attribute-value">&quot;21&quot;</span><span>&nbsp;</span><span class="attribute">fontWeight</span><span>=</span><span class="attribute-value">&quot;bold&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:TextInput</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">&quot;61&quot;</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">&quot;10&quot;</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">&quot;31&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;company&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:Label</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">&quot;10&quot;</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">&quot;66&quot;</span><span>&nbsp;</span><span class="attribute">text</span><span>=</span><span class="attribute-value">&quot;老大&quot;</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">&quot;55&quot;</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">&quot;49&quot;</span><span>&nbsp;</span><span class="attribute">fontSize</span><span>=</span><span class="attribute-value">&quot;21&quot;</span><span>&nbsp;</span><span class="attribute">fontWeight</span><span>=</span><span class="attribute-value">&quot;bold&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:TextInput</span><span>&nbsp;</span><span class="attribute">x</span><span>=</span><span class="attribute-value">&quot;61&quot;</span><span>&nbsp;</span><span class="attribute">y</span><span>=</span><span class="attribute-value">&quot;75&quot;</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">&quot;31&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;ceo&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:Button</span><span>&nbsp;</span><span class="attribute">label</span><span>=</span><span class="attribute-value">&quot;添加&quot;</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">&quot;37&quot;</span><span>&nbsp;</span><span class="attribute">fontSize</span><span>=</span><span class="attribute-value">&quot;17&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;add&quot;</span><span>&nbsp;</span><span class="attribute">click</span><span>=</span><span class="attribute-value">&quot;addCompany();&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:Button</span><span>&nbsp;&nbsp;</span><span class="attribute">label</span><span>=</span><span class="attribute-value">&quot;查看&quot;</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">&quot;29&quot;</span><span>&nbsp;</span><span class="attribute">fontSize</span><span>=</span><span class="attribute-value">&quot;17&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;see&quot;</span><span>&nbsp;</span><span class="attribute">click</span><span>=</span><span class="attribute-value">&quot;seeCeo();&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">mx:Panel</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name"><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
</ol>
</div>
&nbsp;</span></span></span></span></span></span></span></span></div>
<p>上面代码的<mx:webservice>标签的wsdl属性是我们前面发布的WebService。</mx:webservice></p>
<p>大致的流程是这个样子的：添加个功能基本上没有什么作用（具体原因我会在后面阐述），主要是查看功能，因为我们前面的服务提供类定义了一个HashMap，并存储了一些数值，所以当我们输入键值时，服务期会返回相应的value。</p>
<p>6 打完收工，尽情的享受WebService吧！！！</p>
<p><font size="4">Important：</font></p>
<p><font size="2">这个例子虽然简单，但是确遇到了很多问题。</font></p>
<p><font size="2">1&nbsp; 问题描述：生成server-config.wsdd文件时，AdminClient不会报错，也出现发布成功的信号，但是web-inf下就是没有server-config.wsdd文件生成。</font></p>
<p><font size="2">&nbsp;&nbsp; 解决方案：Tomcat版本过低，更换Tomcat版本，最好是Tomcat5.5及以上版本。我的是5.0就出现了此问题。</font></p>
<p><font size="2">2&nbsp; 问题描述：Flex在运行时一篇深绿色，自己写上去的组件全部&ldquo;潜水&rdquo;，消失了！这个问题是最诡异的。</font></p>
<p><font size="2">&nbsp;&nbsp;&nbsp; 解决方案：本人一行一行代码的测，结果终于解决了这个问题。但是我不敢确定是不是这里的问题。我在自己的<mx:script>标签里面写下了这么两句话public var s1:String=company.text; public var s2:String=ceo.text;结果界面就如问题描述一样，当我把这两句话去掉以后，界面就显示正常。是不是Flex里不允许把文本框之类组件的值直接赋刚定义的变量呢？？？哪位兄弟可以解开我这个疑问？？？</mx:script></font></p>
<p><font size="2">3&nbsp; 大家看到我的服务提供类里面的get方法体第一句话是init方法的调用，刚开始写的时候我是直接return的，但是这样做时，当我点击界面的查看按钮时，Flex不会报错，但也没有任何值返回来，于是我先进行添加再进行查看，也没有任何效果，最后我把init方法调用放在了get的方法体，这样才能成功。</font></p>
<p><font size="2">在此我有个疑问：是不是Flex在调用后台Web服务提供类的时候，是不是每次请求都要进行一次类的实例化？但是我自己都不太相信这个假想，假如不是这样，那我遇到的问题又怎么解释呢？欢迎道友给出见解！！！</font></p>
<p><font size="2">附件是本例的源代码！！！</font></p>
</span></span></font>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/137820#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 03 Nov 2007 21:56:43 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/137820</link>
        <guid>http://mhqawjh.javaeye.com/blog/137820</guid>
      </item>
      <item>
        <title>Flex与Java Servlet交互实例</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/136711" style="color:red;">http://mhqawjh.javaeye.com/blog/136711</a>&nbsp;
          发表时间: 2007年10月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>自从呼叫中心项目开始，不知不觉，学习Flex已经十天有余了！现在已经基本进入状态，今天本人在此班门弄斧，发一个利用Flex与后台的Servlet进行通讯的例子，希望对一些刚学习Flex的新手有所帮助。为了搞清楚Flex是如何与后台进行通讯，本人在刚开始学Flex前五天可以说是碌碌无为，今天发这个帖子的目的就是为了让后面的兄弟少走弯路。</p>
<p>交互原理：三个字母---------XML，客户端接受从服务器端发送过来的XML数据。</p>
<p>本例工作流程：客户端很简单就一个DataGrid组件，用来显示服务器端传送过来的数据。对应的mxml文件如下：</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;?</span><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;UTF-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">mx:Application</span><span>&nbsp;</span><span class="attribute">xmlns:mx</span><span>=</span><span class="attribute-value">&quot;http://www.adobe.com/2006/mxml&quot;</span><span>&nbsp;</span><span class="attribute">layout</span><span>=</span><span class="attribute-value">&quot;absolute&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:Model</span><span>&nbsp;</span><span class="attribute">source</span><span>=</span><span class="attribute-value">&quot;http://localhost:8080/flex/first&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;model&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">mx:Model</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:Panel</span><span>&nbsp;</span><span class="attribute">title</span><span>=</span><span class="attribute-value">&quot;用户信息&quot;</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">&quot;776&quot;</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">&quot;281&quot;</span><span>&nbsp;</span><span class="attribute">fontSize</span><span>=</span><span class="attribute-value">&quot;18&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:DataGrid</span><span>&nbsp;</span><span class="attribute">dataProvider</span><span>=</span><span class="attribute-value">&quot;{model.user}&quot;</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">&quot;748&quot;</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">&quot;231&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:columns</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:DataGridColumn</span><span>&nbsp;</span><span class="attribute">dataField</span><span>=</span><span class="attribute-value">&quot;name&quot;</span><span>&nbsp;</span><span class="attribute">headerText</span><span>=</span><span class="attribute-value">&quot;用户&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">mx:DataGridColumn</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:DataGridColumn</span><span>&nbsp;</span><span class="attribute">dataField</span><span>=</span><span class="attribute-value">&quot;pwd&quot;</span><span>&nbsp;</span><span class="attribute">headerText</span><span>=</span><span class="attribute-value">&quot;密码&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">mx:DataGridColumn</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mx:DataGridColumn</span><span>&nbsp;</span><span class="attribute">dataField</span><span>=</span><span class="attribute-value">&quot;school&quot;</span><span>&nbsp;</span><span class="attribute">headerText</span><span>=</span><span class="attribute-value">&quot;现在学校&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">mx:DataGridColumn</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">mx:columns</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">mx:DataGrid</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">mx:Panel</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;/</span><span class="tag-name">mx:Application</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>在此需要注意&lt;mx:Model&gt;标签，source属性指定的是一个servlet映射，这个servlet的作用是利用response向客户端写入XML。</p>
<p>读取数据库数据，生成XML文件由两个类组成，一个为FirstServlet.java，一个为XML.java，其中前者就是一个普通的servlet，用来写XML文件，后者专门用来生成XML文件，由Java XML API操作完成。废话少说，先看看代码</p>
<p>FirstServlet代码摘要：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">try</span><span>&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xml.init()&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(</span><span class="string">&quot;com.microsoft.jdbc.sqlserver.SQLServerDriver&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//*********建立数据库&nbsp;名为flex*************//&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;url&nbsp;=&nbsp;</span><span class="string">&quot;jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=flex&quot;</span><span>&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//**********换上你自己的用户名和密码信息************//&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con&nbsp;=&nbsp;DriverManager.getConnection(url,&nbsp;</span><span class="string">&quot;sa&quot;</span><span>,&nbsp;</span><span class="string">&quot;135780&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt&nbsp;=&nbsp;con.createStatement()&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//**********里面建表名为USERS&nbsp;&nbsp;具体SQL语句见附件下载**********//&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;stmt.executeQuery(</span><span class="string">&quot;select&nbsp;*&nbsp;from&nbsp;USERS&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>(Exception&nbsp;e)&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace()&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//重要：设置响应格式为XML格式&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(</span><span class="string">&quot;text/xml&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setCharacterEncoding(</span><span class="string">&quot;UTF-8&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintWriter&nbsp;out&nbsp;=&nbsp;response.getWriter()&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>以上为servlet连接数据库并设置响应格式的代码，下面是写XML文件的关键代码：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">while</span><span>(result.next())&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;strs&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;String[</span><span class="number">3</span><span>]&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strs[</span><span class="number">0</span><span>]&nbsp;=&nbsp;result.getString(</span><span class="string">&quot;name&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strs[</span><span class="number">1</span><span>]&nbsp;=&nbsp;result.getString(</span><span class="string">&quot;pwd&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strs[</span><span class="number">2</span><span>]&nbsp;=&nbsp;result.getString(</span><span class="string">&quot;school&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//*****创建XMLdocument*******//&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xml.create(strs)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.close()&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close()&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con.close()&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//*******写XML文件到客户端********//&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xml.output(out)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>其中末行的xml是XML.java的一个实例，XML的一些重要方法如下：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">/**&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;把XML文档写入到输出流&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;out&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----指定的输出流&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@throws&nbsp;Exception&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;编写者：王景辉&nbsp;湖南农业大学&amp;湖南爱瑞洁投资管理公司&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;output(Writer&nbsp;writer)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transformer&nbsp;trans&nbsp;=&nbsp;TransformerFactory.newInstance().newTransformer()&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans.setOutputProperty(OutputKeys.ENCODING,&nbsp;</span><span class="string">&quot;UTF-8&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Source&nbsp;source&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DOMSource(document)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;result&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StreamResult(writer)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans.transform(source,&nbsp;result)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.flush()&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.close()&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">/**&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;创建XML文档&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;&nbsp;strs&nbsp;&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------传送过来的姓名和密码和学校参数&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;编写者：王景辉&nbsp;湖南农业大学&amp;湖南爱瑞洁投资管理公司&nbsp;&nbsp; </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;create(String[]&nbsp;strs)&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//******第一级子节点******//&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;first&nbsp;=&nbsp;document.createElement(</span><span class="string">&quot;user&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root.appendChild(first)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;&nbsp;i&lt;strs.length;&nbsp;i++)&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(i==</span><span class="number">0</span><span>)&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//*******第二级子节点******//&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;name&nbsp;=&nbsp;document.createElement(</span><span class="string">&quot;name&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name.appendChild(document.createTextNode(strs[i]))&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;first.appendChild(name)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">if</span><span>(i==</span><span class="number">1</span><span>)&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;pwd&nbsp;=&nbsp;document.createElement(</span><span class="string">&quot;pwd&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pwd.appendChild(document.createTextNode(strs[i]))&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;first.appendChild(pwd)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">if</span><span>(i==</span><span class="number">2</span><span>)&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;school&nbsp;=&nbsp;document.createElement(</span><span class="string">&quot;school&quot;</span><span>)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;school.appendChild(document.createTextNode(strs[i]))&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;first.appendChild(school)&nbsp;;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>代码很乱？找不到头绪？没有关系，我会把源代码把放到附件里供大家下载。</p>
<p>其实说到底，这个例子没有什么神秘的，只要记住，XML是Flex与后台进行数据交换的媒介，无论后台数据怎么千变万化，出口就有这一个。如果试验，可以先从简单开始，不涉及查询数据库，直接在servlet写出XML。</p>
<p>如果大家还有什么疑问，欢迎留言，我也是初学者，让我们共同进步。。。</p>
<p>程序运行方法：</p>
<p>STEP1:&nbsp; 在SQLServer2000里建一个数据库flex，然后在查询分析器导入附件所带的SQL语句.sql，生成所需表格</p>
<p>STEP2:&nbsp; 把FlexDataService安装目录下的flex.war解压到（比如说D:\a）,然后把D:\a\web-inf下的flex整个目录拷贝到WEB程序的WEB-INF下，把D:\a\web-inf\lib目录下的jar包拷贝到对应WEB程序下的lib目录下。</p>
<p>STEP4:&nbsp; 拷贝工程文件到你所建的MyEclipse工程</p>
<p>因为Flex与Java进行通信涉及到的文件会非常多，如果你以前会部署，那再好不过。一般情况下，根据上述步骤能部署成功。如果部署出现了什么问题，或者不明白的告知本人，本人会以最快的速度为大家解答。<br />
</p>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/136711#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 30 Oct 2007 13:48:28 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/136711</link>
        <guid>http://mhqawjh.javaeye.com/blog/136711</guid>
      </item>
      <item>
        <title>使用Java获得汉字的全拼与简拼</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/135806" style="color:red;">http://mhqawjh.javaeye.com/blog/135806</a>&nbsp;
          发表时间: 2007年10月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这是一个获得汉字的全拼与简拼程序的Java版。</p>
<p>例如：输入《王景辉》，如果调用全拼方法，则结果为wangjinghui，如果调用简拼方法则结果为wjh。</p>
<p>因为本人所做的项目需要这么一个功能，就从网上下载了个框架代码，然后做了一些修改，应该大多数的汉字都可以识别。</p>
<p>但是有一点小问题：在调用全拼方法时候，如果给定字符串大于三个，会有一点小问题，如果有哪位兄弟知道解决办法，请告</p>
<p>本人，在下不胜感激。</p>
<p>下面的附件是此类的API文档和源代码。</p>
<p>注意：此类的第一句话为&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; package test;</p>
          <br/>
          <span style="color:red;">
            <a href="http://mhqawjh.javaeye.com/blog/135806#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 26 Oct 2007 19:12:22 +0800</pubDate>
        <link>http://mhqawjh.javaeye.com/blog/135806</link>
        <guid>http://mhqawjh.javaeye.com/blog/135806</guid>
      </item>
      <item>
        <title>Java即时聊天</title>
        <author>mhqawjh</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mhqawjh.javaeye.com">mhqawjh</a>&nbsp;
          链接：<a href="http://mhqawjh.javaeye.com/blog/132790" style="color:red;">http://mhqawjh.javaeye.com/blog/132790</a>&nbsp;
          发表时间: 2007年10月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这个是本人利用Java写的一个即时聊天的小程序，已经实现了即时通讯，对方输入状态显示等功能，但还是有一些例