Servlet画验证码
2019-05-16 / JAVA / 1150 次围观 / 0 次吐槽 /Servlet
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/VerificationCode")
public class VerificationCode2 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//创建随机数
Random random = new Random();
//创建图片内存对象
int width = 100;
int height = 30;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//获取图片
Graphics graphics = image.getGraphics();
//设置图片背景颜色
graphics.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));//设置画笔颜色
graphics.fillRect(0, 0, width, height);
//加干扰线
graphics.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));
for(int i=0;i<5;i++) {
int x1Start = random.nextInt(width);
int x2Start = random.nextInt(width);
int y1End = random.nextInt(height);
int y2End = random.nextInt(height);
graphics.drawLine(x1Start, y1End, x2Start, y2End);//画线
}
//画随机数
for(int i=1;i<5;i++) {
graphics.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));
graphics.drawString(random.nextInt(10)+"", 20*i, 20);//画字符
}
//输出图片 设置响应格式
resp.setContentType("image/jpeg");
ImageIO.write(image, "jpeg", resp.getOutputStream());
}
}包实现 : ValidateCode.jar
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ValidateCode vc = new ValidateCode(150, 50, 4, 15);
vc.write(resp.getOutputStream());
}html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>验证码</title>
<script type="text/javascript">
function refreshCode() {
var imgCode = document.getElementById('code');
imgCode.src = '/web/VerificationCode?' + new date().getTime();
}
</script>
</head>
<body>
<form action="">
用户名:<input type="text"><br/>
密码:<input type="password"><br/>
验证码:<input type="text"><br/>
<a href=""><img id="code" src="/web/VerificationCode">刷新验证码</a>
</form>
</body>
</html>Powered By Cheug's Blog
Copyright Cheug Rights Reserved.