java Web実装検証コード--コードが超簡単です.
23536 ワード
1、先端表示
HTML:
HTML:
<h3> :h3>
<input type="text" name="validationCode" id="validationCode" placeholder=" " lay-verify="required">
<img src="validate.jsp" id="validationCode_img" title=" ? " onclick="loadimage();return false;" name="validationCode_img" align="middle">
JS:// ,
function loadimage(){
document.getElementById("validationCode_img").src= "validate.jsp?time=" + new Date().getTime();
}
2、一つのページで検証コードの画像を生成します.ここではJSPページでvalidate.jspを使います.@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
@page import="java.awt.image.BufferedImage"%>
@page import="java.awt.Graphics2D"%>
@page import="java.awt.Color"%>
@page import="java.awt.Font"%>
@page import="javax.imageio.ImageIO"%>
@page import="java.util.Random"%>
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> title>
head>
<body>
int width = 60;
int height = 20;
// Image
BufferedImage buffImg = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
//
Random random = new Random();
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
// ,
Font font = new Font("Times New Roman", Font.PLAIN, 18);
//
g.setFont(font);
//
g.setColor(Color.BLACK);
g.drawRect(0, 0, width - 1, height - 1);
// 160
g.setColor(Color.LIGHT_GRAY);
for (int i = 0; i < 160; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int x1 = random.nextInt(12);
int y1 = random.nextInt(12);
g.drawLine(x, y, x + x1, y + y1);
}
// randomCode
StringBuffer randomCode = new StringBuffer();
int red = 0, green = 0, blue = 0;
// 4
for (int i = 0; i < 4; i++) {
//
String strRand = String.valueOf(random.nextInt(10));
//
red = random.nextInt(110);
green = random.nextInt(50);
blue = random.nextInt(50);
//
g.setColor(new Color(red, green, blue));
g.drawString(strRand, 13 * i + 6, 16);
randomCode.append(strRand);
}
// session
//HttpSession session = request.getSession();
session.setAttribute("randomCode", randomCode.toString());
//
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
// servlet
ServletOutputStream sos = response.getOutputStream();
ImageIO.write(buffImg, "jpeg", sos);
sos.close();
//sos = null;
out.clear();
out = pageContext.pushBody();
%>
body>
html>
3、validate.jspページで生成された検証コードは実はjavaバックエンドで生成されたので、sessionに保存しました.ユーザーが提出する時に記入した検証コードを後端に持っていくだけでいいです.ここではajax要求を使っています.バックエンドは検証コードとsessionの中で同じかどうかを判断するだけでいいです.