疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

网络编程中网页中的验证码生成


 

        今天我们直接上代码来介绍一下关于网络编程中网页中的验证码生成的方法:
 
  <%
 
  //no-cache指示请求或响应消息不能缓存
 
  response.setHeader("Cache-Control", "no-cache");
 
  int width = 80, height = 20;
 
  //在内存中创建图像
 
  BufferedImage image = new BufferedImage(width, height,
 
  BufferedImage.TYPE_INT_RGB);
 
  //获取画笔
 
  Graphics g = image.getGraphics();
 
  //设置画笔颜色
  g.setColor(Color.WHITE);
 
  g.fillRect(0, 0, width, height);
 
  //开始生成验证码,这里用加法求和
 
  Random r = new Random();
 
  int num1 = r.nextInt(10);//操作数1
 
  int num2 = r.nextInt(10);//操作数2
 
  int result = num1 + num2;//加法和结果
 
  String code = String.valueOf(result);
 
  //将验证码存入session
 
  session.setAttribute("code", code);
 
  //将验证码显示到图像中
 
  g.setColor(Color.BLACK);
 
  g.setFont(new Font("", Font.PLAIN, 20));
 
  g.drawString(num1+"+"+num2+"= ?", 10, 15);
 
  //随即产生干扰图像
 
  //随即产生5条直线
 
  for (int i = 0; i < 5; i++) {
 
  int x = r.nextInt(width);
 
  int y = r.nextInt(height);
 
  g.setColor(Color.RED);
 
  g.drawLine(width/(x+1), height/(y+1), x, y);
 
  }
 
  //产生100个点
 
  for(int i=0;i<100;i++) {
 
  int x = r.nextInt(width);
 
  int y = r.nextInt(height);
 
  g.setColor(Color.BLUE);
 
  g.drawOval(x, y, 1, 1);
 
  }
 
  ImageIO.write(image, "JPEG", response.getOutputStream());
 
  out.clear();
 
  out = pageContext.pushBody();
 
  %>
 
  td><img id="validation" src="validation.jsp" onclick="refresh()">引用验证码即可