JSP中文验证码及源代码实现

系统 1468 0
<!-- Feedsky FEED发布代码开始 --> 如果您喜欢这些文章,欢迎点击此处订阅本Blog <!-- FEED自动发现标记开始 --> <link title="RSS 2.0" type="application/rss+xml" href="http://feed.feedsky.com/softwave" rel="alternate"> <!-- FEED自动发现标记结束 --> Blog 订阅

<!--Google 468*60横幅广告开始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "image"; //2007-07-26: CSDN google_ad_channel = "6063905817"; google_color_border = "6699CC"; google_color_bg = "E6E6E6"; google_color_link = "FFFFFF"; google_color_text = "333333"; google_color_url = "AECCEB"; google_ui_features = "rc:6"; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--Google 468*60横幅广告结束-->

本文将介绍有关JSP中的一种验证码的实现,即中文验证码在JSP中的实现,使用中文验证码的好处是能提高验证的有效性,提高验证的安全度,因为中文相对于英文或数字笔画结构相对比较复杂,从而增加了分析程序解析验证码图片并读取验证信息的难度。在文中并分析中文验证的实现过程。
JSP中实现中文验证码源码如下:
  1. <!--ChineseVal.jsp-->

  2. <%@pagepageEncoding= "gb2312" contentType= "image/jpeg" import = "javax.imageio.*,java.util.*,java.awt.image.*,java.awt.*" %>

  3. <%!

  4. //在此处获取并生成随机颜色

  5. ColorgetRandColor(Randomrandom, int ff, int cc){

  6. if (ff> 255 )

  7. ff= 255 ;

  8. if (cc> 255 )

  9. cc= 255 ;

  10. int r=ff+random.nextInt(cc-ff);

  11. int g=ff+random.nextInt(cc-ff);

  12. int b=ff+random.nextInt(cc-ff);

  13. return new Color(r,g,b);

  14. }%>

  15. <%

  16. //在此处设置JSP页面无缓存

  17. response.setHeader( "Pragma" , "No-cache" );

  18. response.setHeader( "Cache-Control" , "no-cache" );

  19. response.setDateHeader( "Expires" , 0 );

  20. //设置图片的长宽

  21. int width= 130 ;
  22. int height= 30 ;

  23. //设定被随机选取的中文字,此处中文字内容过多,不一一列出,只是举例说明下。
  24. Stringbase= "/u9752/u534a/u706b/u6cd5/u9898/u5efa/u8d76/u4f4d/u5531/u6d77/u4e03/u5973/u4efb/u4ef6/u611f/u51c6/u97f3/u7b54/u54e5/u9645/u65e7/u795e/u5ea7/u7ae0/u538b/u6162/u53d4/u80cc/u7ec6...省略文字。。。" ;

  25. //设置备选随机汉字的个数

  26. int length=base.length();

  27. //创建缓存图像

  28. BufferedImageimage= new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

  29. //获取图像
  30. Graphicsg=image.getGraphics();

  31. //创建随机函数的实例

  32. Randomrandom= new Random();

  33. //此处设定图像背景色

  34. g.setColor(getRandColor(random, 188 , 235 ));

  35. g.fillRect( 0 , 0 ,width,height);

  36. //设置随机备选的字体类型

  37. String[]fontTypes={ "/u5b8b/u4f53" , "/u65b0/u5b8b/u4f53" ,

  38. "/u9ed1/u4f53" , "/u6977/u4f53" , "/u96b6/u4e66" };

  39. int fontTypesLength=fontTypes.length;

  40. //在图片背景上增加噪点,增加图片分析难度

  41. g.setColor(getRandColor(random, 180 , 199 ));

  42. g.setFont( new Font( "TimesNewRoman" ,Font.PLAIN, 14 ));

  43. for ( int i= 0 ;i< 4 ;i++){

  44. g.drawString( "@*@*@*@*@*@*@*" ,

  45. 0 , 5 *(i+ 2 ));

  46. }

  47. //取随机产生的验证码(4个汉字)

  48. //保存生成的汉字字符串

  49. StringsRand= "" ;

  50. for ( int i= 0 ;i< 4 ;i++){

  51. int start=random.nextInt(length);

  52. Stringrand=base.substring(start,start+ 1 );

  53. sRand+=rand;

  54. //设置图片上字体的颜色

  55. g.setColor(getRandColor(random, 10 , 150 ));

  56. //设置字体格式

  57. g.setFont( new Font(fontTypes[random.nextInt(fontTypesLength)],

  58. Font.BOLD, 18 +random.nextInt( 6 )));

  59. //将此汉字画到验证图片上面

  60. g.drawString(rand, 24 *i+ 10 +random.nextInt( 8 ), 24 );

  61. }

  62. //将验证码存入Session中

  63. session.setAttribute( "rand" ,sRand);

  64. g.dispose();

  65. //将图象输出到JSP页面中

  66. ImageIO.write(image, "JPEG" ,response.getOutputStream());

  67. //关闭流

  68. out.clear();

  69. out=pageContext.pushBody();

  70. %>
以上就是JSP中产生中文验证码过程的源码分析,由中文作为验证码存在于JSP页面中,将会存在JSP中文乱码的现象,接下来文章将介绍如何调用JSP验证码产生和使用的方法,以及如何解决JSP中文验证码乱码问题和其他JAVA验证码的实现。

自【 http://www.blogjava.net/improviser/archive/2008/11/29/243370.html

<!--新Google 468*60横幅广告开始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 468x60, 创建于 08-8-6 */ google_ad_slot = "7368701459"; google_ad_width = 468; google_ad_height = 60; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--新Google 468*60横幅广告结束-->

<!--新Google 468x15 横链接单元开始--><script type="text/javascript"><!-- google_ad_client = "pub-7343546549496470"; /* 468x15 横链接单元 */ google_ad_slot = "5785741422"; google_ad_width = 468; google_ad_height = 15; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><!--新Google 468x15 横链接单元结束-->

<!-- Google Reader shared发布代码开始 --><script type="text/javascript" src="http://www.google.com/reader/ui/publisher.js"></script><script type="text/javascript" src="http://www.google.com/reader/public/javascript/user/00697638153916680411/state/com.google/broadcast?n=5&amp;callback=GRC_p%28%7Bc%3A%22green%22%2Ct%3A%22%5Cu8FD9%5Cu4E9B%5Cu6587%5Cu7AE0%5Cu4E5F%5Cu503C%5Cu5F97%5Cu4E00%5Cu770B%22%2Cs%3A%22false%22%7D%29%3Bnew%20GRC"></script><!-- Google Reader shared发布代码结束 -->

JSP中文验证码及源代码实现


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论