您的位置:首页 > 编程语言 > Java开发

java web 输出随机验证码

2018-01-12 17:58 561 查看
package cn.qust.demo1;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

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 YanZhengMa

 */

@WebServlet("/YanZhengMa")

public class YanZhengMa extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**

     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        BufferedImage img = new BufferedImage(120,25,BufferedImage.TYPE_INT_RGB);

        Graphics g = img.getGraphics();

        //1.设置背景色

        setBackground(g);

        

        //2.设置边框

        setBorder(g);

        

        //3.画干扰线

        drawRandomLine(g);

        

        //4.写随机数

        drawRandomNumber(g);

        

        //5.图形输出到浏览器

        response.setContentType("image/jpeg");

        ImageIO.write(img, "jpg", response.getOutputStream());

        

    }

    //u4e00-u9fa5

    private void drawRandomNumber(Graphics g) {

        g = (Graphics2D)g;

        g.setColor(Color.RED);

        g.setFont(new Font("宋体",Font.BOLD,20));

        int x=10;

        for(int i=0;i<4;i++) {

            int degree = new Random().nextInt(30);

            String str = new Random().nextInt(9)+"";

            ((Graphics2D) g).rotate(degree*Math.PI/180,x,20);//设置旋转角度

            g.drawString(str, x, 20);

            ((Graphics2D) g).rotate(-degree*Math.PI/180,x,20);

            x+=30;

            

        }

    }

    private void drawRandomLine(Graphics g) {

        g.setColor(Color.GREEN);

        for(int i=0;i<5;i++) {

            int x1 = new Random().nextInt(119)+1;

            int y1 = new Random().nextInt(24)+1;

            g.drawOval(x1, y1,5, 5);

        }

        

    }

    private void setBorder(Graphics g) {

        g.setColor(Color.BLUE);

        g.drawRect(1, 1, 118, 23);

        

    }

    private void setBackground(Graphics g) {

        g.setColor(Color.WHITE);

        g.fillRect(0, 0, 120, 25);

    }

    /**

     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // TODO Auto-generated method stub

        doGet(request, response);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息