源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java生成图片验证码示例程序

  • 时间:2021-08-18 01:46 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java生成图片验证码示例程序
[u]复制代码[/u] 代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登陆页面</title> <script type="text/javascript">  function refresh() {   loginForm.image.src = "creatImage.jsp";  } </script> </head> <body> <h1>欢迎登陆本系统</h1><br> <form action="" method = "post" name="loginForm">  <label>账号:<input name="username" type="text" /></label><br>  <label>密码:<input name="password" type="password" /></label><br>  <label>验证码:<input name="code" type="text" /></label>  <!-- 将验证码当做图片处理 -->     <img name="image" border="0" src="creatImage.jsp" onclick="refresh()" />  <input type="submit" value="登陆" /> </form> </body> </html>
[u]复制代码[/u] 代码如下:
<%@page import="java.util.Random"%> <%@page import="java.awt.Graphics"%> <%@page import="javax.imageio.*"%> <%@page import="java.awt.*"%> <%@page import="java.awt.image.BufferedImage"%> <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <%  final char[] str = {'0','1','2','3','4','5','6','7','8','9',     'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',     'r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H',     'I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};  int width=100,height=60;  BufferedImage bi = new BufferedImage(width,height,    BufferedImage.TYPE_INT_RGB);  Graphics g = bi.getGraphics();  g.setColor(new Color(200,200,200));  g.fillRect(0, 0, width, height);  Random rnd = new Random();  StringBuffer sb = new StringBuffer("");  //产生四位数的字母数字验证码,各个数字的颜色也随即  for(int i=0; i<4; i++) {   int num = rnd.nextInt(str.length);   Color c = new Color(rnd.nextInt(256),     rnd.nextInt(256),rnd.nextInt(256));   g.setColor(c);   g.setFont(new Font("", Font.BOLD+Font.ITALIC, 20));   g.drawString(str[num]+"", 10, 17);   sb.append(str[num]);  }  //划干扰线  for(int i=0; i<10; i++) {   Color c = new Color(rnd.nextInt(256),     rnd.nextInt(256),rnd.nextInt(256));   g.setColor(c);   g.drawLine(rnd.nextInt(width), rnd.nextInt(height),     rnd.nextInt(width), rnd.nextInt(height));  }  String s = new String(sb);  /*  若是产生四位数字,则nextInt(8999) + 1000;  然后String.valueOf转换为String  */  //验证码存入session里,方便在登陆校检页比对  session.setAttribute("image",s);  //输出到页面  ImageIO.write(bi,"JPEG",response.getOutputStream());  /*  加入下面这两句什么作用呢?  否则报异常: java.lang.IllegalStateException: getOutputStream()  has already been called for this response  不管原因了  */  out.clear();  out = pageContext.pushBody(); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>图片生成</title> </head> <body> </body> </html>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部