java生成图片验证码示例程序_Java教程-查字典教程网
java生成图片验证码示例程序
java生成图片验证码示例程序
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:登陆页面functionrefresh(){loginForm.image.src="creatImage.jsp";}欢...

复制代码 代码如下:

<%@ 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" />

<input type="submit" value="登陆" />

</form>

</body>

</html>

复制代码 代码如下:

<%@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>

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Java学习
    热门Java学习
    编程开发子分类