浅谈注册码(二利用servlet生成简单的注册码)

作者:小白 发布于:2008年10月16日 19:55

在web.xml配置:

Java代码
  1. <servlet>
  2. <servlet-name>image</servlet-name>
  3. <servlet-class>org.test.web.AuthImage</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>image</servlet-name>
  7. <url-pattern>/authImage</url-pattern>
  8. </servlet-mapping>

其servlet源代码:

Java代码
  1. public class AuthImage extends HttpServlet  
  2. {  
  3.   
  4.     private static final String CONTENT_TYPE = “text/html; charset=gb2312″;  
  5.     //设置字母的大小,大小  
  6.     private Font mFont = new Font(“Times New Roman”, Font.PLAIN, 17);  
  7.     public void init() throws ServletException  
  8.     {  
  9.         super.init();  
  10.     }  
  11.     Color getRandColor(int fc,int bc)  
  12.     {  
  13.         Random random = new Random();  
  14.         if(fc>255) fc=255;  
  15.         if(bc>255) bc=255;  
  16.         int r=fc+random.nextInt(bc-fc);  
  17.         int g=fc+random.nextInt(bc-fc);  
  18.         int b=fc+random.nextInt(bc-fc);  
  19.         return new Color(r,g,b);  
  20.     }  
  21.   
  22.     public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
  23.     {  
  24.         response.setHeader(“Pragma”,“No-cache”);  
  25.         response.setHeader(“Cache-Control”,“no-cache”);  
  26.         response.setDateHeader(“Expires”0);  
  27.         //表明生成的响应是图片  
  28.         response.setContentType(“image/jpeg”);  
  29.           
  30.         int width=100, height=18;  
  31.         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  
  32.           
  33.         Graphics g = image.getGraphics();  
  34.         Random random = new Random();  
  35.         g.setColor(getRandColor(200,250));  
  36.         g.fillRect(11, width-1, height-1);  
  37.         g.setColor(new Color(102,102,102));  
  38.         g.drawRect(00, width-1, height-1);  
  39.         g.setFont(mFont);  
  40.   
  41.         g.setColor(getRandColor(160,200));  
  42.   
  43.         //画随机线  
  44.         for (int i=0;i<155;i++)  
  45.         {  
  46.             int x = random.nextInt(width - 1);  
  47.             int y = random.nextInt(height - 1);  
  48.             int xl = random.nextInt(6) + 1;  
  49.             int yl = random.nextInt(12) + 1;  
  50.             g.drawLine(x,y,x + xl,y + yl);  
  51.         }  
  52.   
  53.         //从另一方向画随机线  
  54.         for (int i = 0;i < 70;i++)  
  55.         {  
  56.             int x = random.nextInt(width - 1);  
  57.             int y = random.nextInt(height - 1);  
  58.             int xl = random.nextInt(12) + 1;  
  59.             int yl = random.nextInt(6) + 1;  
  60.             g.drawLine(x,y,x - xl,y - yl);  
  61.         }  
  62.   
  63.         //生成随机数,并将随机数字转换为字母  
  64.         String sRand=“”;  
  65.         for (int i=0;i<6;i++)  
  66.         {  
  67.             int itmp = random.nextInt(26) + 65;  
  68.             char ctmp = (char)itmp;  
  69.             sRand += String.valueOf(ctmp);  
  70.             g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));  
  71.             g.drawString(String.valueOf(ctmp),15*i+10,16);  
  72.         }  
  73.   
  74.         HttpSession session = request.getSession(true);  
  75.         session.setAttribute(“rand”,sRand);  
  76.         g.dispose();  
  77.         ImageIO.write(image, “JPEG”, response.getOutputStream());  
  78.     }  
  79.     public void destroy()  
  80.     {  
  81.     }  
  82. }  

怎样用:
在页面显示随机图片,可在JSP页面中增加如下代码即可:

Java代码:
  1. <img src=“authImage”>  

作者:小白
来源:北风技术专栏
原文链接:http://column.ibeifeng.com/mfgqls/20081016161.shtml

( 内容完 )

添加收藏到:

您可能还对这些文章感兴趣:

  • 代码自我审查的一些体会
  • Flex+Lucene+s2sh开发订餐系统开发第六步:后台主界面设计
  • 用Flex+Lucene+s2sh开发订餐系统开发第四步:前台皮肤替换功能实现
  • java web程序究竟该如何布署?
  • 用Flex+Lucene+s2sh开发订餐系统开发第二步:前台主界面设计技术笔记分享
  • Android/OPhone中使用HttpUrlConnection注意事项
  • oracle spatial初探
  • 数据库设计三大范式应用实例剖析
  • OSGI中的service依赖关系管理
  • 简述WebS简述WebService与.NET Remoting的区别及适应场合
  • 2条评论, 我来评论

    1. 匿名

      这都可以

    2. 匿名

      老兄 这是验证码吧

    小贴士:评论需要管理员审核后才会显示。请不要发布与国家法律相抵触的言论,北风网将保留追究责任的权利。
    类似“顶”、“沙发”、“支持”之类没有营养的文字,对勤劳贡献的作者来说是令人沮丧的反馈信息。
    请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
    如果您发现自己的评论没有被审核或者不见了,请参考以上三条。

    每周之星

    陈臣陈臣

    七年Java和JEE开发经验,JEE应用设计和高级架构师,拥有Sun的多项Java和J2EE方面的技能认证,多年项目经理、技术部经理的管理经验。拥有全面、扎实的Java和JEE理论知识,丰富的JEE应用开发经验。

    更多作者:

  • Adam
  • ikon999
  • jk1234
  • jk2345
  • libin_8745
  • lifengxing
  • taohuang100
  • xingkong
  • 北风
  • 呆子
  • 子晨
  • 小白
  • 张章
  • 张维亮
  • 陈臣
  • 陶宝哥
  • 风风
  • 最新内容

    推荐内容

    标签

    分类