﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Kelven Cheung-文章分类-jsp/servlet</title><link>http://www.blogjava.net/zhangrenquan/category/40528.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 29 Jun 2009 09:46:23 GMT</lastBuildDate><pubDate>Mon, 29 Jun 2009 09:46:23 GMT</pubDate><ttl>60</ttl><item><title>实现log4j日志文件在相对路径保存</title><link>http://www.blogjava.net/zhangrenquan/articles/284624.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Mon, 29 Jun 2009 08:11:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/articles/284624.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/284624.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/articles/284624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/284624.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/284624.html</trackback:ping><description><![CDATA[<p><span class="Apple-style-span" style="font-weight: normal; font-size: 12px; word-spacing: 0px; text-transform: none; color: rgb(0,0,0); text-indent: 0px; line-height: 18px; font-style: normal; white-space: normal; letter-spacing: normal; border-collapse: separate; text-align: left; font-variant: normal; orphans: 2; widows: 2"><span class="hilite1" style="background-color: rgb(255,255,0)">Log4j</span>日志输出路径只能设定成绝对路径，这个在web项目中就变得很不方便了。<span class="Apple-converted-space"> </span><br />
比如我想要设定日志保存在webapp/log<span class="Apple-converted-space"> </span><br />
<br />
参考了网上资料：<span class="Apple-converted-space"> </span><br />
<a style="color: rgb(16,138,198); text-decoration: underline" href="http://hi.baidu.com/suofang/blog/item/6cf2befbd1ff07234f4aea90.html" target="_blank">http://hi.baidu.com/suofang/blog/item/6cf2befbd1ff07234f4aea90.html</a><span class="Apple-converted-space"> </span><br />
下面是引入内容：<span class="Apple-converted-space"> </span><br />
<br />
方法一主要是扩展了<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>的RollingFileAppender类，其他的FileAppender同样道理。扩展的方法，就是用一个子类去覆盖setFile方法，这个方法在<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>读取配置文件生成appender的时候调用，传入的就是配置文件中的路径，这样我就可以按照自己的想法在路径前面加上根路径了。这种方法可以在<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>.properties中用相对路径自由配置<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>.appender.A1.File属性来决定生成的日志相对web应用根目录的位置。<span class="Apple-converted-space"> </span><br />
<br />
方法二是利用服务器vm中已经存在的环境变量如${catalina.home}来设置相对于${catalina.home}的日志路径，日志只能放到服务器子目录里，而且如果是用的其它服务器，则要改对应的环境变量。此方法平台移植不方便。<span class="Apple-converted-space"> </span><br />
<br />
方法三是扩展ActionServlet类，覆盖其init()方法，新方法中载入<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>.properties位置的参数，可以自由配置<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>的配置文件的名字和存放位置。也可自由配置<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>日志文件的相对于当前应用的路径。<span class="Apple-converted-space"> </span><br />
<br />
对于第三个方法，作者提出了个问题：<span class="Apple-converted-space"> </span><br />
<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>配置文件的位置，不让其在<span class="hilite2" style="background-color: rgb(85,255,85)">web-inf</span>/classes目录，因为在加载此Servlet之前，服务器如tomcat启动时会自动搜索<span class="hilite2" style="background-color: rgb(85,255,85)">web-inf</span>目录和<span class="hilite2" style="background-color: rgb(85,255,85)">web-inf</span>/classes目录中<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>.properties文件，如有则自动加载。<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>属性文件加载后,由于该属性文件中<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>.appender.A1.File的值用的是相对路径，自动加载配置便会出错：<span class="Apple-converted-space"> </span><br />
<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>:ERROR setFile(null,true) call failed.<span class="Apple-converted-space"> </span><br />
java.io.FileNotFoundException:<span class="Apple-converted-space"> </span><span class="hilite2" style="background-color: rgb(85,255,85)">WEB-INF</span>\logs\bysxxglxt.log<span class="Apple-converted-space"> </span><br />
(系统找不到指定的路径。)<span class="Apple-converted-space"> </span><br />
<br />
尽管后面加载扩展的ActionServlet中正确设置了<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>属性文件并正常加载了，但还是报的这个错，怪不爽的。只有更改<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>属性文件名字或者更改其存放位置，让其不能自动加载了，不过还是有两个警告：<span class="Apple-converted-space"> </span><br />
<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).<span class="Apple-converted-space"> </span><br />
<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>:WARN Please initialize the<span class="Apple-converted-space"> </span><span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span><span class="Apple-converted-space"> </span>system properly.<span class="Apple-converted-space"> </span><br />
<br />
新的发现：<span class="Apple-converted-space"> </span><br />
由于spring也会加载<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>.properties，如果加载不到就往控制台打log信息，总觉得有些碍眼，于是想办法去掉。Spring提供了一个Log4jConfigListener，本身就能通过web.xml中配置来指定位置加载<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>配置文件和log输出路径，注意该listener需要放在spring的Listener之前。<span class="Apple-converted-space"> </span><br />
事实上，Log4jConfigListener更适合<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>在web工程中使用，原因如下：<span class="Apple-converted-space"> </span><br />
1. 动态的改变记录级别和策略，不需要重启Web应用，如《Effective Enterprise Java》所说。<span class="Apple-converted-space"> </span><br />
&nbsp;&nbsp; 2. 把log文件定在 /<span class="hilite2" style="background-color: rgb(85,255,85)">WEB-INF</span>/logs/ 而不需要写绝对路径。<span class="Apple-converted-space"> </span><br />
因为 系统把web目录的路径压入一个叫webapp.root的系统变量。这样写log文件路径时不用写绝对路径了.<span class="Apple-converted-space"> </span><br />
<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>.appender.logfile.File=${webapp.root}/<span class="hilite2" style="background-color: rgb(85,255,85)">WEB-INF</span>/logs/myfuse.log<span class="Apple-converted-space"> </span><br />
&nbsp;&nbsp; 3. 可以把<span class="hilite1" style="background-color: rgb(255,255,0)">log4j</span>.properties和其他properties一起放在/<span class="hilite2" style="background-color: rgb(85,255,85)">WEB-INF</span>/ ，而不是Class-Path。<span class="Apple-converted-space"> </span><br />
&nbsp;&nbsp; 4.log4jRefreshInterval为60000表示 开一条watchdog线程每60秒扫描一下配置文件的变化;<span class="Apple-converted-space"> </span><br />
&nbsp;&nbsp; 在web.xml 添加<span class="Apple-converted-space"> </span><br />
</p>
<div class="dp-highlighter" style="padding-right: 1px; padding-left: 1px; font-size: 12px; padding-bottom: 1px; margin-left: 9px; overflow: auto; width: 97%; padding-top: 1px; background-color: transparent">
<div class="bar">
<div class="tools" style="padding-right: 3px; padding-left: 3px; font-weight: bold; padding-bottom: 3px; margin: 0px; color: black; padding-top: 3px; text-align: left">Xml代码<span class="Apple-converted-space"> </span></embed></div>
</div>
<ol class="dp-xml" style="border-right: rgb(209,215,220) 1px solid; padding-right: 0px; border-top: rgb(209,215,220) 1px solid; padding-left: 0px; font-size: 1em; padding-bottom: 2px; margin: 0px 0px 1px; border-left: rgb(209,215,220) 1px solid; color: rgb(43,145,175); line-height: 1.4em; padding-top: 2px; border-bottom: rgb(209,215,220) 1px solid; list-style-type: decimal; background-color: rgb(255,255,255)">
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black"><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">context-param</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp;</span></span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">param-name</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">log4jConfigLocation</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;/</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">param-name</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp;</span></span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">param-value</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black"><span class="hilite2" style="color: black; background-color: rgb(85,255,85)">WEB-INF</span>/<span class="hilite1" style="color: black; background-color: rgb(255,255,0)">log4j</span>.properties</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;/</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">param-value</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp;</span></span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black"><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;/</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">context-param</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp;</span></span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black">&nbsp;&nbsp;</span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black"><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">context-param</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp;</span></span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">param-name</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">log4jRefreshInterval</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;/</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">param-name</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp;</span></span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">param-value</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">60000</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;/</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">param-value</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp;</span></span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black"><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;/</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">context-param</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp;</span></span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black">&nbsp;&nbsp;</span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black"><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">listener</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp;</span></span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">listener-class</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">org.springframework.web.util.Log4jConfigListener</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;/</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">listener-class</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp;</span></span>
    <li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: rgb(209,215,220) 1px solid; line-height: 18px; padding-top: 0px; background-color: rgb(250,250,250)"><span style="color: black"><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&lt;/</span><span class="tag-name" style="font-weight: bold; color: rgb(0,102,153)">listener</span><span class="tag" style="font-weight: bold; color: rgb(0,102,153)">&gt;</span><span style="color: black">&nbsp;&nbsp; <br />
    </span></span></li>
