java生成验证码详细步骤解析
这篇文章主要为大家详细介绍了java生成验证码的步骤总结,需要的朋友可以参考下
1、serialVersionUID
private static final long serialVersionUID = -8501285780349046114L;
Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。
相当于java类的身份证。主要用于版本控制。
2、BufferedImage类
——BufferedImage 子类描述具有可访问图像数据缓冲区的 Image。
TYPE_INT_RGB
表示一个图像,它具有合成整数像素的 8 位 RGB 颜色分量。
——getGraphics()
此方法返回 Graphics2D,但此处是出于向后兼容性的考虑。
3、request.getParameter()
request.getParameter() 方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。
request.getParameter()方法返回String类型的数据。
4、String... excludeProperty表示不定参数,也就是调用这个方法的时候这里可以传入多个String对象(可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。
注意:可变参数必须位于最后一项eg: private String drawRandomNum(Graphics2D g,String... createTypeFlag))
5、Graphics类
Graphics 类是所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制。
【步骤】:
一、在内存中创建一张图片;
BufferedImage bi = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
——BufferedImage 子类描述具有可访问图像数据缓冲区的 Image。
TYPE_INT_RGB 表示一个图像,它具有合成整数像素的 8 位 RGB 颜色分量。
——getGraphics()
此方法返回 Graphics2D,但此处是出于向后兼容性的考虑。
二、得到图片;
Graphics g = bi.getGraphics();
三、设置图片的背景色;
setBackGround(g);
四、设置图片的边框;
setBorder(g);
五、在图片上画干扰线;
drawRandomLine(g);
六、写在图片上随机数;
String random = drawRandomNum((Graphics2D) g,createTypeFlag);//根据客户端传递的createTypeFlag
七、将随机数存在session中;
request.getSession().setAttribute("checkcode",random);
八、设置响应头通知浏览器以图片的形式打开;
response.setContentType("image/jpeg");//等同于res[onse.setHeader("Content-Type","image/jpeg");
九、设置响应头控制浏览器不要缓存;
response.setDateHeader("expries",-1); response.setHeader("Cache-Control","no-cache"); response.setHeader("Pragma","no-cache");
——setDateHeader
public void setDateHeader(java.lang.String name,long date)
Parameters:
name - the name of the header to set
date - the assigned date value
——setHeader
public void setHeader(java.lang.String name, java.lang.String value)
Parameters:
name - the name of the header
value - the header value If it contains octet string, it should be encoded according to RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
十、将图片写给浏览器;
ImageIO.write(bi,"jpg",response.getOutputStream());
——参数:
im - 要写入的 RenderedImage。
formatName - 包含格式非正式名称的 String。
output - 将在其中写入数据的 OutputStream。
抛出:
IllegalArgumentException - 如果任何参数为 null。
IOException - 如果在写入过程中发生错误。
Atas ialah kandungan terperinci java生成验证码详细步骤解析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan untuk Square Root di Java. Di sini kita membincangkan cara Square Root berfungsi di Java dengan contoh dan pelaksanaan kodnya masing-masing.

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.
