驗證碼Java實現(xiàn)
[圖片上傳失敗...(image-50451b-1539494521700)]
1、Servlet實現(xiàn)驗證碼
實現(xiàn)步驟:
- 1、服務(wù)端隨機(jī)生成驗證碼:利用
java.awt中的相關(guān)類,譬如Graphics(核心),BufferedImage - 2、利用
Servlet進(jìn)行Client和Server的交互,進(jìn)行驗證碼的獲取,以及表單的客戶端驗證碼輸入和服務(wù)端存儲的記錄進(jìn)行驗證。
核心代碼:(驗證碼的生成)
public class ImageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//初始化圖片類型
BufferedImage bufferedImage = new BufferedImage(68, 22, BufferedImage.TYPE_INT_RGB);
//進(jìn)行制圖
Graphics graphics = bufferedImage.getGraphics();
//RGB設(shè)置顏色并填充對應(yīng)圖像坐標(biāo)像素點
Color color = new Color(200, 150, 255);
graphics.setColor(color);
graphics.fillRect(0, 0, 68, 22);
char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
Random random = new Random();
int length = chars.length, index;
//循環(huán)隨機(jī)生成驗證碼
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < 4; i++) {
index = random.nextInt(length);
//設(shè)置驗證碼的不同顏色并記錄驗證碼
graphics.setColor(
new Color(random.nextInt(88), random.nextInt(188), random.nextInt(255)));
graphics.drawString(chars[index] + "", (i * 15) + 3, 18);
stringBuffer.append(chars[index]);
}
//將驗證碼的記錄值存儲在session中
req.getSession().setAttribute("picCode", stringBuffer.toString());
//將生成的圖片寫入Response的輸出流中
ImageIO.write(bufferedImage, "JPG", resp.getOutputStream());
}
}
2、插件實現(xiàn)驗證碼:
- 常見驗證碼組件
Jcaptcha和Kaptcha
敬請期待 :)
3、Java圖片驗證碼
敬請期待 :)