</ol>
</div>
</span><img src ="http://www.blogjava.net/zhangrenquan/aggbug/284624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2009-06-29 16:11 <a href="http://www.blogjava.net/zhangrenquan/articles/284624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp验证码</title><link>http://www.blogjava.net/zhangrenquan/articles/284617.html</link><dc:creator>kelven</dc:creator><author>kelven</author><pubDate>Mon, 29 Jun 2009 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/zhangrenquan/articles/284617.html</guid><wfw:comment>http://www.blogjava.net/zhangrenquan/comments/284617.html</wfw:comment><comments>http://www.blogjava.net/zhangrenquan/articles/284617.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhangrenquan/comments/commentRss/284617.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhangrenquan/services/trackbacks/284617.html</trackback:ping><description><![CDATA[<p>&lt;%@ page language="java" pageEncoding="UTF-8"%&gt;<br />
&lt;%@ pagecontentType<br />
="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*,com.swetake.util.Qrcode"%&gt;<br />
&lt;%!Color getRandColor(int fc, int bc) {//给定范围获得随机颜色<br />
&nbsp;&nbsp; Random random = new Random();<br />
&nbsp;&nbsp; if (fc &gt; 255)<br />
&nbsp;&nbsp;&nbsp; fc = 255;<br />
&nbsp;&nbsp; if (bc &gt; 255)<br />
&nbsp;&nbsp;&nbsp; bc = 255;<br />
&nbsp;&nbsp; int r = fc + random.nextInt(bc - fc);<br />
&nbsp;&nbsp; int g = fc + random.nextInt(bc - fc);<br />
&nbsp;&nbsp; int b = fc + random.nextInt(bc - fc);<br />
&nbsp;&nbsp; return new Color(r, g, b);<br />
}%&gt;<br />
&lt;%<br />
//设置页面不缓存<br />
response.setHeader("Pragma", "No-cache");<br />
response.setHeader("Cache-Control", "no-cache");<br />
response.setDateHeader("Expires", 0);</p>
<p>//&nbsp;&nbsp;&nbsp; 在内存中创建图象<br />
int width = 60, height = 20;<br />
BufferedImage image = new BufferedImage(width, height,<br />
&nbsp;&nbsp;&nbsp; BufferedImage.TYPE_INT_RGB);</p>
<p>//&nbsp;&nbsp;&nbsp; 获取图形上下文<br />
Graphics g = image.getGraphics();</p>
<p>//生成随机类<br />
Random random = new Random();</p>
<p>//&nbsp;&nbsp;&nbsp; 设定背景色<br />
g.setColor(getRandColor(200, 250));<br />
g.fillRect(0, 0, width, height);</p>
<p>//设定字体<br />
g.setFont(new Font("Comic&nbsp;&nbsp;&nbsp; Sans&nbsp;&nbsp;&nbsp; MS", Font.PLAIN, 20));</p>
<p>//画边框<br />
//g.setColor(new&nbsp;&nbsp;&nbsp; Color());<br />
//g.drawRect(0,0,width-1,height-1);</p>
<p>//&nbsp;&nbsp;&nbsp; 随机产生155条干扰线，使图象中的认证码不易被其它程序探测到<br />
g.setColor(getRandColor(160, 200));<br />
for (int i = 0; i &lt; 155; i++) {<br />
&nbsp;&nbsp; int x = random.nextInt(width);<br />
&nbsp;&nbsp; int y = random.nextInt(height);<br />
&nbsp;&nbsp; int xl = random.nextInt(12);<br />
&nbsp;&nbsp; int yl = random.nextInt(12);<br />
&nbsp;&nbsp; g.drawLine(x, y, x + xl, y + yl);<br />
}</p>
<p>//&nbsp;&nbsp;&nbsp; 取随机产生的认证码(4位数字)<br />
String sRand = "";<br />
for (int i = 0; i &lt; 4; i++) {<br />
&nbsp;&nbsp; String rand = String.valueOf(random.nextInt(10));<br />
&nbsp;&nbsp; sRand += rand;<br />
&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; 将认证码显示到图象中<br />
&nbsp;&nbsp; g.setColor(new Color(20 + random.nextInt(110), 20 + random&nbsp;&nbsp; .nextInt(110), 20 + random.nextInt(110)));<br />
&nbsp;&nbsp; //调用函数出来的颜色相同，可能是因为种子太接近，所以只能直接生成<br />
&nbsp;&nbsp; g.drawString(rand, 13 * i + 6, 16);<br />
}</p>
<p>//&nbsp;&nbsp;&nbsp; 将认证码存入SESSION<br />
session.setAttribute("rand", sRand);</p>
<p><br />
//&nbsp;&nbsp;&nbsp; 图象生效<br />
g.dispose();<br />
out.clear();<br />
out = pageContext.pushBody();</p>
<p>//&nbsp;&nbsp;&nbsp; 输出图象到页面<br />
ImageIO.write(image, "JPEG", response.getOutputStream());<br />
%&gt;</p>
<p>&nbsp;<br />
<br />
<span style="color: red">注:要先下载com.swetake.util.Qrcode包</span><br />
</p><img src ="http://www.blogjava.net/zhangrenquan/aggbug/284617.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhangrenquan/" target="_blank">kelven</a> 2009-06-29 15:47 <a href="http://www.blogjava.net/zhangrenquan/articles/284617.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>