您的位置:首页 > Web前端 > JavaScript

jsp之简单的验证码生成

2017-07-02 10:43 357 查看
<%@page import="java.awt.image.ImageObserver"%>
<%@page import="java.awt.Image"%>
<%@page import="java.awt.Toolkit"%>
<%@page import="java.awt.Font"%>
<%@page import="java.util.Random"%>
<%@page import="javax.imageio.ImageIO"%>
<%@page import="java.awt.Color"%>
<%@page import="java.awt.Graphics"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!private Random rnd = new Random();%>

<%
//设置图片格式
response.setContentType("image/png");
//内存图片
BufferedImage bi = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);

//获取画笔
Graphics g = bi.getGraphics();

//绘制图片
//获取工程所在的根目录
String fileName = application.getRealPath("xx.png");
System.out.println(fileName);
Image img = Toolkit.getDefaultToolkit().getImage(fileName);
g.drawImage(img, 0, 0, 200, 200, null);

//绘图图案
g.setColor(Color.WHITE);//将画笔设置成白色
//g.fillRect(0, 0, 200, 200);//画填充矩形
g.setColor(Color.BLACK);
g.drawRect(1, 1, 198, 198);//画轮廓矩形
//干扰线
int lines = 100;
g.setColor(Color.GRAY);
for (int i = 0; i < lines; i++) {
int x1 = rnd.nextInt(201);
int x2 = rnd.nextInt(201);
int y1 = rnd.nextInt(201);
int y2 = rnd.nextInt(201);

g.drawLine(x1, y1, x2, y2);
}
//生成随机数
String x = "";
for (int i = 0; i < 6; i++) {
x += rnd.nextInt(10);
}
System.out.print(x);
g.setColor(Color.RED);
g.setFont(new Font("黑体", Font.PLAIN, 40));
g.drawString(x, 30, 100);//画文字
//将图片输出到浏览器
ImageIO.write(bi, "png", response.getOutputStream());
//释放资源
g.dispose();

out.clear();
out = pageContext.pushBody();
%>


点击图片刷新验证码

<img width="100px" alt="验证码" src="img.jsp" onclick="this.src='img.jsp?ran='+Math.random();">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jsp 验证码