Servlet Response對象輸出驗證碼

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>
發佈了75 篇原創文章 · 獲贊 37 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章