Servlet類代碼
package cn.test;
import java.awt.Color;
import java.awt.Font;
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;
/**
* Servlet implementation class TestServlet
*/
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
public static final int WIDTH = 110;
public static final int HEIGHT = 25;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedImage img = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
Graphics g = img.getGraphics();
//1 設置背景色
setBackground(g);
//2 設置邊框
setBorder(g);
//3畫干擾線
drawRandomLine(g);
//4寫隨機數
drawRandomNum(g);
//5寫給瀏覽器
response.setContentType("image/jpeg");
ImageIO.write(img,"jpg",response.getOutputStream());
}
private void drawRandomNum(Graphics g) {
g.setColor(Color.red);
g.setFont(new Font("宋體",Font.BOLD,20));
int x=10;
for(int i=0;i<4;i++){
int num = new Random().nextInt(9);
g.drawString(String.valueOf(num), x, 20);
x=x+25;
}
}
private void drawRandomLine(Graphics g) {
g.setColor(Color.GREEN);
for(int i=0;i<5;i++){
int x1 = new Random().nextInt(WIDTH);
int y1 = new Random().nextInt(HEIGHT);
int x2 = new Random().nextInt(WIDTH);
int y2 = new Random().nextInt(HEIGHT);
g.drawLine(x1, y1, x2, y2);
}
}
private void setBorder(Graphics g) {
g.setColor(Color.BLUE);
g.drawRect(1, 1, WIDTH-2, HEIGHT-2);
}
private void setBackground(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, WIDTH, HEIGHT);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
HTML代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>註冊表單</title>
<script type="text/javascript">
function change(img){
alert("click img");
//加個時間 點擊後重新申請網站
img.src = img.src +"?"+ new Date().getTime();
}
</script>
</head>
<body>
<form action="">
驗證碼:<input type="text" name="checkcode">
<img src="/Test/TestServlet" onclick="change(this)" alt="change" style="cursor:hand"><br/>
<input type="submit" value="註冊">
</form>
</body>
</html>