<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feedsky.blogbus.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><link atom:type="text/html">http://ejb3.blogbus.com/</link><fs:self_link href="http://feeds.feedsky.com/blogbus.com/ejb3_blogbus_com" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 13 Nov 2009 14:56:08 GMT</lastBuildDate><title>二进制</title><description>The Java platform pursue step</description><atom:link href="http://feedsky.blogbus.com/ejb3_blogbus_com" type="application/rss+xml" rel="self"></atom:link><generator xmlns="http://www.w3.org/2005/Atom" uri="http://www.blogbus.com/">博客大巴</generator><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/atom.xml</id><link xmlns="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://ejb3.blogbus.com/atom.xml"></link><pubDate>Fri, 13 Nov 2009 14:56:08 GMT</pubDate><image><title>二进制</title><url>http://public.blogbus.com/profile/head.gif</url><link>http://ejb3.blogbus.com/</link></image><item><title>eclipse创建WebServices</title><link atom:type="text/html">http://ejb3.blogbus.com/logs/51280435.html</link><author xmlns="http://www.w3.org/2005/Atom"></author><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/logs/51280435.html</id><description>&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: '楷体_GB2312',sans-serif;&quot;&gt;新建一个Dynamic Web Project&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/968.gif&quot; alt=&quot;&quot; width=&quot;496&quot; height=&quot;482&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/969.gif&quot; alt=&quot;&quot; width=&quot;618&quot; height=&quot;517&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/970.gif&quot; alt=&quot;&quot; width=&quot;559&quot; height=&quot;516&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: '楷体_GB2312',sans-serif;&quot;&gt;创建一个普通Java类&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/971.gif&quot; alt=&quot;&quot; width=&quot;671&quot; height=&quot;200&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/972.gif&quot; alt=&quot;&quot; width=&quot;615&quot; height=&quot;803&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/973.gif&quot; alt=&quot;&quot; width=&quot;682&quot; height=&quot;674&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: '楷体_GB2312',sans-serif;&quot;&gt;接下去按Finish就创建好了&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;!--sp--&gt;&lt;div class=&quot;relpost&quot;&gt;&lt;br/&gt;&lt;h3&gt;随机文章：&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;/logs/23417409.html&quot;&gt;Struts 2 结果(Result)&lt;/a&gt; 2008年06月22日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/23070156.html&quot;&gt;Google Web Toolkit&lt;/a&gt; 2008年06月17日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/22922214.html&quot;&gt;Struts 2 类型转换&lt;/a&gt; 2008年06月14日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/22794489.html&quot;&gt;Struts 2中的拦截器(Interceptor)&lt;/a&gt; 2008年06月12日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/20115939.html&quot;&gt;Struts与MVC（一）&lt;/a&gt; 2008年05月02日&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;sysmsg&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogbus.com&quot; target=&quot;_blank&quot;&gt;博客大巴，你的个人传媒早班车&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;addfav&quot;&gt;收藏到：&lt;span class= &quot;delicious&quot;&gt;&lt;a href=&quot;http://delicious.com/save?url=http%3A%2F%2Fejb3.blogbus.com%2Flogs%2F51280435.html&amp;title=eclipse%E5%88%9B%E5%BB%BAWebServices&quot;&gt;Del.icio.us&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/296324725/ejb3_blogbus_com/blogbus.com/s.gif?r=http://ejb3.blogbus.com/logs/51280435.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/blogbus.com/ejb3_blogbus_com/296324725/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/blogbus.com/ejb3_blogbus_com/296324725/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://ejb3.blogbus.com/c/">未分类</category><pubDate>Fri, 13 Nov 2009 22:50:36 +0800</pubDate><guid isPermaLink="false">http://ejb3.blogbus.com/logs/51280435.html</guid><fs:srclink>http://ejb3.blogbus.com/logs/51280435.html</fs:srclink><fs:srcfeed>http://ejb3.blogbus.com/atom.xml</fs:srcfeed><fs:itemid>blogbus.com/ejb3_blogbus_com/~7025723/296324725/5133694</fs:itemid></item><item><title>360杀毒</title><link atom:type="text/html">http://ejb3.blogbus.com/logs/51278341.html</link><author xmlns="http://www.w3.org/2005/Atom"></author><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/logs/51278341.html</id><description>&lt;p&gt;免费的杀毒软件，支持一下&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/967.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;!--sp--&gt;&lt;div class=&quot;relpost&quot;&gt;&lt;br/&gt;&lt;h3&gt;随机文章：&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;/logs/31941552.html&quot;&gt;Adobe Photoshop CS4&lt;/a&gt; 2008年11月29日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/29929830.html&quot;&gt;Open Office&lt;/a&gt; 2008年10月05日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/28583998.html&quot;&gt;谷歌浏览器Chrome&lt;/a&gt; 2008年09月06日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/20808078.html&quot;&gt;分页&lt;/a&gt; 2008年05月13日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/19960185.html&quot;&gt;“有道”博客搜索&lt;/a&gt; 2008年04月29日&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;sysmsg&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogbus.com&quot; target=&quot;_blank&quot;&gt;博客大巴，你的个人传媒早班车&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;addfav&quot;&gt;收藏到：&lt;span class= &quot;delicious&quot;&gt;&lt;a href=&quot;http://delicious.com/save?url=http%3A%2F%2Fejb3.blogbus.com%2Flogs%2F51278341.html&amp;title=360%E6%9D%80%E6%AF%92&quot;&gt;Del.icio.us&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/296320650/ejb3_blogbus_com/blogbus.com/s.gif?r=http://ejb3.blogbus.com/logs/51278341.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/blogbus.com/ejb3_blogbus_com/296320650/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/blogbus.com/ejb3_blogbus_com/296320650/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://ejb3.blogbus.com/c/">未分类</category><pubDate>Fri, 13 Nov 2009 22:32:52 +0800</pubDate><guid isPermaLink="false">http://ejb3.blogbus.com/logs/51278341.html</guid><fs:srclink>http://ejb3.blogbus.com/logs/51278341.html</fs:srclink><fs:srcfeed>http://ejb3.blogbus.com/atom.xml</fs:srcfeed><fs:itemid>blogbus.com/ejb3_blogbus_com/~7025723/296320650/5133694</fs:itemid></item><item><title>在Flex Builder中添加BlazeDS</title><link atom:type="text/html">http://ejb3.blogbus.com/logs/45312660.html</link><author xmlns="http://www.w3.org/2005/Atom"></author><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/logs/45312660.html</id><description>&lt;p&gt;&lt;span style=&quot;font-family: '楷体_GB2312', sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;首先BlazeDS包含了两部分的内容，一个是客户端Flex，另一个是远程服务端Java。为了能同时编写Flex代码和Java代码。Flex Builder一般以插件形式安装，也就是要在Eclipse中装一个插件版的Flex Builder。而blazeds下载下来默认是blazeds.war的文件，至于为什么是war格式的，以下过程中会用到。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: '楷体_GB2312', sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;创建一个Flex Project，在Application server type中选择J2EE，其他都默认，next&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/961.gif&quot; alt=&quot;&quot; width=&quot;562&quot; height=&quot;613&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: '楷体_GB2312', sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;在下来的这个界面中，关键点是Flex WAR file，选择的是下载好的blazeds.war文件，Target runtime可以是任意的容器，一般开发都选用Apache Tomcat（这个一开始就要配置好）。另外Output folder默认是bin-debug，可以改成WebContent/FlexView，符合一般的开发习惯&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: '楷体_GB2312', sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/962.gif&quot; alt=&quot;&quot; width=&quot;496&quot; height=&quot;506&quot; /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: '楷体_GB2312', sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;接下去的过程都是默认&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/963.gif&quot; alt=&quot;&quot; width=&quot;478&quot; height=&quot;527&quot; /&gt;&lt;/p&gt;
&lt;p&gt;最后是创建完毕的工程目录结构&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/964.gif&quot; alt=&quot;&quot; width=&quot;306&quot; height=&quot;511&quot; /&gt;&lt;/p&gt;&lt;!--sp--&gt;&lt;div class=&quot;relpost&quot;&gt;&lt;br/&gt;&lt;h3&gt;随机文章：&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;/logs/42875809.html&quot;&gt;Java的Socket编程&lt;/a&gt; 2009年07月25日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/27723552.html&quot;&gt;struts 2 带集合的表单控件&lt;/a&gt; 2008年08月14日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/20115939.html&quot;&gt;Struts与MVC（一）&lt;/a&gt; 2008年05月02日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/19398867.html&quot;&gt;世界编程语言排行榜&lt;/a&gt; 2008年04月20日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/19396920.html&quot;&gt;Web数据库连接用数据池而不用单态&lt;/a&gt; 2008年04月20日&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;sysmsg&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogbus.com&quot; target=&quot;_blank&quot;&gt;博客大巴，你的个人传媒早班车&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;addfav&quot;&gt;收藏到：&lt;span class= &quot;delicious&quot;&gt;&lt;a href=&quot;http://delicious.com/save?url=http%3A%2F%2Fejb3.blogbus.com%2Flogs%2F45312660.html&amp;title=%E5%9C%A8Flex+Builder%E4%B8%AD%E6%B7%BB%E5%8A%A0BlazeDS&quot;&gt;Del.icio.us&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/296320651/ejb3_blogbus_com/blogbus.com/s.gif?r=http://ejb3.blogbus.com/logs/45312660.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/blogbus.com/ejb3_blogbus_com/296320651/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/blogbus.com/ejb3_blogbus_com/296320651/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://ejb3.blogbus.com/c/">未分类</category><pubDate>Sat, 29 Aug 2009 15:38:21 +0800</pubDate><guid isPermaLink="false">http://ejb3.blogbus.com/logs/45312660.html</guid><fs:srclink>http://ejb3.blogbus.com/logs/45312660.html</fs:srclink><fs:srcfeed>http://ejb3.blogbus.com/atom.xml</fs:srcfeed><fs:itemid>blogbus.com/ejb3_blogbus_com/~7025723/296320651/5133694</fs:itemid></item><item><title>FlexViewer中两个Widget之间的通信</title><link atom:type="text/html">http://ejb3.blogbus.com/logs/44128604.html</link><author xmlns="http://www.w3.org/2005/Atom"></author><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/logs/44128604.html</id><description>&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: '楷体_GB2312',sans-serif;&quot;&gt;在FlexViewer中，每一个Widget都是一个独立的组件，它们都继承于BaseWidget。现在某一个Widget要访问令外一个widget的属性，就要通过它们所在的共同父类，建立查找关系。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: '楷体_GB2312',sans-serif;&quot;&gt;每一个Widget都是放在名称叫WidgetBox的VBox里，可以通过this.parent来获得这个容器对象。然后再调用这个容器对象的getChildAt方法来获得它的子对象，也就是每一个Widget，但是获得的子对象是DisplayObject类型的，则需要进行强制转换。问题就出在这里了，虽然通过getChildAt获得的子对象，都能够访问它继承于DisplayObject的属性和方法。但就是无法进行转换成BaseWidget类，什么原因，现在还不明白。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: '楷体_GB2312',sans-serif;&quot;&gt;现在有另外一种变通方式，就是用单例模式建立一个中间类，然后两个Widget每次通过这个中间类来通信&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: '楷体_GB2312',sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;!--sp--&gt;&lt;div class=&quot;relpost&quot;&gt;&lt;br/&gt;&lt;h3&gt;随机文章：&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;/logs/33647479.html&quot;&gt;ActionScript与Web程序通信&lt;/a&gt; 2009年01月09日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/23417409.html&quot;&gt;Struts 2 结果(Result)&lt;/a&gt; 2008年06月22日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/23071398.html&quot;&gt;Struts 2小结&lt;/a&gt; 2008年06月17日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/23070156.html&quot;&gt;Google Web Toolkit&lt;/a&gt; 2008年06月17日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/22922214.html&quot;&gt;Struts 2 类型转换&lt;/a&gt; 2008年06月14日&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;sysmsg&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogbus.com&quot; target=&quot;_blank&quot;&gt;博客大巴，你的个人传媒早班车&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;addfav&quot;&gt;收藏到：&lt;span class= &quot;delicious&quot;&gt;&lt;a href=&quot;http://delicious.com/save?url=http%3A%2F%2Fejb3.blogbus.com%2Flogs%2F44128604.html&amp;title=FlexViewer%E4%B8%AD%E4%B8%A4%E4%B8%AAWidget%E4%B9%8B%E9%97%B4%E7%9A%84%E9%80%9A%E4%BF%A1&quot;&gt;Del.icio.us&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/296320652/ejb3_blogbus_com/blogbus.com/s.gif?r=http://ejb3.blogbus.com/logs/44128604.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/blogbus.com/ejb3_blogbus_com/296320652/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/blogbus.com/ejb3_blogbus_com/296320652/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://ejb3.blogbus.com/c/">未分类</category><pubDate>Fri, 14 Aug 2009 01:44:12 +0800</pubDate><guid isPermaLink="false">http://ejb3.blogbus.com/logs/44128604.html</guid><fs:srclink>http://ejb3.blogbus.com/logs/44128604.html</fs:srclink><fs:srcfeed>http://ejb3.blogbus.com/atom.xml</fs:srcfeed><fs:itemid>blogbus.com/ejb3_blogbus_com/~7025723/296320652/5133694</fs:itemid></item><item><title>Java的Socket编程</title><link atom:type="text/html">http://ejb3.blogbus.com/logs/42875809.html</link><author xmlns="http://www.w3.org/2005/Atom"></author><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/logs/42875809.html</id><description>&lt;p&gt;server端&lt;/p&gt;
&lt;p&gt;// Fig. 18.4: Server.java&lt;br /&gt;// Set up a Server that will receive a connection from a client, send &lt;br /&gt;// a string to the client, and close the connection.&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import java.awt.*;&lt;br /&gt;import java.awt.event.*;&lt;br /&gt;import javax.swing.*;&lt;/p&gt;
&lt;p&gt;public class Server extends JFrame {&lt;br /&gt;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp; * &lt;br /&gt;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;private static final long serialVersionUID = 1L;&lt;br /&gt;&amp;nbsp;private JTextField enterField;&lt;br /&gt;&amp;nbsp;private JTextArea displayArea;&lt;br /&gt;&amp;nbsp;private ObjectOutputStream output;&lt;br /&gt;&amp;nbsp;private ObjectInputStream input;&lt;br /&gt;&amp;nbsp;private ServerSocket server;&lt;br /&gt;&amp;nbsp;private Socket connection;&lt;br /&gt;&amp;nbsp;private int counter = 1;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// set up GUI&lt;br /&gt;&amp;nbsp;public Server() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;super(&quot;Server&quot;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;Container container = getContentPane();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// create enterField and register listener&lt;br /&gt;&amp;nbsp;&amp;nbsp;enterField = new JTextField();&lt;br /&gt;&amp;nbsp;&amp;nbsp;enterField.setEditable(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;enterField.addActionListener(new ActionListener() {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// send message to client&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//当按下回车键时触发事件&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void actionPerformed(ActionEvent event) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sendData(event.getActionCommand());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;enterField.setText(&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;});&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;container.add(enterField, BorderLayout.NORTH);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// create displayArea&lt;br /&gt;&amp;nbsp;&amp;nbsp;displayArea = new JTextArea();&lt;br /&gt;&amp;nbsp;&amp;nbsp;container.add(new JScrollPane(displayArea), BorderLayout.CENTER);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;setSize(300, 150);&lt;br /&gt;&amp;nbsp;&amp;nbsp;setVisible(true);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;} // end Server constructor&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// set up and run server&lt;br /&gt;&amp;nbsp;public void runServer() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// set up server to receive connections; process connections&lt;br /&gt;&amp;nbsp;&amp;nbsp;try {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Step 1: Create a ServerSocket.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;server = new ServerSocket(12345, 100);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (true) {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;waitForConnection(); // Step 2: Wait for a connection.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getStreams(); // Step 3: Get input &amp;amp; output streams.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;processConnection(); // Step 4: Process connection.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// process EOFException when client closes connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch (EOFException eofException) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.err.println(&quot;Server terminated connection&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;closeConnection(); // Step 5: Close connection.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;++counter;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} // end while&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;} // end try&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// process problems with I/O&lt;br /&gt;&amp;nbsp;&amp;nbsp;catch (IOException ioException) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ioException.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;} // end method runServer&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// wait for connection to arrive, then display connection info&lt;br /&gt;&amp;nbsp;private void waitForConnection() throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;displayMessage(&quot;Waiting for connection\n&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;connection = server.accept(); // allow server to accept connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;displayMessage(&quot;Connection &quot; + counter + &quot; received from: &quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ connection.getInetAddress().getHostName());&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// get streams to send and receive data&lt;br /&gt;&amp;nbsp;private void getStreams() throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// set up output stream for objects&lt;br /&gt;&amp;nbsp;&amp;nbsp;output = new ObjectOutputStream(connection.getOutputStream());&lt;br /&gt;&amp;nbsp;&amp;nbsp;output.flush(); // flush output buffer to send header information&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// set up input stream for objects&lt;br /&gt;&amp;nbsp;&amp;nbsp;input = new ObjectInputStream(connection.getInputStream());&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;displayMessage(&quot;\nGot I/O streams\n&quot;);&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// process connection with client&lt;br /&gt;&amp;nbsp;private void processConnection() throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// send connection successful message to client&lt;br /&gt;&amp;nbsp;&amp;nbsp;String message = &quot;Connection successful&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;sendData(message);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// enable enterField so server user can send messages&lt;br /&gt;&amp;nbsp;&amp;nbsp;setTextFieldEditable(true);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;do { // process messages sent from client&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// read message and display it&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message = (String) input.readObject();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayMessage(&quot;\n&quot; + message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// catch problems reading from client&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch (ClassNotFoundException classNotFoundException) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayMessage(&quot;\nUnknown object type received&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;} while (!message.equals(&quot;CLIENT&amp;gt;&amp;gt;&amp;gt; TERMINATE&quot;));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;} // end method processConnection&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// close streams and socket&lt;br /&gt;&amp;nbsp;private void closeConnection() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;displayMessage(&quot;\nTerminating connection\n&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;setTextFieldEditable(false); // disable enterField&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;input.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;connection.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;} catch (IOException ioException) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ioException.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// send message to client&lt;br /&gt;&amp;nbsp;private void sendData(String message) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// send object to client&lt;br /&gt;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.writeObject(&quot;SERVER&amp;gt;&amp;gt;&amp;gt; &quot; + message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.flush();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayMessage(&quot;\nSERVER&amp;gt;&amp;gt;&amp;gt; &quot; + message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// process problems sending object&lt;br /&gt;&amp;nbsp;&amp;nbsp;catch (IOException ioException) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayArea.append(&quot;\nError writing object&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// utility method called from other threads to manipulate&lt;br /&gt;&amp;nbsp;// displayArea in the event-dispatch thread&lt;br /&gt;&amp;nbsp;private void displayMessage(final String messageToDisplay) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// display message from event-dispatch thread of execution&lt;br /&gt;&amp;nbsp;&amp;nbsp;SwingUtilities.invokeLater(new Runnable() { // inner class to ensure GUI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// updates properly&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void run() // updates displayArea&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayArea.append(messageToDisplay);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayArea.setCaretPosition(displayArea.getText()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.length());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} // end inner class&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;); // end call to SwingUtilities.invokeLater&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Client端&lt;/p&gt;
&lt;p&gt;// Fig. 18.5: Client.java&lt;br /&gt;// Client that reads and displays information sent from a Server.&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import java.awt.*;&lt;br /&gt;import java.awt.event.*;&lt;br /&gt;import javax.swing.*;&lt;/p&gt;
&lt;p&gt;public class Client extends JFrame {&lt;br /&gt;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp; * &lt;br /&gt;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;private static final long serialVersionUID = 1L;&lt;br /&gt;&amp;nbsp;private JTextField enterField;&lt;br /&gt;&amp;nbsp;private JTextArea displayArea;&lt;br /&gt;&amp;nbsp;private ObjectOutputStream output;&lt;br /&gt;&amp;nbsp;private ObjectInputStream input;&lt;br /&gt;&amp;nbsp;private String message = &quot;&quot;;&lt;br /&gt;&amp;nbsp;private String chatServer;&lt;br /&gt;&amp;nbsp;private Socket client;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// initialize chatServer and set up GUI&lt;br /&gt;&amp;nbsp;public Client(String host) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;super(&quot;Client&quot;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;chatServer = host; // set server to which this client connects&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;Container container = getContentPane();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// create enterField and register listener&lt;br /&gt;&amp;nbsp;&amp;nbsp;enterField = new JTextField();&lt;br /&gt;&amp;nbsp;&amp;nbsp;enterField.setEditable(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;enterField.addActionListener(new ActionListener() {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// send message to server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void actionPerformed(ActionEvent event) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sendData(event.getActionCommand());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;enterField.setText(&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;});&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;container.add(enterField, BorderLayout.NORTH);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// create displayArea&lt;br /&gt;&amp;nbsp;&amp;nbsp;displayArea = new JTextArea();&lt;br /&gt;&amp;nbsp;&amp;nbsp;container.add(new JScrollPane(displayArea), BorderLayout.CENTER);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;setSize(300, 150);&lt;br /&gt;&amp;nbsp;&amp;nbsp;setVisible(true);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;} // end Client constructor&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// connect to server and process messages from server&lt;br /&gt;&amp;nbsp;private void runClient() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// connect to server, get streams, process connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;connectToServer(); // Step 1: Create a Socket to make connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;getStreams(); // Step 2: Get the input and output streams&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;processConnection(); // Step 3: Process connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// server closed connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;catch (EOFException eofException) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.err.println(&quot;Client terminated connection&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// process problems communicating with server&lt;br /&gt;&amp;nbsp;&amp;nbsp;catch (IOException ioException) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ioException.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;closeConnection(); // Step 4: Close connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;} // end method runClient&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// connect to server&lt;br /&gt;&amp;nbsp;private void connectToServer() throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;displayMessage(&quot;Attempting connection\n&quot;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// create Socket to make connection to server&lt;br /&gt;&amp;nbsp;&amp;nbsp;client = new Socket(InetAddress.getByName(chatServer), 12345);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// display connection information&lt;br /&gt;&amp;nbsp;&amp;nbsp;displayMessage(&quot;Connected to: &quot; + client.getInetAddress().getHostName());&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// get streams to send and receive data&lt;br /&gt;&amp;nbsp;private void getStreams() throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// set up output stream for objects&lt;br /&gt;&amp;nbsp;&amp;nbsp;output = new ObjectOutputStream(client.getOutputStream());&lt;br /&gt;&amp;nbsp;&amp;nbsp;output.flush(); // flush output buffer to send header information&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// set up input stream for objects&lt;br /&gt;&amp;nbsp;&amp;nbsp;input = new ObjectInputStream(client.getInputStream());&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;displayMessage(&quot;\nGot I/O streams\n&quot;);&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// process connection with server&lt;br /&gt;&amp;nbsp;private void processConnection() throws IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// enable enterField so client user can send messages&lt;br /&gt;&amp;nbsp;&amp;nbsp;setTextFieldEditable(true);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;do { // process messages sent from server&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// read message and display it&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message = (String) input.readObject();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayMessage(&quot;\n&quot; + message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// catch problems reading from server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch (ClassNotFoundException classNotFoundException) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayMessage(&quot;\nUnknown object type received&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;} while (!message.equals(&quot;SERVER&amp;gt;&amp;gt;&amp;gt; TERMINATE&quot;));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;} // end method processConnection&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// close streams and socket&lt;br /&gt;&amp;nbsp;private void closeConnection() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;displayMessage(&quot;\nClosing connection&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;setTextFieldEditable(false); // disable enterField&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;input.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;client.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;} catch (IOException ioException) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ioException.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// send message to server&lt;br /&gt;&amp;nbsp;private void sendData(String message) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// send object to server&lt;br /&gt;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.writeObject(&quot;CLIENT&amp;gt;&amp;gt;&amp;gt; &quot; + message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.flush();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayMessage(&quot;\nCLIENT&amp;gt;&amp;gt;&amp;gt; &quot; + message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;// process problems sending object&lt;br /&gt;&amp;nbsp;&amp;nbsp;catch (IOException ioException) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayArea.append(&quot;\nError writing object&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// utility method called from other threads to manipulate&lt;br /&gt;&amp;nbsp;// displayArea in the event-dispatch thread&lt;br /&gt;&amp;nbsp;private void displayMessage(final String messageToDisplay) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// display message from GUI thread of execution&lt;br /&gt;&amp;nbsp;&amp;nbsp;SwingUtilities.invokeLater(new Runnable() { // inner class to ensure GUI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// updates properly&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void run() // updates displayArea&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayArea.append(messageToDisplay);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;displayArea.setCaretPosition(displayArea.getText()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.length());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} // end inner class&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;); // end call to SwingUtilities.invokeLater&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;// utility method called from other threads to manipulate&lt;br /&gt;&amp;nbsp;// enterField in the event-dispatch thread&lt;br /&gt;&amp;nbsp;private void setTextFieldEditable(final boolean editable) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// display message from GUI thread of execution&lt;br /&gt;&amp;nbsp;&amp;nbsp;SwingUtilities.invokeLater(new Runnable() { // inner class to ensure GUI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// updates properly&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void run() // sets enterField's editability&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;enterField.setEditable(editable);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} // end inner class&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;); // end call to SwingUtilities.invokeLater&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;public static void main(String args[]) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;Client application;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;if (args.length == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;application = new Client(&quot;127.0.0.1&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;application = new Client(args[0]);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;application.runClient();&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;} // end class Client&lt;/p&gt;&lt;!--sp--&gt;&lt;div class=&quot;relpost&quot;&gt;&lt;br/&gt;&lt;h3&gt;随机文章：&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;/logs/44128604.html&quot;&gt;FlexViewer中两个Widget之间的通信&lt;/a&gt; 2009年08月14日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/33677020.html&quot;&gt;ActionScript程序之间的本地通信&lt;/a&gt; 2009年01月11日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/28392249.html&quot;&gt;DWR中JavaScript对象转化为Java对象&lt;/a&gt; 2008年09月01日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/24084438.html&quot;&gt;Struts 2.0与Spring整合&lt;/a&gt; 2008年07月04日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/23654181.html&quot;&gt;Spring 2.0使用AspectJ&lt;/a&gt; 2008年06月27日&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;sysmsg&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogbus.com&quot; target=&quot;_blank&quot;&gt;博客大巴，你的个人传媒早班车&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;addfav&quot;&gt;收藏到：&lt;span class= &quot;delicious&quot;&gt;&lt;a href=&quot;http://delicious.com/save?url=http%3A%2F%2Fejb3.blogbus.com%2Flogs%2F42875809.html&amp;title=Java%E7%9A%84Socket%E7%BC%96%E7%A8%8B&quot;&gt;Del.icio.us&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/296320653/ejb3_blogbus_com/blogbus.com/s.gif?r=http://ejb3.blogbus.com/logs/42875809.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/blogbus.com/ejb3_blogbus_com/296320653/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/blogbus.com/ejb3_blogbus_com/296320653/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://ejb3.blogbus.com/c/">未分类</category><pubDate>Sat, 25 Jul 2009 00:26:22 +0800</pubDate><guid isPermaLink="false">http://ejb3.blogbus.com/logs/42875809.html</guid><fs:srclink>http://ejb3.blogbus.com/logs/42875809.html</fs:srclink><fs:srcfeed>http://ejb3.blogbus.com/atom.xml</fs:srcfeed><fs:itemid>blogbus.com/ejb3_blogbus_com/~7025723/296320653/5133694</fs:itemid></item><item><title>Javascript调用Actionscript</title><link atom:type="text/html">http://ejb3.blogbus.com/logs/41827200.html</link><author xmlns="http://www.w3.org/2005/Atom"></author><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/logs/41827200.html</id><description>&lt;p&gt;mxml中的actionscript代码:&lt;/p&gt;
&lt;p&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx=&quot;&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt;&quot; initialize=&quot;init()&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;mx:Script&amp;nbsp;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import mx.controls.Alert;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.external.ExternalInterface;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public function init():void {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExternalInterface.addCallback(&quot;hello&quot;, say);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;public function say():void {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Alert.show(&quot;hello&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&amp;lt;/mx:Application&amp;gt;&lt;/p&gt;
&lt;p&gt;Javascript代码：&lt;/p&gt;
&lt;p&gt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;function thisMovie(movieName) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (navigator.appName.indexOf(&quot;Microsoft&quot;) != -1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return window[movieName];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return document[movieName];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;function btclick() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;thisMovie(&quot;Flex&quot;).hello();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;!--sp--&gt;&lt;div class=&quot;relpost&quot;&gt;&lt;br/&gt;&lt;h3&gt;随机文章：&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;/logs/33610125.html&quot;&gt;FlashDevelop&lt;/a&gt; 2009年01月09日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/23251773.html&quot;&gt;JSP页面中导入标签库&lt;/a&gt; 2008年06月20日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/20579136.html&quot;&gt;eclipse插件组合&lt;/a&gt; 2008年05月09日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/20252403.html&quot;&gt;eclipse中编写XML文件&lt;/a&gt; 2008年05月04日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/20086725.html&quot;&gt;Servlet/JSP文件上传&lt;/a&gt; 2008年05月01日&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;sysmsg&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogbus.com&quot; target=&quot;_blank&quot;&gt;博客大巴，你的个人传媒早班车&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;addfav&quot;&gt;收藏到：&lt;span class= &quot;delicious&quot;&gt;&lt;a href=&quot;http://delicious.com/save?url=http%3A%2F%2Fejb3.blogbus.com%2Flogs%2F41827200.html&amp;title=Javascript%E8%B0%83%E7%94%A8Actionscript&quot;&gt;Del.icio.us&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/296320654/ejb3_blogbus_com/blogbus.com/s.gif?r=http://ejb3.blogbus.com/logs/41827200.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/blogbus.com/ejb3_blogbus_com/296320654/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/blogbus.com/ejb3_blogbus_com/296320654/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://ejb3.blogbus.com/c/">未分类</category><pubDate>Fri, 03 Jul 2009 12:20:37 +0800</pubDate><guid isPermaLink="false">http://ejb3.blogbus.com/logs/41827200.html</guid><fs:srclink>http://ejb3.blogbus.com/logs/41827200.html</fs:srclink><fs:srcfeed>http://ejb3.blogbus.com/atom.xml</fs:srcfeed><fs:itemid>blogbus.com/ejb3_blogbus_com/~7025723/296320654/5133694</fs:itemid></item><item><title>Skyline TerraBuilder TerraExplorer pro</title><link atom:type="text/html">http://ejb3.blogbus.com/logs/37854078.html</link><author xmlns="http://www.w3.org/2005/Atom"></author><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/logs/37854078.html</id><description>&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: '楷体_GB2312',sans-serif;&quot;&gt;在Terra Builder 里创建地形&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/943.gif&quot; alt=&quot;&quot; width=&quot;1024&quot; height=&quot;742&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;span style=&quot;font-family: '楷体_GB2312',sans-serif;&quot;&gt;导入到TerraExplorer&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/944.gif&quot; alt=&quot;&quot; width=&quot;1024&quot; height=&quot;738&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: '楷体_GB2312',sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;导入模型&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/945.gif&quot; alt=&quot;&quot; width=&quot;1024&quot; height=&quot;738&quot; /&gt;&lt;/p&gt;&lt;!--sp--&gt;&lt;div class=&quot;relpost&quot;&gt;&lt;br/&gt;&lt;h3&gt;随机文章：&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;/logs/36432278.html&quot;&gt;在eclipse pdt中配置PHP&lt;/a&gt; 2009年03月11日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/36185303.html&quot;&gt;Spring Security&lt;/a&gt; 2009年03月06日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/33610125.html&quot;&gt;FlashDevelop&lt;/a&gt; 2009年01月09日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/29717212.html&quot;&gt;QQ空间开始支持Firefox火狐浏览器&lt;/a&gt; 2008年09月28日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/28429675.html&quot;&gt;DWR与服务端对象的结合&lt;/a&gt; 2008年09月02日&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;sysmsg&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogbus.com&quot; target=&quot;_blank&quot;&gt;博客大巴，你的个人传媒早班车&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;addfav&quot;&gt;收藏到：&lt;span class= &quot;delicious&quot;&gt;&lt;a href=&quot;http://delicious.com/save?url=http%3A%2F%2Fejb3.blogbus.com%2Flogs%2F37854078.html&amp;title=Skyline+TerraBuilder+TerraExplorer+pro&quot;&gt;Del.icio.us&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/blogbus.com/ejb3_blogbus_com/296320655/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/blogbus.com/ejb3_blogbus_com/296320655/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://ejb3.blogbus.com/c/">未分类</category><pubDate>Mon, 13 Apr 2009 19:04:52 +0800</pubDate><guid isPermaLink="false">http://ejb3.blogbus.com/logs/37854078.html</guid><fs:srclink>http://ejb3.blogbus.com/logs/37854078.html</fs:srclink><fs:srcfeed>http://ejb3.blogbus.com/atom.xml</fs:srcfeed><fs:itemid>blogbus.com/ejb3_blogbus_com/~7025723/296320655/5133694</fs:itemid></item><item><title>在eclipse pdt中配置PHP</title><link atom:type="text/html">http://ejb3.blogbus.com/logs/36432278.html</link><author xmlns="http://www.w3.org/2005/Atom"></author><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/logs/36432278.html</id><description>&lt;p&gt;打开window-&amp;gt;preferences面板，选择PHP选项中的executable-&amp;gt;add&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/936.gif&quot; alt=&quot;&quot; width=&quot;626&quot; height=&quot;535&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在添加面板中输入PHP的路径，PHP debugger选择XDebug(Zend Debugger没试过)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/937.gif&quot; alt=&quot;&quot; width=&quot;493&quot; height=&quot;405&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在Debug选项配置如下信息&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/938.gif&quot; alt=&quot;&quot; width=&quot;626&quot; height=&quot;535&quot; /&gt;&lt;/p&gt;
&lt;p&gt;配置好后就可以直接运行了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/939.gif&quot; alt=&quot;&quot; width=&quot;626&quot; height=&quot;535&quot; /&gt;&lt;/p&gt;&lt;!--sp--&gt;&lt;div class=&quot;relpost&quot;&gt;&lt;br/&gt;&lt;h3&gt;随机文章：&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;/logs/37854078.html&quot;&gt;Skyline TerraBuilder TerraExplorer pro&lt;/a&gt; 2009年04月13日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/29717212.html&quot;&gt;QQ空间开始支持Firefox火狐浏览器&lt;/a&gt; 2008年09月28日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/28429675.html&quot;&gt;DWR与服务端对象的结合&lt;/a&gt; 2008年09月02日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/20865255.html&quot;&gt;Spring（三）&lt;/a&gt; 2008年05月14日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/20808078.html&quot;&gt;分页&lt;/a&gt; 2008年05月13日&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;sysmsg&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogbus.com&quot; target=&quot;_blank&quot;&gt;博客大巴，你的个人传媒早班车&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;addfav&quot;&gt;收藏到：&lt;span class= &quot;delicious&quot;&gt;&lt;a href=&quot;http://delicious.com/save?url=http%3A%2F%2Fejb3.blogbus.com%2Flogs%2F36432278.html&amp;title=%E5%9C%A8eclipse+pdt%E4%B8%AD%E9%85%8D%E7%BD%AEPHP&quot;&gt;Del.icio.us&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/blogbus.com/ejb3_blogbus_com/296320656/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/blogbus.com/ejb3_blogbus_com/296320656/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://ejb3.blogbus.com/c/">未分类</category><pubDate>Wed, 11 Mar 2009 19:47:34 +0800</pubDate><guid isPermaLink="false">http://ejb3.blogbus.com/logs/36432278.html</guid><fs:srclink>http://ejb3.blogbus.com/logs/36432278.html</fs:srclink><fs:srcfeed>http://ejb3.blogbus.com/atom.xml</fs:srcfeed><fs:itemid>blogbus.com/ejb3_blogbus_com/~7025723/296320656/5133694</fs:itemid></item><item><title>Spring Security</title><link atom:type="text/html">http://ejb3.blogbus.com/logs/36185303.html</link><author xmlns="http://www.w3.org/2005/Atom"></author><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/logs/36185303.html</id><description>&lt;p&gt;所需Jar包&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/927.gif&quot; alt=&quot;&quot; width=&quot;273&quot; height=&quot;289&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
web.xml的内容&lt;/p&gt;
&lt;p&gt;&amp;lt;listener&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;listener-class&amp;gt;org.springframework.web.context.ContextLoaderListener&amp;lt;/listener-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/listener&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;filter&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filter-name&amp;gt;springSecurityFilterChain&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filter-class&amp;gt;org.springframework.web.filter.DelegatingFilterProxy&amp;lt;/filter-class&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/filter&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filter-name&amp;gt;springSecurityFilterChain&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/filter-mapping&amp;gt;&lt;/p&gt;
&lt;p&gt;applicationContext.xml的内容&lt;/p&gt;
&lt;p&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;beans:beans xmlns=&quot;http://www.springframework.org/schema/security&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:beans=&quot;http://www.springframework.org/schema/beans&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;http auto-config='true'&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intercept-url pattern=&quot;/**&quot; access=&quot;ROLE_USER&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/http&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;authentication-provider&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;user-service&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;user name=&quot;zhang&quot; password=&quot;zhang&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; authorities=&quot;ROLE_USER, ROLE_ADMIN&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;user name=&quot;bob&quot; password=&quot;bobspassword&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; authorities=&quot;ROLE_USER&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/user-service&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/authentication-provider&amp;gt;&lt;br /&gt;&amp;lt;/beans:beans&amp;gt;&lt;/p&gt;
&lt;p&gt;打开页面，自动跳转到登录窗口。输入用户和密码，即可进入&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://i114.photobucket.com/albums/n262/zhangxh20/images/928.gif&quot; alt=&quot;&quot; width=&quot;707&quot; height=&quot;394&quot; /&gt;&lt;/p&gt;&lt;!--sp--&gt;&lt;div class=&quot;relpost&quot;&gt;&lt;br/&gt;&lt;h3&gt;随机文章：&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;http://ejb3.blogbus.com/logs/28429675.html&quot;&gt;DWR与服务端对象的结合&lt;/a&gt; 2008年09月02日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://ejb3.blogbus.com/logs/28392249.html&quot;&gt;DWR中JavaScript对象转化为Java对象&lt;/a&gt; 2008年09月01日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://ejb3.blogbus.com/logs/28362773.html&quot;&gt;DWR，从JavaScript到Java的远程调用&lt;/a&gt; 2008年08月31日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://ejb3.blogbus.com/logs/27824466.html&quot;&gt;MyEclipse 7.0&lt;/a&gt; 2008年08月17日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://ejb3.blogbus.com/logs/27797901.html&quot;&gt;jQuery简化JavaScript开发&lt;/a&gt; 2008年08月16日&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;sysmsg&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogbus.com&quot; target=&quot;_blank&quot;&gt;博客大巴，你的个人传媒早班车&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;addfav&quot;&gt;收藏到：&lt;span class= &quot;delicious&quot;&gt;&lt;a href=&quot;http://delicious.com/save?url=http%3A%2F%2Fejb3.blogbus.com%2Flogs%2F36185303.html&amp;title=Spring+Security&quot;&gt;Del.icio.us&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/blogbus.com/ejb3_blogbus_com/296320657/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/blogbus.com/ejb3_blogbus_com/296320657/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://ejb3.blogbus.com/c/">未分类</category><pubDate>Fri, 06 Mar 2009 13:04:36 +0800</pubDate><guid isPermaLink="false">http://ejb3.blogbus.com/logs/36185303.html</guid><fs:srclink>http://ejb3.blogbus.com/logs/36185303.html</fs:srclink><fs:srcfeed>http://ejb3.blogbus.com/atom.xml</fs:srcfeed><fs:itemid>blogbus.com/ejb3_blogbus_com/~7025723/296320657/5133694</fs:itemid></item><item><title>ActionScript程序之间的本地通信</title><link atom:type="text/html">http://ejb3.blogbus.com/logs/33677020.html</link><author xmlns="http://www.w3.org/2005/Atom"></author><id xmlns="http://www.w3.org/2005/Atom">http://ejb3.blogbus.com/logs/33677020.html</id><description>&lt;p&gt;本地通信，就是在同一客户端计算机上运行的SWF文件之间的通信。可以通过flash.net包下的LocalConnection类进行处理。&lt;/p&gt;&lt;img src=&quot;http://moscar.cn/wp-content/uploads/2008/12/localconnection_samedomains.gif&quot; alt=&quot;&quot; width=&quot;432&quot; height=&quot;267&quot; /&gt;&lt;!--sp--&gt;&lt;div class=&quot;relpost&quot;&gt;&lt;br/&gt;&lt;h3&gt;随机文章：&lt;/h3&gt;&lt;div&gt;&lt;a href=&quot;/logs/41827200.html&quot;&gt;Javascript调用Actionscript&lt;/a&gt; 2009年07月03日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/29750357.html&quot;&gt;C语言学习（三）&lt;/a&gt; 2008年09月29日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/24084438.html&quot;&gt;Struts 2.0与Spring整合&lt;/a&gt; 2008年07月04日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/20117241.html&quot;&gt;Struts与MVC（二）&lt;/a&gt; 2008年05月02日&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;/logs/20103402.html&quot;&gt;Web数据库连接用数据池而不用单态(续)&lt;/a&gt; 2008年05月01日&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;sysmsg&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.blogbus.com&quot; target=&quot;_blank&quot;&gt;博客大巴，你的个人传媒早班车&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;addfav&quot;&gt;收藏到：&lt;span class= &quot;delicious&quot;&gt;&lt;a href=&quot;http://delicious.com/save?url=http%3A%2F%2Fejb3.blogbus.com%2Flogs%2F33677020.html&amp;title=ActionScript%E7%A8%8B%E5%BA%8F%E4%B9%8B%E9%97%B4%E7%9A%84%E6%9C%AC%E5%9C%B0%E9%80%9A%E4%BF%A1&quot;&gt;Del.icio.us&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/blogbus.com/ejb3_blogbus_com/296320658/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/blogbus.com/ejb3_blogbus_com/296320658/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category domain="http://ejb3.blogbus.com/c/">未分类</category><pubDate>Sun, 11 Jan 2009 00:37:21 +0800</pubDate><guid isPermaLink="false">http://ejb3.blogbus.com/logs/33677020.html</guid><fs:srclink>http://ejb3.blogbus.com/logs/33677020.html</fs:srclink><fs:srcfeed>http://ejb3.blogbus.com/atom.xml</fs:srcfeed><fs:itemid>blogbus.com/ejb3_blogbus_com/~7025723/296320658/5133694</fs:itemid></item></channel></rss>