生成验证码的工具类和使用的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());
}
}
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());
}
}
相关文章推荐
- 使用servlet编写生成验证码
- 使用Servlet 生成随即图形验证码(1)
- 使用java仿Servlet生成验证码
- 使用Servlet生成图形验证码
- 使用Servlet生成验证码图片
- 【Java】使用Servlet生成随机验证码图片
- JAVA 验证码生成工具类及使用
- JDBC:JSP使用Servlet生成验证码
- Javaweb开发中通过Servlet生成验证码图片
- 【Servlet】生成指定长度随机验证码简化版
- servlet的验证码生成工具
- .NET使用一般处理程序生成验证码!
- javaweb学习总结(九)—— 通过Servlet生成验证码图片
- 用ServletJSP动态生成英文、数字图像验证码
- java图形验证码生成工具类
- 使用PHP实现自动生成验证码
- 使用canvas及js简单生成验证码方法
- 验证码图片生成工具类——Captcha.java
- .NET使用一般处理程序生成验证码!
- 验证码的生成和使用