简单验证码的实现

 /**
    *1、实现随机生成4个字符0-9|a-z|A-Z
    *2、将这4个字符绘制成一张图片
    */
public class CodeServlet extends HttpServlet
{
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException
    {
      //获取0-1之间的随机数
      Random random =new Random();
      String code="";
      for(int i=0;i<4;i++)
      {
          //nextInt(int n),在 0(包括)和n(不包括)之间均匀分布的 int 值
          int n =random.nextInt(62);
          //0-9,直接输出0-9
          if(n<10)
          {
              code+=n;
          }
          //大于等于10,小于36输出a-z中的任意字符
          else if(n<36)
          {
              code+=(char)(n-10+'a');
          }
          //大于等于36,小于62输出A-Z中的任意字符
          else if(n<62)
          {
              code+=(char)(n-36+'A'); 
          }
       }
      //遍历结束后,生成4个字符0-9|a-z|A-Z
      System.out.println(code);
      HttpSession session=req.getSession();
      //将验证码字符存入session作用域
      session.setAttribute("code",code);
      //2、将这4个字符绘制成一张图片
      //创建img对象
      BufferedImage image= new BufferedImage(68,28,BufferedImage.TYPE_INT_RGB);
      //获取画笔
      Graphics gra =image.getGraphics();
      //设置背景色
      gra.setColor(Color.YELLOW);
      //绘制边框
      gra.fillRect(2, 2, 64, 24);
      Font font =new Font("Courier NEW",Font.BOLD|Font.ITALIC,20);
      //设置字体
      gra.setFont(font);
      //遍历该字符串,绘制图形
      for(int i=0;i<code.length();i++)
      {
          String ch=code.substring(i,i+1);
          gra.setColor(new Color(255,0,0));
          //绘制文字
          gra.drawString(ch,5+i*15, 18);
      }
      //设置响应页面
      resp.setContentType("image/jpeg");
      //获取输出流
      OutputStream out = resp.getOutputStream();
      //在该输出流上创建图像编码器
      JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
      //编码图片
      encoder.encode(image);
      out.flush();
      out.close();
      
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException
    {
        doGet(req, resp);
    }
    
}


code.jsp

<img id ="img"  src="code.jpg" title="看不清,换一张" style="cursor:pointer" οnclick="changeImg()"/>


code.js

function changeImg()
{  
 //定义时间戳
 var timestamp =new Date().getTime();
 //找到img元素
 var img = document.getElementById("img");
 img.src="code.jpg?t="+timestamp;
 
}


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值