validate.java
来自「基于j2ee的物流软件」· Java 代码 · 共 74 行
JAVA
74 行
package com.wuliu.doservlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Validate implements Service {
public String doService(HttpServletRequest request,
HttpServletResponse response) {
// 定义Image对象
BufferedImage img = new BufferedImage(50, 25,
BufferedImage.TYPE_INT_RGB);
// 获取绘图对象
Graphics g = img.getGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, img.getWidth(), img.getHeight());
Random r = new Random();
StringBuffer sb = new StringBuffer(); // 存放随机数的字符串
// 画噪点
for (int i = 0; i < 70; i++) {
Color color = new Color(r.nextInt(255), r.nextInt(255), r
.nextInt(255));
g.setColor(color);
g.drawOval(r.nextInt(img.getWidth()), r.nextInt(img.getHeight()),
0, 0);
}
// 实例化字体对象
Font font = new Font("Arial", Font.PLAIN, 20);
g.setFont(font);
// 定义存放随机数的字符串
String str = null;
// 产生4个随机数
for (int i = 0; i < 4; i++) {
// 产生随机颜色
Color color = new Color(r.nextInt(255), r.nextInt(255), r
.nextInt(255));
// 设置颜色
g.setColor(color);
// 随机的确定使用字母、数字
if (r.nextInt(2) == 0) {
// 把随机产生的数字转换成字符串
str = String.valueOf(r.nextInt(10));
} else {
// 把随机产生的数字转换成字符
str = String.valueOf(Character.toChars(65 + r.nextInt(26)));
}
// 把产生的字符或数字画到图片
g.drawString(str, 3 + 10 * i + r.nextInt(5), 15 + r.nextInt(8));
// 保存随机数到StringBuffer对象
sb.append(str);
}
// 把随机数保存到session中
request.getSession().setAttribute("code", sb.toString());
// 获取输出流
OutputStream os;
try {
os = response.getOutputStream();
// 把图片以JPEG的格式输出
ImageIO.write(img, "JPEG", os);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?