验证码

来源:互联网 发布:win10打不开任何软件 编辑:程序博客网 时间:2024/06/05 01:55

思路:用Java代码生成一个验证码图片,将其中的随机产生的数据存在session中

<%@page import="javax.imageio.ImageIO"%><%@page import="java.awt.Font"%><%@page import="java.awt.Graphics"%><%@page import="java.awt.image.BufferedImage"%><%@page import="java.awt.Color"%><%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%@ page contentType="image/jpeg"%><%!    public Color getColor(){        Random rand = new Random();        int r = rand.nextInt(256);        int g = rand.nextInt(256);        int b = rand.nextInt(256);        return new Color(r,g,b);    }    public String getNum(){        String str = "";        Random rand = new Random();        for(int i=0;i<4;i++){            str = str+rand.nextInt(10);        }        return str;    } %><%    response.setHeader("pragma", "mo-cache");    response.setHeader("cache-control", "no-cache");    response.setDateHeader("expires", 0);    BufferedImage image = new BufferedImage(80,30,BufferedImage.TYPE_INT_RGB);    Graphics g = image.getGraphics();    g.setColor(new Color(200,200,200));    g.fillRect(0,0,80,30);    for (int i = 0; i < 30; i++) {        Random random = new Random();        int x = random.nextInt(80);        int y = random.nextInt(30);        int xl = random.nextInt(x+10);        int yl = random.nextInt(y+10);        g.setColor(getColor());        g.drawLine(x, y, x + xl, y + yl);    }    g.setFont(new Font("serif", Font.BOLD,16));    g.setColor(Color.BLACK);    String checkNum = getNum();//"2525"    StringBuffer sb = new StringBuffer();    for(int i=0;i<checkNum.length();i++){        sb.append(checkNum.charAt(i)+" ");//"2 5 2 5"    }    g.drawString(sb.toString(),15,20);    session.setAttribute("CHECKNUM",checkNum);//2525    ImageIO.write(image,"jpeg",response.getOutputStream());    out.clear();    out = pageContext.pushBody(); %>
原创粉丝点击