java生成动态验证码_java动态生成验证码

后台代码:RandomImageServlet.java

package com.zhaoran.servlet;

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.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.RandomStringUtils;

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

@WebServlet("/randomImageServlet.action")

public class RandomImageServlet extends HttpServlet {

private static final long serialVersionUID = 1921126722013879767L;

public void doTask(HttpServletRequest request,HttpServletResponse response) throws IOException{

int len=4,width=70,height=30;

String randomStr=null;

HttpSession  session=request.getSession(true);

if(randomStr==null){

randomStr=RandomStringUtils.random(len, true, false).toLowerCase();

session.setAttribute("vaildcode", randomStr);

}

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setDateHeader("Expires", 0);

response.setContentType("image/jpeg");

ServletOutputStream out=response.getOutputStream();

BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics gra=image.getGraphics();

gra.setColor(new Color(228, 230, 229));

gra.fillRect(0, 0, width, height);

gra.setColor(Color.red);

gra.setFont(new Font("Lucida Sans", Font.BOLD, 20));

Random r=new Random();

gra.drawString(randomStr, 10, 20);

int red=0,green=0,blue=0;

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

red=r.nextInt(255);

green=r.nextInt(255);

blue=r.nextInt(255);

gra.setColor(new Color(red, green, blue));

int x=r.nextInt(width);

int y=r.nextInt(height);

int x1=r.nextInt(12);

int y1=r.nextInt(12);

gra.drawLine(x, y, x+x1,y+y1);

}

JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close();

}

@Override

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

doTask(request, response);

}

@Override

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

doTask(request, response);

}

}

前台代码:index.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

">

function changeCode(){

$('#codeYZ').attr('src','randomImageServlet.action?'+Math.random());

}

My JSP 'index.jsp' starting page

验证码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值