您的位置:首页 > 其它

生成验证码的工具类和使用的servlet

2017-09-06 18:20 471 查看
工具类:

package cn.sdut.util;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

public class ImageCodeUtil {

private ImageCodeUtil(){

}

/*
* 获得图像 塞进session
*/
public static BufferedImage getImage(HttpServletRequest req){
String yzm = UUID.randomUUID().toString().substring(0, 4);//验证码4为
req.getSession().setAttribute("RANDOMCODE_IN_SESSION", yzm);
Random r = new Random();
//1.创建一个bufferedimage对象
BufferedImage image = new BufferedImage(70, 20, BufferedImage.TYPE_INT_RGB);
//2.绘制长方形
Graphics g = image.getGraphics();
g.setColor(new Color(233, 222, 220));
g.fillRect(0, 0, 60, 20);
//3.绘制干扰线
for(int i = 0;i < 200;i++){
g.setColor(new Color(40+r.nextInt(200),40+r.nextInt(200),40+r.nextInt(200)));
int x = r.nextInt(50);
int y = r.nextInt(20);
Font font = new Font("宋体",Font.BOLD+Font.ITALIC,20);
g.setFont(font);
g.drawLine(x,y, x+r.nextInt(20), y+r.nextInt(15));
}
//4.写进四位数字
g.setColor(new Color(23, 22, 20));
g.drawString(yzm, 15, 15);
//关闭Graphics对象,释放资源
g.dispose();
return image;
}

/*
* 校验验证码是否正确
*/
public static boolean validate(HttpServletRequest req , String randomCode){
String randomSessionCode = (String) req.getSession().getAttribute("RANDOMCODE_IN_SESSION");
if(StringUtil.hasLength(randomCode)&& StringUtil.hasLength(randomSessionCode)){
if(randomCode.equalsIgnoreCase(randomSessionCode)){
req.getSession().removeAttribute("RANDOMCODE_IN_SESSION");//验证完毕,在session中删除
return true;
}
}
return false;
}

}
输出图片的servlet:
package cn.sdut.servlet;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.UUID;

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;

import cn.sdut.util.ImageCodeUtil;
@WebServlet(loadOnStartup=1,urlPatterns={"/imgCodeServlet"})
public class ImgCodeServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置返回类型
resp.setContentType("image/jpeg");
//生成验证码图片用到了java.awt包
BufferedImage image = ImageCodeUtil.getImage(req);
//将image通过outputStream返回
ImageIO.write(image, "JPEG", resp.getOutputStream());

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