验证码一般用于登陆界面的防机器验证,但自已写一个验证码组件较为麻烦,我们可以用ValidateCode组件来实现,以下通过两个示例来演示ValidateCode的用法,最后附jar包,可自行下载。
主要步骤:
1.导入ValidateCode.jar包。
2.添加窗体。
3.实例化ValidateCode对象(构造方法:ValidateCode(图像宽度,图像高度,验证码位数,障碍线个数))。
4.使用ValidateCode对象的getBuffedImg()方法获取BufferedImage对象。
5.处理BufferedImage对象到JLabel组件中进行显示。
6.使用ValidateCode对象的getCode()方法获取验证码。
1.
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import cn.dsna.util.images.ValidateCode;
import cn.dsna.util.images.ValidateCodeServlet;
public class TestValidateCode {
public static JFrame valFrm(){ //添加窗体
JFrame jFrame = new JFrame("验证码");
jFrame.setSize(300, 300);
jFrame.setVisible(true);
return jFrame;
}
public static void showVal(){ //验证码添加
ValidateCode validateCode = new ValidateCode(200, 70, 4, 100); //实例化验证码组件
JLabel jLabel = new JLabel(); //jlabel用于显示验证码图像
jLabel.setSize(200, 70);
ImageIcon valImg = new ImageIcon();
valImg.setImage(validateCode.getBuffImg()); //使用getBuffImg获取BufferedImage对象
jLabel.setIcon(valImg); //将验证码图像显示
JFrame jFrame = valFrm();
JLabel code = new JLabel(validateCode.getCode()); //使用getCode方法获取验证码
jFrame.add(jLabel);
jFrame.add(code);
}
public static void main(String[] args) {
showVal();
}
}
2.
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspApplicationContext;
import javax.swing.*;
import java.applet.AppletContext;
import java.io.IOException;
@WebServlet(name = "Servlet",urlPatterns = "/Servlet")
public class Servlet extends ValidateCodeServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
@Override
protected void doGet(HttpServletRequest reqeust, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/jpeg");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0L);
ValidateCode vCode = new ValidateCode(120, 40, 5, 100);
reqeust.setAttribute("code", vCode.getCode());
vCode.write(response.getOutputStream());
}
}
ValidateCode对象方法介绍:
1.public ValidateCode(int width, int height)
实例化对象,指定宽度和高度,默认验证码位数为5为位,障碍线为150;
2.public ValidateCode(int width, int height, int codeCount, int lineCount)
实例化对象,指定宽度、高度、验证码位数、障碍线数量;
3.public void createCode()
生成验证码,调用该方法可以重新生成验证码,实例化对象时会自动调用该方法生成一个默认的验证码,后续可再次调用生成。
4.write(String path) throws IOException
将生成的验证码图像生成一个文件保存到指定路径。
5.public void write(OutputStream sos) throws IOException
将生成的验证码图像写入输出流对象,可用于web端。
6.getBuffImg()
获取验证码图像的BufferedImage对象;
7.getCode()
获取验证码字符串;
组件下载链接:
链接:https://pan.baidu.com/s/1iNU16fya67ZM3MaACfdm_w
提取码:aznv