<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:fs="http://www.feedsky.com/namespace/feed" version="2.0"><channel><atom:link href="http://feed.feedsky.com/jiangzone" type="application/rss+xml" ref="self"></atom:link><lastBuildDate>Sat, 15 Sep 2007 15:38:20 GMT</lastBuildDate><title>JiangZone</title><description>天降大任于斯，先受其苦心志、劳筋骨、饿体肤之考验！</description><link>http://www.jiangzone.com.cn/</link><language>zh-cn</language><copyright>Copyright 2005 PBlog2 v2.4</copyright><dc:language>zh-cn</dc:language><dc:rights>Copyright 2005 PBlog2 v2.4</dc:rights><image><title>JiangZone</title><url>http://www.jiangzone.com.cn/images/logos.gif</url><link>http://www.jiangzone.com.cn/</link><description>JiangZone</description></image><item><title>[转载] 彻底杜绝PHP的session cookie错误</title><link>http://item.feedsky.com/~feedsky/jiangzone/~5938770/20533715/4067189/1/item.html</link><description>本文讨论的是如何彻底杜绝warning: Cannot add header information - headers already sent in......&amp;nbsp;&amp;nbsp;这种令人莫明其妙的的错误。&lt;br/&gt;&lt;br/&gt;只要你写过PHP代码,相信都遇上过这个大多时候都令人莫明其妙的warning吧..今天我们就来搞定它...............&lt;br/&gt;&lt;br/&gt;看了PHP手册，回答如下：&lt;br/&gt;&lt;br/&gt;消息“Warning： Cannot send session cookie - headers already sent。。。”或者“Cannot add header information - headers already sent。。。”。&lt;br/&gt;&lt;br/&gt;函数 header()，setcookie() 和 session 函数需要在输出流中增加头信息。但是头信息只能在其它任何输出内容之前发送。在使用这些函数前不能有任何（如 HTML）的输出。函数 headers_sent() 能够检查您的脚本是否已经发送了头信息。请参阅“输出控制函数”。&lt;br/&gt;&lt;br/&gt;意思是：不要在使用上面的函数前有任何文字，空行，回车，空格等。但。。。问题是，这答案并不令人满意。因为往往程序在其他PHP环境下运行却正常。&lt;br/&gt; &lt;br/&gt;&lt;br/&gt;首先：这错误是怎么产生的呢？让我们来看看PHP是如何处理HTTP header输出和主体输出的。&lt;br/&gt;&lt;br/&gt;PHP 脚本开始执行时，它可以同时发送header(标题)信息和主体信息。 Header信息(来自 header() 或 SetCookie() 函数)并不会立即发送，相反，它被保存到一个列表中。 这样就可以允许你修改标题信息，包括缺省的标题(例如 Content-Type 标题）。但是，一旦脚本发送了任何非标题的输出（例如，使用 HTML 或 print() 调用)，那么PHP就必须先发送完所有的Header，然后终止 HTTP header。而后继续发送主体数据。从这时开始，任何添加或修改Header信息的试图都是不允许的，并会发送上述的错误消息之一。&lt;br/&gt;&lt;br/&gt;好!那我们来解决它：&lt;br/&gt;&lt;br/&gt;笨方法：把错误警告全不显示!&lt;br/&gt;掩耳盗铃之计，具体方法就不说了 ^_^#&lt;br/&gt;&lt;br/&gt;解决方案：&lt;br/&gt;&lt;br/&gt;1)适用于有权限编辑PHP。INI的人&lt;br/&gt;&lt;br/&gt;打开php。ini文件(你应试比我清楚你的php。ini在哪里)，找到&lt;br/&gt;&lt;br/&gt;output_buffering =改为on或者任何数字。如果是IIS6，请一定改为ON，不然你的PHP效率会奇慢。&lt;br/&gt;&lt;br/&gt;2)使用虚拟主机，不能编辑PHP。INI，怎么办？&lt;br/&gt;&lt;br/&gt;简单：&lt;br/&gt;&lt;br/&gt;在你的空间根目录下建立一个。htaccess文件，内容如下：&lt;br/&gt;&lt;br/&gt;AllowOverride All&lt;br/&gt;PHP_FLAG output_buffering On&lt;br/&gt;&lt;br/&gt;不幸的情况是：还是不行？全部网页都不能显示啦？&lt;br/&gt;&lt;br/&gt;那么，你可以打电话骂一通空间商，然后让他给你把apache的。htaccess AllowOverride打开&lt;br/&gt;&lt;br/&gt;3)在PHP文件里解决&lt;br/&gt;&lt;br/&gt;ob_start()&lt;br/&gt;启用output buffering机制。 Output buffering支持多层次 -- 例如，可以多次调用 ob_start() 函数。&lt;br/&gt;&lt;br/&gt;ob_end_flush()&lt;br/&gt;发送output buffer（输出缓冲）并禁用output buffering机制。&lt;br/&gt;&lt;br/&gt;ob_end_clean()&lt;br/&gt;清除output buffer但不发送，并禁用output buffering。&lt;br/&gt;&lt;br/&gt;ob_get_contents()&lt;br/&gt;将当前的output buffer返回成一个字符串。允许你处理脚本发出的任何输出。&lt;br/&gt;&lt;br/&gt;原理：&lt;br/&gt;&lt;br/&gt;output_buffering 被启用时，在脚本发送输出时，PHP并不发送HTTP header。相反，它将此输出通过管道（pipe）输入到动态增加的缓存中（只能在PHP 4。0中使用，它具有中央化的输出机制）。你仍然可以修改/添加header，或者设置cookie，因为header实际上并没有发送。当全部脚本终止时，PHP将自动发送HTTP header到浏览器，然后再发送输出缓冲中的内容。</description><category>PHP相关</category><pubDate>Sat, 15 Sep 2007 23:38:20 +0800</pubDate><author>jiang8066@gmail.com(admin)</author><guid isPermaLink="false">http://www.jiangzone.com.cn/default.asp?id=8</guid><dc:creator>jiang8066@gmail.com(admin)</dc:creator><fs:srclink>http://www.jiangzone.com.cn/default.asp?id=8</fs:srclink><fs:srcfeed>http://www.jiangzone.com.cn/jiang/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/jiangzone/~5938770/20533715/4067189</fs:itemid></item><item><title>Java制作密码输入小键盘</title><link>http://item.feedsky.com/~feedsky/jiangzone/~5938770/20212123/4067189/1/item.html</link><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;不知道大家有没有用过农业银行的网上银行服务，该网上银行登录时，输入密码时，不可以直接打键盘输入，要用鼠标点击图形小键盘来输入，而小键盘里面的数字是随机排列的。&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://www.jiangzone.com.cn/attachments/images/keypad.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这样一来，可以防止木马记录用户键盘输入的密码被盗，确实是挻实用的功能，研究了一翻后，也大根掌握了它的工作原理，现在用Java来实现，大概是这样的：用Struts来实现，先是用户点击“登录”按钮，将会提交到Action里，在Action里进行如下处理：生成一个随机的不重复的数组，分别是0-9的数字，之后将该数组存放在Session里，之后Action再跳转到&amp;nbsp;&amp;nbsp;login.jsp&amp;nbsp;&amp;nbsp;里面，在Jsp里面添加一个图像标签&lt;br/&gt;&amp;lt;img src=&amp;#34;/servlet/Cr&amp;#101;atePwdPad&amp;#34; width=&amp;#34;150&amp;#34; height=&amp;#34;190&amp;#34; border=&amp;#34;0&amp;#34; usemap=&amp;#34;#Map&amp;#34;/&amp;gt;&lt;br/&gt;该图像将访问 Servlet 来读取小键盘图像，Servlet将做如下处理：获取Session中的数组，跟据数据顺序画出小键盘的位置，再输入图片。Jsp再用Map来定位小键盘中的数字按键，在写点击事件，让JavaScript去取出该按钮的值放到密码框中。之后提交登录。&lt;br/&gt;以下是Action的代码：&lt;br/&gt;import java.util.*;&lt;br/&gt;import javax.servlet.http.HttpServletRequest;&lt;br/&gt;import javax.servlet.http.HttpServletResponse;&lt;br/&gt;import o&amp;#114;g.apache.struts.action.Action;&lt;br/&gt;import o&amp;#114;g.apache.struts.action.ActionForm;&lt;br/&gt;import o&amp;#114;g.apache.struts.action.ActionForward;&lt;br/&gt;import o&amp;#114;g.apache.struts.action.ActionMapping;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;public class SecuLoginAction extends Action {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public ActionForward execute(ActionMapping mapping, ActionForm form,&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;HttpServletRequest request, HttpServletResponse response) {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;int[] numArr = {0,1,2,3,4,5,6,7,8,9};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //先定义一个数组&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;int[] result = new int[10];&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;&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;//生成组果数组&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Random random = new Random();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;for(int i=10;i&amp;gt;0;i--){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;int ran = random.nextInt(i);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //随机生成一个10以内的数&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;result[i-1] = numArr[ran];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//保存该数&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;numArr[ran] = numArr[i-1];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//覆盖已抽出的数&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;request.getSession().setAttribute(&amp;#34;result&amp;#34;, result); //生成后放入Session&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;return mapping.getInputForward();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//转到JSP页面&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;}&lt;br/&gt;上面Action已生成一个数组，只要放进Session，让Servlet取出来进行跟据排列来生成图像&lt;br/&gt;以下是JSP页面代码：&lt;br/&gt;&amp;lt;%@ page language=&amp;#34;java&amp;#34; pageEncoding=&amp;#34;utf-8&amp;#34;%&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;%@ taglib uri=&amp;#34;&lt;a href=&quot;http://struts.apache.org/tags-bean&quot; target=&quot;_blank&quot;&gt;http://struts.apache.org/tags-bean&lt;/a&gt;&amp;#34; prefix=&amp;#34;bean&amp;#34; %&amp;gt;&lt;br/&gt;&amp;lt;%@ taglib uri=&amp;#34;&lt;a href=&quot;http://struts.apache.org/tags-html&quot; target=&quot;_blank&quot;&gt;http://struts.apache.org/tags-html&lt;/a&gt;&amp;#34; prefix=&amp;#34;html&amp;#34; %&amp;gt;&lt;br/&gt;&amp;lt;%@ taglib uri=&amp;#34;&lt;a href=&quot;http://struts.apache.org/tags-logic&quot; target=&quot;_blank&quot;&gt;http://struts.apache.org/tags-logic&lt;/a&gt;&amp;#34; prefix=&amp;#34;logic&amp;#34; %&amp;gt;&lt;br/&gt;&amp;lt;%@ taglib uri=&amp;#34;&lt;a href=&quot;http://struts.apache.org/tags-tiles&quot; target=&quot;_blank&quot;&gt;http://struts.apache.org/tags-tiles&lt;/a&gt;&amp;#34; prefix=&amp;#34;tiles&amp;#34; %&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;script type=&amp;#34;text/javascript&amp;#34;&amp;gt;&lt;br/&gt;&amp;lt;!--&lt;br/&gt;function show(a){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(a==&amp;#39;C&amp;#39;){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;window.pwd.value = &amp;#34;&amp;#34;;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}else if(a==&amp;#39;B&amp;#39;){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var str = window.pwd.value;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var len = str.length;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;window.pwd.value = str.substr(0,len-1);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}else{&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(window.pwd.value.length==6){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;return;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;window.pwd.value += a;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;}&lt;br/&gt;//--&amp;gt;&lt;br/&gt;&amp;lt;/script&amp;gt;&lt;br/&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;#34;-//W3C//DTD HTML 4.01 Transitional//EN&amp;#34;&amp;gt;&lt;br/&gt;&amp;lt;html:html lang=&amp;#34;true&amp;#34;&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;html:base /&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;login.jsp&amp;lt;/title&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;meta http-equiv=&amp;#34;pragma&amp;#34; content=&amp;#34;no-cache&amp;#34;&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;meta http-equiv=&amp;#34;cache-control&amp;#34; content=&amp;#34;no-cache&amp;#34;&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;meta http-equiv=&amp;#34;expires&amp;#34; content=&amp;#34;0&amp;#34;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;meta http-equiv=&amp;#34;keywords&amp;#34; content=&amp;#34;keyword1,keyword2,keyword3&amp;#34;&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;meta http-equiv=&amp;#34;description&amp;#34; content=&amp;#34;This is my page&amp;#34;&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;!--&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; type=&amp;#34;text/css&amp;#34; href=&amp;#34;styles.css&amp;#34;&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;--&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;jsp:useBean id=&amp;#34;result&amp;#34; type=&amp;#34;int[]&amp;#34; scope=&amp;#34;session&amp;#34;/&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;img src=&amp;#34;/XBank/servlet/Cr&amp;#101;atePwdPad&amp;#34; width=&amp;#34;150&amp;#34; height=&amp;#34;190&amp;#34; border=&amp;#34;0&amp;#34; usemap=&amp;#34;#Map&amp;#34;/&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;input id=&amp;#34;pwd&amp;#34; type=&amp;#34;password&amp;#34; maxlength=&amp;#34;6&amp;#34; readonly value=&amp;#34;&amp;#34; name=&amp;#34;abc&amp;#34;/&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;map name=&amp;#34;Map&amp;#34; id=&amp;#34;Map&amp;#34;&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;20,20,50,50&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;${result[0]}&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;60,20,90,50&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;${result[1]}&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;100,20,130,50&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;${result[2]}&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;20,60,50,90&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;${result[3]}&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;60,60,90,90&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;${result[4]}&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;100,60,130,90&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;${result[5]}&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;20,100,50,130&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;${result[6]}&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;60,100,90,130&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;${result[7]}&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;100,100,130,130&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;${result[8]}&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;20,140,50,170&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;${result[9]}&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;60,140,90,170&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;C&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;area shape=&amp;#34;rect&amp;#34; coords=&amp;#34;100,140,130,170&amp;#34; onClick=&amp;#34;javascript:show(&amp;#39;B&amp;#39;)&amp;#34; /&amp;gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;lt;/map&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br/&gt;&amp;lt;/html:html&amp;gt;&lt;br/&gt;&lt;br/&gt;以上JSP代码要注意的是JavaScript的取值，与图片Map的生成。还有就是&amp;lt;img&amp;gt;的src路径，要是Servlet的路径。&lt;br/&gt;&lt;br/&gt;以下是Servlet的代码就是生成图片的代码：&lt;br/&gt;import java.io.IOException;&lt;br/&gt;import java.io.PrintWriter;&lt;br/&gt;&lt;br/&gt;import java.io.*;&lt;br/&gt;import java.net.*;&lt;br/&gt;import javax.imageio.*;&lt;br/&gt;import java.awt.*;&lt;br/&gt;import java.awt.image.*;&lt;br/&gt;&lt;br/&gt;import javax.servlet.*;&lt;br/&gt;import javax.servlet.http.HttpSession;&lt;br/&gt;import javax.servlet.http.HttpServlet;&lt;br/&gt;import javax.servlet.http.HttpServletRequest;&lt;br/&gt;import javax.servlet.http.HttpServletResponse;&lt;br/&gt;&lt;br/&gt;public class Cr&amp;#101;atePwdPad extends HttpServlet {&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public Cr&amp;#101;atePwdPad() {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;super();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public void destroy() {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;super.destroy(); &lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;throws ServletException, IOException {&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;response.setContentType(&amp;#34;image/png&amp;#34;);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;response.setHeader(&amp;#34;Pragma&amp;#34;,&amp;#34;No-cache&amp;#34;);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;response.setHeader(&amp;#34;Cache-Control&amp;#34;,&amp;#34;no-cache&amp;#34;);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;response.setDateHeader(&amp;#34;Expires&amp;#34;, 0);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;HttpSession session=request.getSession();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;int[] numArr = (int[])session.getAttribute(&amp;#34;result&amp;#34;); &lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;final int opWidth = 150;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//外框宽&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;final int opHeight = 190;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//外框高&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;final int ipWidth = 130;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//内框宽&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;final int ipHeight = 170;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//内框高&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;final int cellWidth = 30;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//格子宽&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;final int cellHeight = 30;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//格子高&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;final int padding = 10;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//间隔&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;final int c0x = 20;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//第一格子原点X&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;final int c0y = 20;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//第一格子原点Y&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//创建一个Image图片&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;BufferedImage image = new BufferedImage(opWidth,opHeight,BufferedImage.TYPE_INT_RGB);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Graphics g = image.getGraphics();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.setColor(new Color(0xaa,0xaa,0xaa));&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//设置外框的颜色&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(0, 0, opWidth, opHeight);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.setColor(new Color(0xdd,0xdd,0xdd));&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//设置内框的颜色&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(10, 10, ipWidth, ipHeight);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.setColor(new Color(0xff,0xff,0xff));&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//设置格子的颜色&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;//******************&amp;nbsp;&amp;nbsp; 画格子部份&amp;nbsp;&amp;nbsp; *****************************&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x, c0y, cellWidth, cellHeight);&amp;#160;&amp;#160;&amp;#160;&amp;#160;//画第一个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x+cellWidth+padding, c0y, cellWidth, cellHeight);&amp;#160;&amp;#160;&amp;#160;&amp;#160;//画第二个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x+2*cellWidth+2*padding, c0y, cellWidth, cellHeight);&amp;#160;&amp;#160;&amp;#160;&amp;#160;//画第三个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x, c0y+cellHeight+padding, cellWidth, cellHeight);&amp;#160;&amp;#160;&amp;#160;&amp;#160;//画第四个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x+cellWidth+padding, c0y+cellHeight+padding, cellWidth, cellHeight);//画第五个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x+2*cellWidth+2*padding, c0y+cellHeight+padding, cellWidth, cellHeight);//画第六个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x, c0y+2*cellHeight+2*padding, cellWidth, cellHeight);//画第七个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x+cellWidth+padding, c0y+2*cellHeight+2*padding, cellWidth, cellHeight);//画第八个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x+2*cellWidth+2*padding, c0y+2*cellHeight+2*padding, cellWidth, cellHeight);//画第九个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x, c0y+3*cellHeight+3*padding, cellWidth, cellHeight);//画第十个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x+cellWidth+padding, c0y+3*cellHeight+3*padding, cellWidth, cellHeight);//画第十一个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.fillRect(c0x+2*cellWidth+2*padding, c0y+3*cellHeight+3*padding, cellWidth, cellHeight);//画第十二个格子&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Font font = new Font(&amp;#34;Times New Roman&amp;#34;,Font.PLAIN,18);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.setFont(font);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.setColor(new Color(0x00,0x00,0x00));&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(String.valueOf(numArr[0]), 32, 40);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//画第一个数字&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(String.valueOf(numArr[1]), 72, 40);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//画第二个数字...下同&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(String.valueOf(numArr[2]), 112, 40);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(String.valueOf(numArr[3]), 32, 80);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(String.valueOf(numArr[4]), 72, 80);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(String.valueOf(numArr[5]), 112, 80);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(String.valueOf(numArr[6]), 32, 120);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(String.valueOf(numArr[7]), 72, 120);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(String.valueOf(numArr[8]), 112, 120);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(String.valueOf(numArr[9]), 32, 160);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;font = new Font(&amp;#34;Times New Roman&amp;#34;,Font.PLAIN,12);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//设置字体&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.setFont(font);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(&amp;#34;Clean&amp;#34;, 62, 160);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//画Clean按钮&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.drawString(&amp;#34;Back&amp;#34;, 103, 160);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;//画Back按钮&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;g.dispose();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;ServletOutputStream responseOutputStream =response.getOutputStream();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;ImageIO.write(image, &amp;#34;PNG&amp;#34;, responseOutputStream);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;responseOutputStream.flush();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;responseOutputStream.close();&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;throws ServletException, IOException {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;doGet(request,response);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;public void init() throws ServletException {&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;// Put your code here&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;这里要注意的是图片的位置，与文字的位置，还要修改输出类型，类型为图片。&lt;br/&gt;&lt;br/&gt;以下给出这三个文件的源文件打包：&lt;br/&gt;&lt;img src=&quot;http://www.jiangzone.com.cn/images/download.gif&quot; alt=&quot;下载文件&quot; style=&quot;margin:0px 2px -4px 0px&quot;/&gt; &lt;a href=&quot;http://www.jiangzone.com.cn/attachments/month_0709/8200791617275.rar&quot; target=&quot;_blank&quot;&gt;点击下载此文件&lt;/a&gt;&lt;br/&gt;</description><category>JAVA技术</category><pubDate>Tue, 11 Sep 2007 17:27:27 +0800</pubDate><author>jiang8066@gmail.com(admin)</author><guid isPermaLink="false">http://www.jiangzone.com.cn/default.asp?id=6</guid><dc:creator>jiang8066@gmail.com(admin)</dc:creator><fs:srclink>http://www.jiangzone.com.cn/default.asp?id=6</fs:srclink><fs:srcfeed>http://www.jiangzone.com.cn/jiang/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/jiangzone/~5938770/20212123/4067189</fs:itemid></item><item><title>Flex + PHP 的天气预报</title><link>http://item.feedsky.com/~feedsky/jiangzone/~5938770/20212124/4067189/1/item.html</link><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这几天无聊着，打开163邮箱，看到右上角的天气信息，突然心血来潮，自已也做个天气信息的小模块放在Blog上，就是左边侧栏的那个，其实之前都做过，只不过是用Java来解析，Flex来显示，而已之前的那个是解析www.weathercn.com的信息的，但现在该站的天气页面改版了，所以不得不重新做，既然如此，就拿163的来做吧。原理都是一样，用PHP读取163的天气信息网页，再用正则表达式解析网页的内容，提取有用的天气信息，组织好成XML格式，之后Flex用WebService来读取该PHP，得到XML数据，再相应的显示。&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;其实这并不难，打开的我163邮箱，查看它的网页源码，经过一番的查找分析，找到它获取天气信息的网页：&lt;a href=&quot;http://mimg.163.com/tianqi/city/59287.html&quot; target=&quot;_blank&quot;&gt;http://mimg.163.com/tianqi/city/59287.html&lt;/a&gt;&amp;nbsp;&amp;nbsp;呵呵，还是Html的哦，网易的将动态的天气生成静态的页面，我们访问起来，也不太占服务器资源吧，因为天气也是经常访问的。看看源代码，就几行Html代码，正合我的需求，免得我的PHP分析大量的代码占点资源。不过有点要注意，网易把每个城市的代号生成一个页面，即是一个城市，一个天气页面，上面那个URL是广州的，就是说 59287 就是广州的城市代码，在PHP里访问时，要跟据用户选的是哪个城市，相对应的修改那个号码就行了，如：&lt;br/&gt;$url = &amp;#34;&lt;a href=&quot;http://mimg.163.com/tianqi/city/&quot; target=&quot;_blank&quot;&gt;http://mimg.163.com/tianqi/city/&lt;/a&gt;&amp;#34;.$_GET[&amp;#39;city&amp;#39;].&amp;#34;.html&amp;#34;;&lt;br/&gt;这样，你访问PHP时，要传一个城市代码参数，至于网易定义的城市代码，我这里就不列出来了，太多太长了，也找了我不少时间。我放在Flex的源码里，可以下载我的源码看看。&lt;br/&gt;以下是PHP页面的代码：&lt;br/&gt;&amp;lt;?php&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;include(&amp;#34;class.Chinese.php&amp;#34;);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#导入字符集转换的类&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$codeTableDir = &amp;#34;./config/&amp;#34;;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#指定字符码表的路径&lt;br/&gt;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$url = &amp;#34;&lt;a href=&quot;http://mimg.163.com/tianqi/city/&quot; target=&quot;_blank&quot;&gt;http://mimg.163.com/tianqi/city/&lt;/a&gt;&amp;#34;.$_GET[&amp;#39;city&amp;#39;].&amp;#34;.html&amp;#34;;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#获取城市代码，组成完整的URL&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$fh = fopen($url,&amp;#39;r&amp;#39;);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#读取该URL获取内容&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;while(!feof($fh)){&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$content .= fread($fh,128);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#读取全部内容&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$content = new Chinese(&amp;#34;GB2312&amp;#34;,&amp;#34;UTF8&amp;#34;,$content,$codeTableDir);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#转换字符码，GB转UTF8&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$content = $content-&amp;gt;ConvertIT();&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#转换&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;eregi(&amp;#39;(&amp;lt;span class=&amp;#34;wetCityName&amp;#34;&amp;gt;)([^/]*)(&amp;lt;/span&amp;gt;)&amp;#39;,$content,$arr);&amp;#160;&amp;#160;&amp;#160;&amp;#160;#找出表示城市的内容&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$city = $arr[2];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;eregi(&amp;#39;(&amp;lt;span class=&amp;#34;wetDate&amp;#34;&amp;gt;)(.*)(&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;)&amp;#39;,$content,$arr);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#找出表示日期的内容&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$date = $arr[2];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$wea = split(&amp;#39;txtAlgCen fRig handle&amp;#39;,$content);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#分开今天与明天&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;eregi(&amp;#39;(&amp;lt;div class=&amp;#34;wetSts&amp;#34;&amp;gt;)([^&amp;lt;]*)(&amp;lt;/div&amp;gt;)&amp;#39;,$wea[0],$arr);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#找出表示今日天气的内容&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$info1 = $arr[2];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;eregi(&amp;#39;(&amp;lt;div class=&amp;#34;wetSts&amp;#34;&amp;gt;)([^&amp;lt;]*)(&amp;lt;/div&amp;gt;)&amp;#39;,$wea[1],$arr);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;#找出表示明日天气的内容&amp;nbsp;&amp;nbsp; 下同&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$info2 = $arr[2];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;eregi(&amp;#39;(&amp;lt;/b&amp;gt;)([^&amp;lt;]*)(&amp;lt;/div&amp;gt;)&amp;#39;,$wea[0],$arr);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$temp1 = $arr[2];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;eregi(&amp;#39;(&amp;lt;/b&amp;gt;)([^&amp;lt;]*)(&amp;lt;/div&amp;gt;)&amp;#39;,$wea[1],$arr);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$temp2 = $arr[2];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;eregi(&amp;#39;(class=&amp;#34;wetDico )(.*)(&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;)&amp;#39;,$wea[0],$arr);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$pic1 = $arr[2];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;eregi(&amp;#39;(class=&amp;#34;wetDico )(.*)(&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;)&amp;#39;,$wea[1],$arr);&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$pic2 = $arr[2];&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;echo &amp;#34;&amp;lt;?xml version=\&amp;#34;1.0\&amp;#34; encoding=\&amp;#34;utf-8\&amp;#34; ?&amp;gt;&amp;#34;;&lt;br/&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;echo &amp;#34;\n&amp;#34;;&lt;br/&gt;?&amp;gt;&lt;br/&gt;&amp;lt;weather&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;city&amp;gt;&amp;lt;?= $city ?&amp;gt;&amp;lt;/city&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;date&amp;gt;&amp;lt;?= $date ?&amp;gt;&amp;lt;/date&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;today&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;wea&amp;gt;&amp;lt;?= $info1 ?&amp;gt;&amp;lt;/wea&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;temp&amp;gt;&amp;lt;?= $temp1 ?&amp;gt;&amp;lt;/temp&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;pic&amp;gt;&amp;lt;?= $pic1 ?&amp;gt;&amp;lt;/pic&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/today&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tomorrow&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;wea&amp;gt;&amp;lt;?= $info2 ?&amp;gt;&amp;lt;/wea&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;temp&amp;gt;&amp;lt;?= $temp2 ?&amp;gt;&amp;lt;/temp&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;pic&amp;gt;&amp;lt;?= $pic2 ?&amp;gt;&amp;lt;/pic&amp;gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tomorrow&amp;gt;&lt;br/&gt;&amp;lt;/weather&amp;gt;&lt;br/&gt;&lt;br/&gt;以上有几点要注意：&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1。由于网易里的网页是用GB2312编码的，而Flex里接收的XML要UTF-8编码才会正确读出，所以要将获取的网易里的数据进行转码，这问题刚开始时，老是乱码，搞到心烦，后来发现网易的Html的头信息里 发现是GB2312的编码，郁闷了半天，之后上网找了个中文转码的类，下载来直接套用。&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2。获取回来的天气信息的Html是分今天与明天的天气信息，而里面的格式也是一样的，所以，用正则查找时，只找到最先的那个，所以要先找个今天与明天的分界点，将其分离开来再各自解析里面的内容，得出今天的天气与明天的天气。&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3。写输出XML时，格式要正确，不然Flex里读取会有麻烦，还有，encoding一定要是UTF-8，还要将该PHP文件保存成UTF-8格式，我用DW写该PHP时，因为我的DW新建文件时，默认是ISO8859-1的，所以要将其文档编码格式改为UTF-8来保存。&lt;br/&gt;&lt;br/&gt;PHP完工之后，来到Flex这边，画好界面，添加代码如下：&lt;br/&gt;先加一个HttpService标签 ：&lt;br/&gt;&amp;lt;mx:HTTPService id=&amp;#34;hs&amp;#34; showBusyCursor=&amp;#34;true&amp;#34; method=&amp;#34;GET&amp;#34; result=&amp;#34;{hsResult(event);}&amp;#34; fault=&amp;#34;{hsFault(event);}&amp;#34; /&amp;gt;&lt;br/&gt;（事件响应方法我就不在这里贴出来了，可下载源码看）&lt;br/&gt;当下拉选框选中城市之后，判断用户选中的是哪个城市，再对照该城市的代号，组合成URL&lt;br/&gt;hs.url = &amp;#34;&lt;a href=&quot;http://www.jiangzone.com.cn/jiang/weather/weather.php?city=&quot; target=&quot;_blank&quot;&gt;http://www.jiangzone.com.cn/jiang/weather/weather.php?city=&lt;/a&gt;&amp;#34; + cityvalues[i];&lt;br/&gt;hs.send();&lt;br/&gt;结果返回时，再相应的赋值：&lt;br/&gt;lblCity.text = event.result.weather.city;&lt;br/&gt;lblDate.text = event.result.weather.date;&lt;br/&gt;lblWea.text = event.result.weather.today.wea;&lt;br/&gt;weather对应XML里的&amp;lt;weather&amp;gt;根标签，city对应XML里的&amp;lt;city&amp;gt;标签。&lt;br/&gt;&lt;br/&gt;OK，修改一下，大功告成！&lt;br/&gt;以下是源码：&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://www.jiangzone.com.cn/images/download.gif&quot; alt=&quot;下载文件&quot; style=&quot;margin:0px 2px -4px 0px&quot;/&gt; &lt;a href=&quot;http://www.jiangzone.com.cn/attachments/month_0709/t2007916122822.rar&quot; target=&quot;_blank&quot;&gt;点击下载此文件&lt;/a&gt;&lt;br/&gt;</description><category>Flash/Flex</category><pubDate>Sat, 08 Sep 2007 12:29:31 +0800</pubDate><author>jiang8066@gmail.com(admin)</author><guid isPermaLink="false">http://www.jiangzone.com.cn/default.asp?id=3</guid><dc:creator>jiang8066@gmail.com(admin)</dc:creator><fs:srclink>http://www.jiangzone.com.cn/default.asp?id=3</fs:srclink><fs:srcfeed>http://www.jiangzone.com.cn/jiang/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/jiangzone/~5938770/20212124/4067189</fs:itemid></item><item><title>[转载] 使用amfphp1.9beta+flash9(as3)+corelib保存图片</title><link>http://item.feedsky.com/~feedsky/jiangzone/~5938770/20332555/4067189/1/item.html</link><description>adobe的一些as3类库提供给google code(&lt;a href=&quot;http://actionscri&amp;#112;t3libraries.riaforge.org/&quot; target=&quot;_blank&quot;&gt;http://actionscri&amp;#112;t3libraries.riaforge.org/&lt;/a&gt;)可以随意下载...&lt;br/&gt;其中的as3corelib里面包含image的png和jpg类和json(序列化数据)类包.&lt;br/&gt;&lt;br/&gt;同时amfphp1.9beta的发布可以让你用remoting来传递amf3格式的数据.&lt;br/&gt;&lt;br/&gt;那么有了这两个条件我们就可以用他们来直接生成png和jpg格式的图片...&lt;br/&gt;&lt;br/&gt;使用方法也是比较简单,使用前面我提供的方法可以很方便的实现...&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;as3corelib里面的png和jpg类&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://www.jiangzone.com.cn/images/download.gif&quot; alt=&quot;下载文件&quot; style=&quot;margin:0px 2px -4px 0px&quot;/&gt; &lt;a href=&quot;http://www.jiangzone.com.cn/attachments/month_0709/r2007917165754.rar&quot; target=&quot;_blank&quot;&gt;点击下载此文件&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;as代码:&lt;br/&gt;//------------------------------------------------------------------------------------&lt;br/&gt;//在舞台上放一个mc名字为a,mc包含一些随意的图形&lt;br/&gt;import flash.net.*;&lt;br/&gt;import flash.display.*;&lt;br/&gt;var hostName:String = &amp;#34;&lt;a href=&quot;http://localhost/amfphp/&quot; target=&quot;_blank&quot;&gt;http://localhost/amfphp/&lt;/a&gt;&amp;#34;;&lt;br/&gt;var gatewayUrl:String = hostName+&amp;#34;gateway.php&amp;#34;;&lt;br/&gt;////////////////////////////&lt;br/&gt;var bpd:BitmapData = new BitmapData(a.width, a.height);&lt;br/&gt;bpd.draw(a);&lt;br/&gt;//var jpegEnc:JPEGEncoder = new JPEGEncoder(80);&lt;br/&gt;//var dat:ByteArray = jpegEnc.encode(bpd);&lt;br/&gt;var dat:ByteArray = PNGEncoder.encode(bpd);&lt;br/&gt;//&lt;br/&gt;var nc:NetConnection = new NetConnection();&lt;br/&gt;//nc.objectEncoding = 0;&lt;br/&gt;nc.connect(gatewayUrl);&lt;br/&gt;//&lt;br/&gt;nc.call(&amp;#34;SavePic.save&amp;#34;,new Responder(onResult,onFault),dat);&lt;br/&gt;//nc.call(&amp;#34;SavePic.test&amp;#34;,new Responder(onResult,onFault),&amp;#34;h..roading&amp;#34;);&lt;br/&gt;/////////////////////////////&lt;br/&gt;function onResult(re:Object)&lt;br/&gt;{&lt;br/&gt; trace(re);&lt;br/&gt;}&lt;br/&gt;function onFault(re:Object)&lt;br/&gt;{&lt;br/&gt; trace(re);&lt;br/&gt; for(var i in re)&lt;br/&gt; trace(i+&amp;#34;=&amp;gt;&amp;#34;+re[i]);&lt;br/&gt;}&lt;br/&gt;//----------------------------------------------------------------------------------------------&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;php代码:&lt;br/&gt;//-----------------------------------------------------------------------------------------------&lt;br/&gt;&amp;lt;?php&lt;br/&gt;&lt;br/&gt;class SavePic&lt;br/&gt;{&lt;br/&gt;&lt;br/&gt; function Tuya()&lt;br/&gt; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;$this-&amp;gt;methodTable = array(&lt;br/&gt;&amp;nbsp;&amp;nbsp; &amp;#34;save&amp;#34; =&amp;gt; array(&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#34;access&amp;#34; =&amp;gt; &amp;#34;remote&amp;#34;&lt;br/&gt;&amp;nbsp;&amp;nbsp; ),&lt;br/&gt;&amp;nbsp;&amp;nbsp; &amp;#34;test&amp;#34; =&amp;gt; array(&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#34;access&amp;#34; =&amp;gt; &amp;#34;remote&amp;#34;&lt;br/&gt;&amp;nbsp;&amp;nbsp; )&lt;br/&gt;&amp;nbsp;&amp;nbsp;);&lt;br/&gt; }&lt;br/&gt; function test($str)&lt;br/&gt; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;return $str;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; }&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; function save($data)&lt;br/&gt; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;$name = time().&amp;#39;.jpg&amp;#39;; //png&lt;br/&gt;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;$im = fopen($name,&amp;#39;a&amp;#39;);&lt;br/&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;fwrite($im,$data);&lt;br/&gt; &lt;br/&gt;&amp;nbsp;&amp;nbsp;fclose($im);&lt;br/&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;return $name;&lt;br/&gt; }&lt;br/&gt;}&lt;br/&gt;?&amp;gt;&lt;br/&gt;</description><category>Flash/Flex</category><pubDate>Mon, 03 Sep 2007 16:51:15 +0800</pubDate><author>jiang8066@gmail.com(admin)</author><guid isPermaLink="false">http://www.jiangzone.com.cn/default.asp?id=7</guid><dc:creator>jiang8066@gmail.com(admin)</dc:creator><fs:srclink>http://www.jiangzone.com.cn/default.asp?id=7</fs:srclink><fs:srcfeed>http://www.jiangzone.com.cn/jiang/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/jiangzone/~5938770/20332555/4067189</fs:itemid></item><item><title>JspSmartUpload 中文问题！</title><link>http://item.feedsky.com/~feedsky/jiangzone/~5938770/20212125/4067189/1/item.html</link><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;上几天，要做Jsp文件上传，上网Google了几下，发现多是用JspSmartUpload组件来实现上传，于是想将其应用到我的Struts应用里头，刚开始不太会用，随便写了个表单页面，就一个文件表单域，上传，OK，正确接收，但当应用到自已的项目里时，发现其它表单的信息出现乱码了，中文问题又出来了。&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;但是确定是加上了这句：enctype=&amp;#34;multipart/form-data&amp;#34;，还是不行，文件是可以正确获取了，只是其它的Text Input表单传来的中文怎么转换编码都不行，不能正确还原中文，我用的是UTF-8编码。我想，这应该是JspSmartUpload的问题吧，上网找了找，很多都没说过这问题，有很多文章都是说教你怎么用JspSmartUpload上传文件等等的，但那些例子都是只上传一个文件表单，没有混合上传与普通表单的信息。&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;郁闷了半天，既然是组件的问题，我想到想看看修改它的源码来实现中文混合表单上传，我下载下来的都是Jar包的，都是已编译好的，又没时间上网找源码了，只好反编译一下，修改，再重新编译。唉，编译下来的类里面的变量名等等都很混乱，看起来有点麻烦，没办法了，一直跟踪运行下去吧，顺腾摸瓜了。把几个 Class反编译下来后，找到了根源，在SmartUpload.class里，在upload函数下，找到这里 String s11 = new String(m_binArray,m_startData,(m_endData - m_startData) + 1); 经测试，这里是返回表单内容信息的String，看看他的构造函数，它没有定义该String的Chartset，所以当然中文会出现乱码了，用的是默认的西方ISO8859-1的编码，所以中文在这里没有得到正确转换。为了方便起建，我在该类定义了一个静态变量 ： private static String charset = &amp;#34;iso8859-1&amp;#34;; 现写个get&amp;nbsp;&amp;nbsp;set方法，在刚先的表单内容的String里改一下，使用四个参数的构造函数，最后那个参数为编码字符集参数，写成 String s11 = new String(m_binArray,m_startData,(m_endData - m_startData) + 1,charset);&amp;nbsp;&amp;nbsp;OK，在使用时，将SmartUpload构造出来时，再设置它将要使用的字符集，之后使用混合上传，一切OK.</description><category>JAVA技术</category><pubDate>Mon, 20 Aug 2007 12:32:34 +0800</pubDate><author>jiang8066@gmail.com(admin)</author><guid isPermaLink="false">http://www.jiangzone.com.cn/default.asp?id=4</guid><dc:creator>jiang8066@gmail.com(admin)</dc:creator><fs:srclink>http://www.jiangzone.com.cn/default.asp?id=4</fs:srclink><fs:srcfeed>http://www.jiangzone.com.cn/jiang/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/jiangzone/~5938770/20212125/4067189</fs:itemid></item><item><title>新Blog开通，创造技术知识共享！</title><link>http://item.feedsky.com/~feedsky/jiangzone/~5938770/20212126/4067189/1/item.html</link><description>今天终于有时间开通个Blog了，主要发表讨论技术上的问题。怀着开源共享性质，如果大家觉得我的文章对你有用或是有代表性的话，欢迎无条件转载，让更多的人掌握更好的技术。此Blog主要是集中Java技术，Flash/Flex技术，还有PHP技术（我也只是初学PHP） &lt;img src=&quot;http://www.jiangzone.com.cn/images/smilies/Face_12.gif&quot; border=&quot;0&quot; style=&quot;margin:0px 0px -2px 0px&quot; alt=&quot;&quot;/&gt;。迟点之后如果时间允许，会再开通Linux 与 C模块！</description><category>一切随心</category><pubDate>Thu, 02 Aug 2007 19:44:08 +0800</pubDate><author>jiang8066@gmail.com(admin)</author><guid isPermaLink="false">http://www.jiangzone.com.cn/default.asp?id=5</guid><dc:creator>jiang8066@gmail.com(admin)</dc:creator><fs:srclink>http://www.jiangzone.com.cn/default.asp?id=5</fs:srclink><fs:srcfeed>http://www.jiangzone.com.cn/jiang/blog/feed.asp</fs:srcfeed><fs:itemid>feedsky/jiangzone/~5938770/20212126/4067189</fs:itemid></item></channel></rss>