﻿<?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-§封Ja葬va§-随笔分类-J2SE</title><link>http://www.blogjava.net/zhutianxiang/category/38094.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 04 Apr 2009 01:25:28 GMT</lastBuildDate><pubDate>Sat, 04 Apr 2009 01:25:28 GMT</pubDate><ttl>60</ttl><item><title>MD5加密</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263851.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Fri, 03 Apr 2009 17:28:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263851.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/263851.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/263851.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/263851.html</trackback:ping><description><![CDATA[<p><font color="#800000">/**<br />
* MD5加密<br />
* <br />
* @param s<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要加密的字符串(不可为null)<br />
* <br />
* @return 返回加密后的密文<br />
*/<br />
public final static String MD5(String pwd) {<br />
&nbsp;&nbsp; String Digest = "";<br />
&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp; MessageDigest currentAlgorithm = MessageDigest.getInstance("md5");<br />
&nbsp;&nbsp;&nbsp;&nbsp; currentAlgorithm.reset();<br />
&nbsp;&nbsp;&nbsp;&nbsp; byte[] mess = pwd.getBytes();// 获取要加密的byte数组<br />
&nbsp;&nbsp;&nbsp;&nbsp; byte[] hash = currentAlgorithm.digest(mess);// 获取加密以后的byte数组<br />
&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; hash.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;int v = hash[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (v &lt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v = 256 + v; // 如果 v &lt; 0 &gt; 0 的数，否则不好转换成字符，哪有ASC代码&lt;0的呀<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if (v &lt; 16) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Digest += "0"; // 如果该v&lt;1616进制数就是只有个位，例如15转换就成长度就相等了<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Digest += Integer.toString(v, 16).toUpperCase();<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; mess = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp; hash = null;<br />
&nbsp;&nbsp; } catch (NoSuchAlgorithmException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; return Digest;<br />
}</font></p>
<img src ="http://www.blogjava.net/zhutianxiang/aggbug/263851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-04-04 01:28 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义图形验证码标签</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263848.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Fri, 03 Apr 2009 16:52:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263848.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/263848.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/263848.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/263848.html</trackback:ping><description><![CDATA[JSP页面上引入：<br />
&lt;%@ taglib uri="/htdz-tag" prefix="htdz-tag"%&gt;<br />
使用自定义图形验证码标签自动生成验证码:<br />
&lt;htdz-tag:CheckCodeTag /&gt;<br />
<br />
以下为详细定义过程：<br />
&lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br />
&lt;taglib xmlns="http://java.sun.com/xml/ns/j2ee"<br />
&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
&nbsp;xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"<br />
&nbsp;version="2.0"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;htdz tag&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;display-name&gt;htdz tag&lt;/display-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;tlib-version&gt;1.0&lt;/tlib-version&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;short-name&gt;htdz-tag&lt;/short-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;uri&gt;/htdz-tag&lt;/uri&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;tag&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;!--&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 验证码控件<br />
&nbsp;&nbsp;&nbsp; 使用说明：<br />
&nbsp;&nbsp;&nbsp; jsp中使用范例：<br />
&nbsp;&nbsp;&nbsp; 1.无参数：&lt;htdz-tag:CheckCodeTag/&gt;<br />
&nbsp;&nbsp;&nbsp; 2.全部参数：&lt;htdz-tag:CheckCodeTag id="checkCodeImg" height="18" width="58"/&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 如果用户未设置参数，则默认值分别为：height="18" width="58"<br />
&nbsp;&nbsp;&nbsp; --&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;description&gt;验证码控件&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;name&gt;CheckCodeTag&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;tag-class&gt;com.htdz.util.tag.CheckCodeTag&lt;/tag-class&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;body-content&gt;JSP&lt;/body-content&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;id&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;id&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;高&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;height&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;宽&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;width&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;/tag&gt;<br />
&lt;taglib/&gt;<br />
<br />
CheckCodeTag.java:<br />
<p>public class CheckCodeTag extends TagSupport {<br />
&nbsp;&nbsp;&nbsp; private String id;<br />
&nbsp;&nbsp;&nbsp; private String height;<br />
&nbsp;&nbsp;&nbsp; private String width;</p>
<p>&nbsp;&nbsp;&nbsp; public CheckCodeTag() {<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; @SuppressWarnings( { "unchecked", "static-access" })<br />
&nbsp;&nbsp;&nbsp; public int doStartTag() throws JspException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuffer html = new StringBuffer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (height == null || height.length() == 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height = "18";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (width == null || width.length() == 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width = "60";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append("&lt;img alt=\"重新获取验证码\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (id != null &amp;&amp; id.length() &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append(" id=\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append(id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append("\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append(" height=\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append(height);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append("\" width=\"");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append(width);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.append("\" src=\"/checkCodeImg\" onclick=\"this.src='/checkCodeImg?now='+new Date();\" style=\"cursor: pointer\" /&gt;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pageContext.getOut().println(html.toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new JspException(e.getMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.SKIP_BODY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp; public void setId(String id) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.id = id;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setHeight(String height) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.height = height;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setWidth(String width) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;this.width = width;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
</p>
<br />
<br />
web.xml:<br />
&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;img&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;com.htdz.util.CheckCodeImg&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;img&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/checkCodeImg&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;<br />
<br />
<br />
CheckCodeImg.java:<br />
<br />
<p>public class CheckCodeImg extends HttpServlet {<br />
&nbsp;&nbsp;&nbsp; private Font mFont = new Font("Arial black", Font.PLAIN, 16);</p>
<p>&nbsp;&nbsp;&nbsp; public void init() throws ServletException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.init();<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; Color getRandColor(int fc, int bc) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random = new Random();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fc &gt; 255)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fc = 255;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (bc &gt; 255)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bc = 255;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int r = fc + random.nextInt(bc - fc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int g = fc + random.nextInt(bc - fc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int b = fc + random.nextInt(bc - fc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new Color(r, g, b);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp; public void service(HttpServletRequest request, HttpServletResponse response)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Pragma", "No-cache");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Cache-Control", "no-cache");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setDateHeader("Expires", 0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("image/png");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int width = 60, height = 18;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedImage image = new BufferedImage(width, height,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedImage.TYPE_INT_RGB);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Graphics g = image.getGraphics();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random random = new Random();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(getRandColor(200, 250));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.fillRect(1, 1, width - 1, height - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(new Color(102, 102, 102));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.drawRect(0, 0, width - 1, height - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setFont(mFont);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(getRandColor(160, 200));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for (int i = 0; i &lt; 155; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x = random.nextInt(width - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int y = random.nextInt(height - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int xl = random.nextInt(6) + 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; int yl = random.nextInt(12) + 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;g.drawLine(x, y, x + xl, y + yl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 70; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x = random.nextInt(width - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int y = random.nextInt(height - 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int xl = random.nextInt(12) + 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;int yl = random.nextInt(6) + 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;g.drawLine(x, y, x - xl, y - yl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] codes = { // 'a','b','c','d','e','f','h','k','m','n','r','s','t','x','y',//15个<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 'A','B','C','D','E','F','G','H','K','N','S','T','X','Y'//14<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String sRand = "";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 4; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j = random.nextInt(10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String tmp = String.valueOf(codes[j]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sRand += tmp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(new Color(20 + random.nextInt(110), 20 + random<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .nextInt(110), 20 + random.nextInt(110)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.drawString(tmp, 15 * i + 2, 15);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSession session = request.getSession(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.setAttribute(MyConstant.SESSION_CHECKCODE, sRand);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.dispose();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageIO.write(image, "PNG", response.getOutputStream());<br />
&nbsp;&nbsp; }<br />
}<br />
</p>
<img src ="http://www.blogjava.net/zhutianxiang/aggbug/263848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-04-04 00:52 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义分页标签</title><link>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263837.html</link><dc:creator>§朱家二少§</dc:creator><author>§朱家二少§</author><pubDate>Fri, 03 Apr 2009 16:23:00 GMT</pubDate><guid>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263837.html</guid><wfw:comment>http://www.blogjava.net/zhutianxiang/comments/263837.html</wfw:comment><comments>http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263837.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zhutianxiang/comments/commentRss/263837.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhutianxiang/services/trackbacks/263837.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 近期在做的S2SH项目，因为多处用到分页，BOSS要求小弟将其抽象出来。小弟不才，实际参与开发的经验也就1年。<br>于是花了点时间将其做成自定义标签供所有需要分页的业务调用。小结一下，供新手参考。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263837.html'>阅读全文</a><img src ="http://www.blogjava.net/zhutianxiang/aggbug/263837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhutianxiang/" target="_blank">§朱家二少§</a> 2009-04-04 00:23 <a href="http://www.blogjava.net/zhutianxiang/archive/2009/04/04/263837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>