Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 432|回复: 0

[jsp学习]JSP中图片验证的实现

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 00:51:48 | 显示全部楼层 |阅读模式
    图片验证在有关注册和发表留言经常用到.我在此用jsp写了个.供大家参考.  其中 com.sun.image 不是java的标准包

    1.    random.jsp  (产生四位的随机字符,由0-9,a-z,A-Z构成.并把最终字符串放到session中保存以让后续页面验证真伪)     代码如下: <%@ page autoFlush="false"  import="java.util.*,java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*"%>
    <%@ contentType="text/HTML; charset=gb2312"%>
    <%
    String chose="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; char display[]={"0"," ","0"," ","0"," ","0"},ran[]={"0","0","0","0"},temp; Random rand=new Random(); for(int i=0;i<4;i++)
    {  temp=chose.charAt(rand.nextInt(chose.length()));  display[i*2]=temp;  ran=temp;
      }
      
    String random=String.valueOf(display); session.setAttribute("random",String.valueOf(ran));
      %>
    <%         out.clear();
             response.setContentType("image/jpeg");
             response.addHeader("pragma","NO-cache");
             response.addHeader("Cache-Control","no-cache");
             response.addDateHeader("Expries",0);
             int width=47, height=15;
             BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
             Graphics g = image.getGraphics();
             //以下填充背景颜色
             g.setColor(Color.GREEN);
             g.fillRect(0, 0, width, height);
            //设置字体颜色
             g.setColor(Color.RED);
             g.drawString(random,3,10);
             g.dispose();
             ServletOutputStream outStream = response.getOutputStream();
             JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);
             encoder.encode(image);
             outStream.close();
        %>  

       2.   img.jsp  (显示验证图片.由于本程序简单让验证程序也一并放在了一起)   代码如下: <%@ page contentType="text/html; charset=gb2312" language="java"%>
    <%
    String num=request.getParameter("num");
    String random=(String)session.getAttribute("random"); if(num!=null&&random!=null)
    {
      if(!num.equals(random))
      {
       out.println("<script>alert("验证码错误!请重试。")</script>");   out.println("<script>history.go(-1)</script>");   //response.sendRedirect("img.jsp");
      }
      else
       {
        out.println("<center>验证成功!</center>");
       }
    }
    %>
    <html>
    <head>
    <title>图片验证</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head> <body>
      <form action="img.jsp" method="post">
      <table>
       <tr>
        <td>
         <input type="text" name="num" size=10>
        </td>
        <td>
         <img src="random.jsp">
        </td>
       </tr>
      </table>
      <input type="submit" value="OK">
    </form>
    </body>
    </html>
      

         说明:    有兴趣的网友可以在此基础上增加图片的内容.比如让背景加上纹理.让字符位置歪斜以加大扫描程序的难度.

    源码下载:http://file.javaxxz.com/2014/10/1/005148203.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-10 15:16 , Processed in 0.402954 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表