首页 热点资讯 义务教育 高等教育 出国留学 考研考公

java中怎样才能达到验证码效果?

发布网友 发布时间:2022-04-25 16:03

我来回答

1个回答

热心网友 时间:2023-10-15 18:58

先要用Graphics将验证码图片画出来,然后用ImageIO将图片转成流输入到ByteArrayOutputStream中,然后在想获取的地方获取即可追问可以写段代码我看下吗?

追答//1设置应答类型 application/pdf text/html
response.setContentType("image/jpeg");
//清空浏览器缓存
response.setHeader("progma", "no-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
//2 获得输出流
OutputStream os=response.getOutputStream();

//3 输出流 输出一张图片
//创建画板对象
BufferedImage bi=new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
//拿到画笔
Graphics g=bi.getGraphics();
//画背景,先背景颜色,再创建背景形状
drawBackground(g);
//创建随机数字符数组
char[] c=getRandom();
//将生成的验证码通过Session传递
request.getSession().setAttribute("check",new String(c));
//画数字 ,指定数字颜色
drawNum(g,c);
//结束画图
g.dispose();
//4 图片是在内存中的,Servlet通过输出流获得
ByteArrayOutputStream bo=new ByteArrayOutputStream();
/*
* 通过ImageIO把画面bi中的内存画生成一张JPEG图片,
* 把这样的图片传给输出流 由Servlet获得,输出流就可以给servlet
*/
ImageIO.write(bi, "JPEG", bo);
//5servlet获得图片输出流--->再通过Servlet中的OutputStream输出给客户端
byte[] b=bo.toByteArray();
os.write(b);
//6流关闭
bo.close();
os.flush();

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com