专注于高品质PHP技术等信息服务于一体 [STIEMAP] [RSS]

百度提供的广告:
java
当前位置:首页 > 技术文档 > java >  > 
JSP中文的验证码

<%
  //设置页面不缓存
  response.setHeader("Pragma", "No-cache");
  response.setHeader("Cache-Control", "no-cache");
  response.setDateHeader("Expires", 0);
  // 设置图片的长宽
  int width = 176, height = 30;
  //设置备选汉字,这里需要是转码后的汉字
  String base = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740\u4e2a\u5730\u5230\u80cc\u7ec6";
  //备选汉字的长度
  int length = base.length();
  //创建内存图像
  BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  // 获取图形上下文
  Graphics g = image.getGraphics();
  //创建随机类的实例
  Random random = new Random();
  // 设定图像背景色(因为是做背景,所以偏淡)
  g.setColor(getRandColor(random, 200, 250));
  g.fillRect(0, 0, width, height);
  //备选字体
  String[] fontTypes = {
      "\u5b8b\u4f53", "\u65b0\u5b8b\u4f53", "\u9ed1\u4f53", "\u6977\u4f53", "\u96b6\u4e66"};
  int fontTypesLength = fontTypes.length;
  //在图片背景上增加噪点
  g.setColor(getRandColor(random, 160, 200));
  g.setFont(new Font("Times New Roman", Font.PLAIN, 14));
  for (int i = 0; i < 6; i++) {
    g.drawString("*********************************************", 0, 5 * (i + 2));
  }
  //取随机产生的认证码(6个汉字)
  //保存生成的汉字字符串
  String sRand = "";
  for (int i = 0; i < 6; i++) {
    int start = random.nextInt(length);
    String rand = base.substring(start, start + 1);
    sRand += rand;
  //设置字体的颜色
    g.setColor(getRandColor(random, 10, 150));
  //设置字体
    g.setFont(new Font(fontTypes[random.nextInt(fontTypesLength)], Font.BOLD, 18 + random.nextInt(6)));
  //将此汉字画到图片上
    g.drawString(rand, 24 * i + 10 + random.nextInt(8), 24);
  }
  //将认证码存入session
  session.setAttribute("rand", sRand);
  g.dispose();
  //输出图象到页面
  ImageIO.write(image, "JPEG", response.getOutputStream());
%>