﻿<?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-feifeirao-文章分类-产生验证码例子</title><link>http://www.blogjava.net/feifeirao/category/22898.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 14 Jun 2007 23:10:35 GMT</lastBuildDate><pubDate>Thu, 14 Jun 2007 23:10:35 GMT</pubDate><ttl>60</ttl><item><title>java 彩色验证码（单独例子） 转帖</title><link>http://www.blogjava.net/feifeirao/articles/123606.html</link><dc:creator>五味子</dc:creator><author>五味子</author><pubDate>Tue, 12 Jun 2007 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/feifeirao/articles/123606.html</guid><wfw:comment>http://www.blogjava.net/feifeirao/comments/123606.html</wfw:comment><comments>http://www.blogjava.net/feifeirao/articles/123606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feifeirao/comments/commentRss/123606.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feifeirao/services/trackbacks/123606.html</trackback:ping><description><![CDATA[<div class=storyTitle><a href="http://okone96.itpub.net/post/9033/223202">java 验证码 彩色验证码</a> </div>
<div class=noDisplay>=========================================================== </div>
<div class=storyInfo>
<h1>java 验证码 彩色验证码</h1>
作者: okone96(http://okone96.itpub.net)<br>发表于: 2006.10.23 10:31<br>分类: JAVA <br>出处: http://okone96.itpub.net/post/9033/223202<br>--------------------------------------------------------------- <br></div>
<div class=storytext>
<p><a href="http://zhan.zhmy.com/archives/2006/78472.shtml"><font size=2>http://zhan.zhmy.com/archives/2006/78472.shtml</font></a></p>
<p><font size=2>package untitled1; </font></p>
<p><font size=2>import java.io.*;<br>import java.net.*;<br>import javax.servlet.*;<br>import javax.servlet.http.*;<br>import java.awt.*;<br>import java.awt.image.*;<br>import java.util.*;<br>import javax.imageio.*;<br>/**<br>*<br>* @author </font><a href="http://www.tot.name/"><font size=2>http://www.tot.name</font></a><br><font size=2>* @version<br>*/<br>public class Image extends HttpServlet {</font></p>
<p><font size=2>/** Processes requests for both HTTP &lt;code&gt;GET&lt;/code&gt; and &lt;code&gt;POST&lt;/code&gt; methods.<br>* @param request servlet request<br>* @param response servlet response<br>*/<br>protected void processRequest(HttpServletRequest request, HttpServletResponse response)<br>throws ServletException, IOException {<br>response.setContentType("image/jpeg");<br>response.setHeader("Pragma","No-cache");<br>response.setHeader("Cache-Control","no-cache");<br>response.setDateHeader("Expires", 0); <br>HttpSession session=request.getSession();<br>// 在内存中创建图象<br>int width=60, height=20;<br>BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);</font></p>
<p><font size=2>// 获取图形上下文<br>Graphics g = image.getGraphics();</font></p>
<p><font size=2>//生成随机类<br>Random random = new Random();</font></p>
<p><font size=2>// 设定背景色<br>g.setColor(getRandColor(200,250));<br>g.fillRect(0, 0, width, height);</font></p>
<p><font size=2>//设定字体<br>g.setFont(new Font("Times New Roman",Font.PLAIN,18));</font></p>
<p><font size=2>//画边框<br>//g.setColor(new Color());<br>//g.drawRect(0,0,width-1,height-1);</font></p>
<p><br><font size=2>// 随机产生155条干扰线，使图象中的认证码不易被其它程序探测到<br>g.setColor(getRandColor(160,200));<br>for (int i=0;i&lt;155;i++) {<br>int x = random.nextInt(width);<br>int y = random.nextInt(height);<br>int xl = random.nextInt(12);<br>int yl = random.nextInt(12);<br>g.drawLine(x,y,x+xl,y+yl);<br>}</font></p>
<p><font size=2>// 取随机产生的认证码(4位数字)<br>String sRand="";<br>for (int i=0;i&lt;4;i++){<br>String rand=String.valueOf(random.nextInt(10));<br>sRand+=rand;<br>// 将认证码显示到图象中<br>g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同，可能是因为种子太接近，所以只能直接生成<br>g.drawString(rand,13*i+6,16);<br>}</font></p>
<p><font size=2>// 将认证码存入SESSION<br>session.setAttribute("rand",sRand);<br>// 图象生效<br>g.dispose();<br>ServletOutputStream responseOutputStream =response.getOutputStream();<br>// 输出图象到页面<br>ImageIO.write(image, "JPEG", responseOutputStream);</font></p>
<p><font size=2>//以下关闭输入流！<br>responseOutputStream.flush();<br>responseOutputStream.close();<br>}<br>Color getRandColor(int fc,int bc){//给定范围获得随机颜色<br>Random random = new Random();<br>if(fc&gt;255) fc=255;<br>if(bc&gt;255) bc=255;<br>int r=fc+random.nextInt(bc-fc);<br>int g=fc+random.nextInt(bc-fc);<br>int b=fc+random.nextInt(bc-fc);<br>return new Color(r,g,b);<br>}<br>// &lt;editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."&gt;<br>/** Handles the HTTP &lt;code&gt;GET&lt;/code&gt; method.<br>* @param request servlet request<br>* @param response servlet response<br>*/<br>protected void doGet(HttpServletRequest request, HttpServletResponse response)<br>throws ServletException, IOException {<br>processRequest(request, response);<br>}</font></p>
<p><font size=2>/** Handles the HTTP &lt;code&gt;POST&lt;/code&gt; method.<br>* @param request servlet request<br>* @param response servlet response<br>*/<br>protected void doPost(HttpServletRequest request, HttpServletResponse response)<br>throws ServletException, IOException {<br>processRequest(request, response);<br>}</font></p>
<p><font size=2>/** Returns a short description of the servlet.<br>*/<br>public String getServletInfo() {<br>return "Short description";<br>}<br>// &lt;/editor-fold&gt;<br>}</font></p>
<font size=2>
<p><font size=2>---------------使用验证码图片的文件---------index.jsp------------------------------------<br><br>&lt;%@ page contentType="text/html;charset=gb2312" %&gt;<br>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;认证码输入页面&lt;/title&gt;<br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br>&lt;META HTTP-EQUIV="Pragma" CONTENT="no-cache"&gt; <br>&lt;META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"&gt; <br>&lt;META HTTP-EQUIV="Expires" CONTENT="0"&gt; <br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;form method=post action="check.jsp"&gt;<br>&lt;table&gt;<br>&lt;tr&gt;<br>&lt;td align=left&gt;系统产生的认证码：&lt;/td&gt;<br>&lt;td&gt;&lt;img border=0 src="http://www.zhmy.com/image"&gt;&lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;tr&gt;<br>&lt;td align=left&gt;输入上面的认证码：&lt;/td&gt;<br>&lt;td&gt;&lt;input type=text name=rand maxlength=4 value=""&gt;&lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;tr&gt;<br>&lt;td colspan=2 align=center&gt;&lt;input type=submit value="提交检测"&gt;&lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br><br>-----------------验证的页面----------check.jsp------------------------------<br><br>&lt;%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %&gt;<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;认证码验证页面&lt;/title&gt;<br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br>&lt;META HTTP-EQUIV="Pragma" CONTENT="no-cache"&gt; <br>&lt;META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"&gt; <br>&lt;META HTTP-EQUIV="Expires" CONTENT="0"&gt; <br>&lt;/head&gt;<br><br>&lt;body&gt;<br>&lt;% <br>String rand = (String)session.getAttribute("rand");<br>String input = request.getParameter("rand");<br>%&gt;<br>系统产生的认证码为： &lt;%= rand %&gt;&lt;br&gt;<br>您输入的认证码为： &lt;%= input %&gt;&lt;br&gt;<br>&lt;br&gt;<br>&lt;%<br>if (rand.equals(input)) {<br>%&gt;<br>&lt;font color=green&gt;输入相同，认证成功！&lt;/font&gt;<br>&lt;%<br>} else {<br>%&gt;<br>&lt;font color=red&gt;输入不同，认证失败！&lt;/font&gt;<br>&lt;%<br>}<br>%&gt;<br>&lt;/body&gt;<br>&lt;/html&gt; </font></p>
</font><br></div>
<img src ="http://www.blogjava.net/feifeirao/aggbug/123606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feifeirao/" target="_blank">五味子</a> 2007-06-12 14:48 <a href="http://www.blogjava.net/feifeirao/articles/123606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ImageAction画图Action类</title><link>http://www.blogjava.net/feifeirao/articles/120846.html</link><dc:creator>五味子</dc:creator><author>五味子</author><pubDate>Wed, 30 May 2007 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/feifeirao/articles/120846.html</guid><wfw:comment>http://www.blogjava.net/feifeirao/comments/120846.html</wfw:comment><comments>http://www.blogjava.net/feifeirao/articles/120846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feifeirao/comments/commentRss/120846.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feifeirao/services/trackbacks/120846.html</trackback:ping><description><![CDATA[<p>import gdhb.portal.util.ImageCode;<br>import gdhb.portal.util.RandomUtils;<br>import gdhb.portal.util.Uuid;</p>
<p>import java.io.OutputStream;</p>
<p>import javax.servlet.http.HttpServletRequest;<br>import javax.servlet.http.HttpServletResponse;<br>import javax.servlet.http.HttpSession;</p>
<p>import org.apache.commons.lang.StringUtils;<br>import org.apache.struts.action.Action;<br>import org.apache.struts.action.ActionForm;<br>import org.apache.struts.action.ActionForward;<br>import org.apache.struts.action.ActionMapping;</p>
<p>/** <br>&nbsp;* MyEclipse Struts<br>&nbsp;* Creation date: 09-12-2006<br>&nbsp;* <br>&nbsp;* XDoclet definition:<br>&nbsp;* @struts.action validate="true"<br>&nbsp;*/<br>public class ImageAction extends Action {</p>
<p>&nbsp;// --------------------------------------------------------- Instance Variables</p>
<p>&nbsp;// --------------------------------------------------------- Methods<br>//&nbsp;private AutocodeImage autocode = new AutocodeImage();<br>&nbsp;/** <br>&nbsp; * Method execute<br>&nbsp; * @param mapping<br>&nbsp; * @param form<br>&nbsp; * @param request<br>&nbsp; * @param response<br>&nbsp; * @return ActionForward<br>&nbsp; */<br>&nbsp;public ActionForward execute (<br>&nbsp;&nbsp;ActionMapping mapping,<br>&nbsp;&nbsp;ActionForm form,<br>&nbsp;&nbsp;HttpServletRequest request,<br>&nbsp;&nbsp;HttpServletResponse response) throws Exception{</p>
<p>&nbsp;&nbsp;// TODO Auto-generated method stub<br>&nbsp;&nbsp;HttpSession session = request.getSession(true);<br>&nbsp;&nbsp;String ustr = Uuid.create().toString();<br>&nbsp;&nbsp;StringBuffer rand = new StringBuffer();<br>&nbsp;&nbsp;for(int i=0;i&lt;4;i++){<br>&nbsp;&nbsp;&nbsp;int randstr = RandomUtils.buildIntRandomBy(33);<br>&nbsp;&nbsp;&nbsp;//randstr为0的时候会出错,导致图片出不来,从新生产随机数<br>&nbsp;&nbsp;&nbsp;while(randstr==0){<br>&nbsp;&nbsp;&nbsp;&nbsp;randstr = RandomUtils.buildIntRandomBy(33);<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;rand.append(ustr.substring(randstr -1, randstr));<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;OutputStream out = response.getOutputStream();<br>&nbsp;&nbsp;ImageCode.WriteImage(rand.toString(),out);<br>&nbsp;&nbsp;session.setAttribute("rand",rand.toString());<br>&nbsp;&nbsp;return null;<br>&nbsp;}<br>&nbsp;</p>
<p>}<br><br>页面:<br>&nbsp;&nbsp;&nbsp;&lt;input type="text"&nbsp; name="verifyCode"&nbsp; style="width:100px" maxlength="32"&gt;<br>&lt;img src="image.do?rand = Math.random()"&nbsp; alt="点击图更换图片" width="51" height="23" align="absbottom" id="verImg" onclick="nchangeImg();" style="cursor:hand "/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>sturts.confix:<br>&lt;action path="/image" type="gdhb.portal.action.ImageAction"/&gt;<br>提交后处理:<br>&nbsp;&nbsp;String verifyCode = this.getFormElementString(form, "verifyCode", "");<br>&nbsp;&nbsp;if(!verifyCode.equals(request.getSession().getAttribute("rand"))){<br>&nbsp;&nbsp;&nbsp;request.setAttribute(Constants.EXCEPTION_DEFAULT_KEY,"对不起,验证码有误,请重新填写！");<br>&nbsp;&nbsp;&nbsp;return actionMapping.findForward("loginforward");<br><br></p>
<img src ="http://www.blogjava.net/feifeirao/aggbug/120846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feifeirao/" target="_blank">五味子</a> 2007-05-30 11:08 <a href="http://www.blogjava.net/feifeirao/articles/120846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ImageCode画出随机认证码</title><link>http://www.blogjava.net/feifeirao/articles/120841.html</link><dc:creator>五味子</dc:creator><author>五味子</author><pubDate>Wed, 30 May 2007 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/feifeirao/articles/120841.html</guid><wfw:comment>http://www.blogjava.net/feifeirao/comments/120841.html</wfw:comment><comments>http://www.blogjava.net/feifeirao/articles/120841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feifeirao/comments/commentRss/120841.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feifeirao/services/trackbacks/120841.html</trackback:ping><description><![CDATA[<p>import java.awt.Color;<br>import java.awt.Font;<br>import java.awt.Graphics;<br>import java.awt.image.BufferedImage;<br>import java.io.IOException;<br>import java.io.OutputStream;<br>import java.util.Random;</p>
<p>import javax.imageio.ImageIO;</p>
<p>public class ImageCode {<br>&nbsp;/**<br>&nbsp; * 画出随机认证码<br>&nbsp; * @param rand 随机数<br>&nbsp; * @param out&nbsp; <br>&nbsp; * @return&nbsp; String 生成的认证码<br>&nbsp; */<br>&nbsp;public static void WriteImage(String rand,OutputStream out){<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;int width = 60,height=20;<br>&nbsp;&nbsp;//创建一个图形对象，类型为RGB<br>&nbsp;&nbsp;BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);<br>&nbsp;&nbsp;//获取图形上下文对象<br>&nbsp;&nbsp;Graphics g = image.getGraphics();<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;//设置背景色<br>&nbsp;&nbsp;g.setColor(Color.GREEN);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置颜色 白色<br>&nbsp;&nbsp;g.fillRect(0,0,width,height); //填充坐标范围内颜色<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;//画边框<br>&nbsp;&nbsp;g.setColor(Color.black);<br>&nbsp;&nbsp;g.drawRect(0,0,width-1,height-1);<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;//将认证码画入刚画的图象中<br>&nbsp;&nbsp;g.setColor(Color.black);<br>&nbsp;&nbsp;g.setFont(new Font("Times New Romm",Font.PLAIN,18));<br>&nbsp;&nbsp;g.drawString(rand,10,15);<br>&nbsp;&nbsp;//随机画88个随机干扰点，使认证码不易被其它程序探测到<br>&nbsp;&nbsp;Random random = new Random();<br>&nbsp;&nbsp;for(int i=0;i&lt;88;i++){<br>&nbsp;&nbsp;&nbsp;int x = random.nextInt(width);<br>&nbsp;&nbsp;&nbsp;int y = random.nextInt(height);<br>&nbsp;&nbsp;&nbsp;g.drawLine(x,y,x,y);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;//释放上下文所有资源<br>&nbsp;&nbsp;g.dispose();&nbsp;&nbsp;<br>&nbsp;&nbsp;//输出图象到页面<br>&nbsp;&nbsp;try {<br>&nbsp;&nbsp;&nbsp;ImageIO.write(image,"JPEG",out);<br>&nbsp;&nbsp;} catch (IOException e) {&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;}&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;}<br>}<br></p>
<img src ="http://www.blogjava.net/feifeirao/aggbug/120841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feifeirao/" target="_blank">五味子</a> 2007-05-30 11:03 <a href="http://www.blogjava.net/feifeirao/articles/120841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RandomUtils 产生随机数的工具类</title><link>http://www.blogjava.net/feifeirao/articles/120838.html</link><dc:creator>五味子</dc:creator><author>五味子</author><pubDate>Wed, 30 May 2007 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/feifeirao/articles/120838.html</guid><wfw:comment>http://www.blogjava.net/feifeirao/comments/120838.html</wfw:comment><comments>http://www.blogjava.net/feifeirao/articles/120838.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feifeirao/comments/commentRss/120838.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feifeirao/services/trackbacks/120838.html</trackback:ping><description><![CDATA[<p>import java.util.HashSet;<br>import java.util.Random;<br>import java.util.Set;</p>
<p>import org.apache.commons.lang.StringUtils;</p>
<p>/**<br>&nbsp;* &lt;p&gt;Title: 产生随机数的工具类。&lt;/p&gt;<br>&nbsp;* &lt;p&gt;Description: &lt;/p&gt;<br>&nbsp;* &lt;p&gt;Copyright: Copyright (c) 2003&lt;/p&gt;<br>&nbsp;* &lt;p&gt;Company: &lt;/p&gt;<br>&nbsp;* @author 郑伟<br>&nbsp;* @version 1.0<br>&nbsp;*/</p>
<p>public class RandomUtils<br>{<br>&nbsp;&nbsp;&nbsp; private static final Random random = new Random();</p>
<p>&nbsp;&nbsp;&nbsp; private RandomUtils()<br>&nbsp;&nbsp;&nbsp; {<br>//&nbsp;&nbsp;&nbsp; &nbsp;random = new Random();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 生成num个长度为length的字符串（字符串各不相同）,字符串只包含字母<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param length 字符串的长度<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param num 字符串的个数<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static String[] random(final int length, final int num)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;return new RandomUtils().buildRandom(length, num);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; 生成长度为length的字符串,字符串只包含数字<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param length 字符串的长度<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static String random(final int length)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;return new RandomUtils().buildRandom(length);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 生成num个长度为length的字符串，组成如 123-123-123 格式(只包含数字)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param length <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param num<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws BaseException<br>&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author 张海波<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static String randombunch(int length,int num)&nbsp; {<br>&nbsp;&nbsp;StringBuffer str = new StringBuffer();<br>&nbsp;&nbsp;for(int i = 0;i&lt;num;i++){<br>&nbsp;&nbsp;&nbsp;str.append(RandomUtils.random(length));<br>&nbsp;&nbsp;&nbsp;if(i != num -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;str.append("-");<br>&nbsp;&nbsp;}&nbsp;&nbsp;<br>&nbsp;&nbsp;return str.toString();<br>&nbsp;}</p>
<p><br>&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp; * 生成num个长度为length的字符串（字符串各不相同）,字符串只包含字母<br>&nbsp;&nbsp;&nbsp; * @param length 字符串的长度<br>&nbsp;&nbsp;&nbsp; * @param num 字符串的个数<br>&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; private String[] buildRandom (final int length, final int num) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (num &lt; 1 || length &lt; 1) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set&lt;String&gt; tempRets = new HashSet&lt;String&gt;(num);&nbsp; //存放临时结果，以避免重复值的发生<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //生成num个不相同的字符串<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (tempRets.size() &lt; num) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tempRets.add(buildRandom(length));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] rets = new String[num];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rets = tempRets.toArray(rets);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return rets;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 返回指定位数的整数<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param length<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author 张海波<br>&nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; public static int buildIntRandom(final int length){<br>&nbsp;&nbsp;&nbsp; &nbsp;String maxStr = StringUtils.rightPad("1",length +1,'0');&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; &nbsp;long max = Long.parseLong(maxStr);<br>&nbsp;&nbsp;&nbsp; &nbsp;long i = Math.abs(random.nextLong()) % max;<br>&nbsp;&nbsp;&nbsp; &nbsp;String rand = String.valueOf(i);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;return Integer.parseInt(rand);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 取小于指定范围内的整数<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param length<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author 张海波<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static int buildIntRandomBy(final int length){<br>&nbsp;&nbsp;&nbsp; &nbsp;return (int)(Math.random()*length);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; 生成长度为length的字符串,字符串只包含数字<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param length 字符串的长度<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; private String buildRandom (final int length) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //长度为length的最多整数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String maxStr = StringUtils.rightPad("1", length + 1, '0');<br>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("maxStr=" + maxStr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long max = Long.parseLong(maxStr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long i = random.nextLong();&nbsp; //取得随机数<br>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("befor i=" + i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i = Math.abs(i) % max;&nbsp; //取正数，并限制其长度<br>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("after i=" + i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String value = StringUtils.leftPad(String.valueOf(i), length, '0');<br>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("length=" + length);<br>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("value=" + value);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return value;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>}<br></p>
<img src ="http://www.blogjava.net/feifeirao/aggbug/120838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feifeirao/" target="_blank">五味子</a> 2007-05-30 11:01 <a href="http://www.blogjava.net/feifeirao/articles/120838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Uuid生成字符类32位等</title><link>http://www.blogjava.net/feifeirao/articles/120836.html</link><dc:creator>五味子</dc:creator><author>五味子</author><pubDate>Wed, 30 May 2007 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/feifeirao/articles/120836.html</guid><wfw:comment>http://www.blogjava.net/feifeirao/comments/120836.html</wfw:comment><comments>http://www.blogjava.net/feifeirao/articles/120836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feifeirao/comments/commentRss/120836.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feifeirao/services/trackbacks/120836.html</trackback:ping><description><![CDATA[<p>package gdhb.portal.util;</p>
<p>import java.io.*;<br>import java.net.*;<br>import gdhb.portal.exception.UuidException;</p>
<p>public class Uuid implements Serializable{<br>&nbsp;private static final long serialVersionUID = 1118990168975148476L;<br>&nbsp;private long high;<br>&nbsp;&nbsp;&nbsp; private long low;<br>&nbsp;&nbsp;&nbsp; private transient String str36;<br>&nbsp;&nbsp;&nbsp; private static int UUID_HOST_LOCK_PORT = 5504;<br>&nbsp;&nbsp;&nbsp; private static final int MAX_RETRYS = 1200;<br>&nbsp;&nbsp;&nbsp; private static final int INTERVAL_TIME = 100;<br>&nbsp;&nbsp;&nbsp; private static ServerSocket lockSocket;<br>&nbsp;&nbsp;&nbsp; private static long timeStamp;<br>&nbsp;&nbsp;&nbsp; private static long adapterAddress;<br>&nbsp;&nbsp;&nbsp; private static int instanceCounter;<br>&nbsp;&nbsp;&nbsp; private static final long versionMask = 4096L;<br>&nbsp;&nbsp;&nbsp; private static final long reserveMask = 0xe000000000000000L;<br>&nbsp;&nbsp;&nbsp; private static final long randomMask = 0x1fffffffL;<br>&nbsp;&nbsp;&nbsp; private static final char hexDigits[] = {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '0', '1', '2', '3', '4', '5', '6',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '7', '8', '9',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'a', 'b', 'c', 'd', 'e', 'f'<br>&nbsp;&nbsp;&nbsp; };</p>
<p>&nbsp;&nbsp;&nbsp; public static synchronized Uuid create() throws UuidException {<br>&nbsp;if (timeStamp == 0L)<br>&nbsp;&nbsp;&nbsp;&nbsp; setTimeStamp();<br>&nbsp;if (adapterAddress == 0L)<br>&nbsp;&nbsp;&nbsp;&nbsp; setAdapterAddress();<br>&nbsp;Uuid uuid = new Uuid();<br>&nbsp;long midTime = timeStamp &gt;&gt; 32 &amp; 0xffffffffL;<br>&nbsp;uuid.high = timeStamp &lt;&lt; 32 | midTime &lt;&lt; 16 &amp; 0xffff0000L | 4096L |<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeStamp &gt;&gt; 48 &amp; 4095L;<br>&nbsp;int count = instanceCounter++;<br>&nbsp;if (count == 0x1fffffff) {<br>&nbsp;&nbsp;&nbsp;&nbsp; instanceCounter = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp; setTimeStamp();<br>&nbsp;}<br>&nbsp;uuid.low = ((long) count &amp; 0x1fffffffL) &lt;&lt; 32 | 0xe000000000000000L |<br>&nbsp;&nbsp;&nbsp;&nbsp; adapterAddress;<br>&nbsp;return uuid;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; private Uuid() {<br>&nbsp;str36 = null;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; private Uuid(long high, long low) {<br>&nbsp;str36 = null;<br>&nbsp;this.high = high;<br>&nbsp;this.low = low;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; private static void setAdapterAddress() throws UuidException {<br>&nbsp;try {<br>&nbsp;&nbsp;&nbsp;&nbsp; byte addr[] = InetAddress.getLocalHost().getAddress();<br>&nbsp;&nbsp;&nbsp;&nbsp; int raw = addr[3] &amp; 0xff | addr[2] &lt;&lt; 8 &amp; 0xff00 |<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addr[1] &lt;&lt; 16 &amp; 0xff0000 | addr[0] &lt;&lt; 24 &amp; 0xff000000;<br>&nbsp;&nbsp;&nbsp;&nbsp; adapterAddress = (long) raw &amp; 0xffffffffL;<br>&nbsp;} catch (UnknownHostException e) {<br>&nbsp;&nbsp;&nbsp;&nbsp; throw new UuidException("Unexpected failure");<br>&nbsp;}<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; private static void setTimeStamp() throws UuidException {<br>&nbsp;acquireHostLock();<br>&nbsp;try {<br>&nbsp;&nbsp;&nbsp;&nbsp; long newTime = System.currentTimeMillis();<br>&nbsp;&nbsp;&nbsp;&nbsp; if (timeStamp != 0L) {<br>&nbsp;&nbsp;if (newTime &lt; timeStamp)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new UuidException("Unique identifier clock failure");<br>&nbsp;&nbsp;if (newTime == timeStamp) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; letClockTick(newTime);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newTime = System.currentTimeMillis();<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; timeStamp = newTime;<br>&nbsp;} finally {<br>&nbsp;&nbsp;&nbsp;&nbsp; releaseHostLock();<br>&nbsp;}<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; private static void letClockTick(long curTime) throws UuidException {<br>&nbsp;int timeoutCounter = 0;<br>&nbsp;long sleepTime = 1L;<br>&nbsp;for (long newTime = System.currentTimeMillis(); newTime == curTime;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newTime = System.currentTimeMillis()) {<br>&nbsp;&nbsp;&nbsp;&nbsp; timeoutCounter++;<br>&nbsp;&nbsp;&nbsp;&nbsp; sleepTime *= 2L;<br>&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;Thread.sleep(sleepTime);<br>&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException e) {}<br>&nbsp;&nbsp;&nbsp;&nbsp; if (sleepTime &gt; 60000L)<br>&nbsp;&nbsp;throw new UuidException("Unique identifier unexpected failure");<br>&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; private static void acquireHostLock() throws UuidException {<br>&nbsp;String portProperty = null;<br>&nbsp;try {<br>&nbsp;&nbsp;&nbsp;&nbsp; portProperty = System.getProperty("bluewater.uuid.hostLockPort");<br>&nbsp;} catch (SecurityException e) {}<br>&nbsp;if (portProperty != null)<br>&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;UUID_HOST_LOCK_PORT = Integer.parseInt(portProperty);<br>&nbsp;&nbsp;&nbsp;&nbsp; } catch (NumberFormatException nfe) {}<br>&nbsp;for (int numberOfRetrys = 0; lockSocket == null; numberOfRetrys++) {<br>&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;lockSocket = new ServerSocket(UUID_HOST_LOCK_PORT);<br>&nbsp;&nbsp;return;<br>&nbsp;&nbsp;&nbsp;&nbsp; } catch (BindException e) {} catch (IOException e2) {<br>&nbsp;&nbsp;throw new UuidException("Unique identifier unexpected failure");<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;Thread.sleep(100L);<br>&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException e1) {}<br>&nbsp;&nbsp;&nbsp;&nbsp; if (numberOfRetrys == 1200)<br>&nbsp;&nbsp;throw new UuidException("Unique identifier lock failure");<br>&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; private static void releaseHostLock() {<br>&nbsp;if (lockSocket != null) {<br>&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;lockSocket.close();<br>&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {}<br>&nbsp;&nbsp;&nbsp;&nbsp; lockSocket = null;<br>&nbsp;}<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public boolean equals(Object obj) {<br>&nbsp;if (obj != null &amp;&amp; (obj instanceof Uuid))<br>&nbsp;&nbsp;&nbsp;&nbsp; return high == ((Uuid) obj).high &amp;&amp; low == ((Uuid) obj).low;<br>&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp; return false;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public int hashCode() {<br>&nbsp;return (int) (low &lt;&lt; 24) &amp; 0xff000000 | (int) (high &gt;&gt; 20) &amp; 0xfff000 |<br>&nbsp;&nbsp;(int) (low &gt;&gt; 32) &amp; 0xfff;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public String toString() {<br>&nbsp;if (str36 != null) {<br>&nbsp;&nbsp;&nbsp;&nbsp; return str36;<br>&nbsp;} else {<br>&nbsp;&nbsp;&nbsp;&nbsp; StringBuffer buf = new StringBuffer();<br>&nbsp;&nbsp;&nbsp;&nbsp; buf.append(toHexString(high &gt;&gt;&gt; 32, 8)); //.append("-");<br>&nbsp;&nbsp;&nbsp;&nbsp; buf.append(toHexString(high &gt;&gt;&gt; 16, 4)); //.append("-");<br>&nbsp;&nbsp;&nbsp;&nbsp; buf.append(toHexString(high, 4)); //.append("-");<br>&nbsp;&nbsp;&nbsp;&nbsp; buf.append(toHexString(low &gt;&gt;&gt; 48, 4)); //.append("-");<br>&nbsp;&nbsp;&nbsp;&nbsp; buf.append(toHexString(low, 12));<br>&nbsp;&nbsp;&nbsp;&nbsp; str36 = buf.toString();<br>&nbsp;&nbsp;&nbsp;&nbsp; return str36;<br>&nbsp;}<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; private static String toHexString(long x, int chars) {<br>&nbsp;char buf[] = new char[chars];<br>&nbsp;for (int charPos = chars; --charPos &gt;= 0; ) {<br>&nbsp;&nbsp;&nbsp;&nbsp; buf[charPos] = hexDigits[(int) (x &amp; 15L)];<br>&nbsp;&nbsp;&nbsp;&nbsp; x &gt;&gt;&gt;= 4;<br>&nbsp;}</p>
<p>&nbsp;return new String(buf);<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public byte[] toByteArray() {<br>&nbsp;byte array[] = new byte[16];<br>&nbsp;toBytes(high, array, 0);<br>&nbsp;toBytes(low, array, 8);<br>&nbsp;return array;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; private void toBytes(long x, byte array[], int startPos) {<br>&nbsp;for (int bytePos = 8; --bytePos &gt;= 0; ) {<br>&nbsp;&nbsp;&nbsp;&nbsp; array[startPos + bytePos] = (byte) (int) (x &amp; 255L);<br>&nbsp;&nbsp;&nbsp;&nbsp; x &gt;&gt;&gt;= 8;<br>&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void write(DataOutput out) throws IOException {<br>&nbsp;out.writeLong(high);<br>&nbsp;out.writeLong(low);<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public static Uuid read(DataInput in) throws IOException {<br>&nbsp;long high = in.readLong();<br>&nbsp;long low = in.readLong();<br>&nbsp;return new Uuid(high, low);<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public static Uuid read(String id) throws UuidException {<br>&nbsp;Uuid uuid;<br>&nbsp;String part = id.substring(0, 8);<br>&nbsp;long high = 0L;<br>&nbsp;high = Long.parseLong(part, 16) &lt;&lt; 32;<br>&nbsp;part = id.substring(9, 13);<br>&nbsp;high |= Long.parseLong(part, 16) &lt;&lt; 16;<br>&nbsp;part = id.substring(14, 18);<br>&nbsp;high |= Long.parseLong(part, 16);<br>&nbsp;long low = 0L;<br>&nbsp;part = id.substring(19, 23);<br>&nbsp;low = Long.parseLong(part, 16) &lt;&lt; 48;<br>&nbsp;part = id.substring(24, 36);<br>&nbsp;low |= Long.parseLong(part, 16);<br>&nbsp;uuid = new Uuid(high, low);<br>&nbsp;return uuid;<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public static void main(String args[]) {<br>&nbsp;try {<br>&nbsp;&nbsp;&nbsp;&nbsp; long begin = System.currentTimeMillis();<br>&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 1; i++) {<br>&nbsp;&nbsp;Uuid uuid = create();<br>&nbsp;&nbsp;System.out.println(uuid.toString());<br>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; long end = System.currentTimeMillis();<br>&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("total=" + (end - begin) + "ms," +<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (end - begin) / 1000L + " second");<br>&nbsp;} catch (Exception ex) {}<br>&nbsp;&nbsp;&nbsp; }<br>}<br><span style="COLOR: #ff0000">UuidException类:<br>public class UuidException extends RuntimeException{<br>&nbsp;private static final long serialVersionUID = 845412579193271744L;</span></p>
<p><span style="COLOR: #ff0000">&nbsp;public UuidException () {<br>&nbsp;}</span></p>
<p><span style="COLOR: #ff0000">&nbsp;public UuidException (String msg) {<br>&nbsp;&nbsp;super(msg);<br>&nbsp;}<br>}<br></span></p>
<img src ="http://www.blogjava.net/feifeirao/aggbug/120836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feifeirao/" target="_blank">五味子</a> 2007-05-30 10:57 <a href="http://www.blogjava.net/feifeirao/articles/120836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>