Java实现登录界面的验证码

来源:互联网 发布:儿童画图软件 编辑:程序博客网 时间:2024/05/31 13:16

首先我们创建一个GetRandImage类用来获取随机验证码和图片

package com.zhu.util;import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.Transparency;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;public class GetRandImage {private int width;private int height;private String rand;public GetRandImage(int width,int height){this.width=width;this.height=height;}public BufferedImage createRandImage(){  //创建验证码图片Graphics2D g2d=(Graphics2D)new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB).getGraphics();//创建背景透明的图片BufferedImage image=g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);g2d=image.createGraphics();Random random=new Random();Color color;for(int i=0;i<200;i++){      //画200个小圆点用来干扰读取验证码int x=random.nextInt(width);int y=random.nextInt(height);color=new Color(random.nextInt(120)+130,random.nextInt(120)+130,random.nextInt(120)+130);g2d.setColor(color);g2d.fillOval(x, y, 2, 2);}g2d.setFont(new Font("宋体",1, 30));for(int i=0;i<4;i++){int x=random.nextInt(10);   //随机产生验证码rand+=x;color=new Color(random.nextInt(130),random.nextInt(130),random.nextInt(130));g2d.setColor(color);g2d.drawString(x+"",8+i*21,30);}g2d.dispose();return image;}public String getRand(){    //获取验证码return rand;}    //先用一个main函数测试能后生成我们需要的图片   public static void main(String[] args) {System.out.println("好了");GetRandImage get=new GetRandImage(100, 40);BufferedImage image=(BufferedImage)get.createRandImage();File file=new File("e://my.jpg");try {ImageIO.write(image, "png", file);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
然后创建一个  image.jsp文件   contentType="image/jpeg"表示要jsp输出的内容为图片

<%@ page language="java" contentType="image/jpeg"%><%@page import="com.zhu.util.GetRandImage,javax.imageio.ImageIO,java.awt.image.BufferedImage,java.util.*" %><% response.setHeader("Pragma","No-cache");response.setHeader("Cache-Control","no-cache");response.setDateHeader("Expires", 0);GetRandImage get=new GetRandImage(100,40);BufferedImage image=get.createRandImage();String randString=get.getRand();session.setAttribute("randString", randString);ImageIO.write(image, "png", response.getOutputStream());out.clear();out = pageContext.pushBody();%>

此时我们就可以写一个登录界面用来看看我们的验证码是什么效果(只需要一个img标签即可显示,<img   alt="" src="image.jsp">)

下面是效果图


原创粉丝点击