Java验证码图片生成代码
Java生成验证码图片的具体代码,供大家参考,具体内容如下
1、首先新建一各专门生成验证码图片的类VerifyCode:
publicclassVerifyCode{
privateintw=70;
privateinth=35;
privateRandomr=newRandom();
//宋体,华文楷书,黑体,华文新魏,华文隶书,微软雅黑,楷体_GB2312,TimesNewRoman
privateString[]fontNames={"宋体","华文楷书","黑体","华文新魏","微软雅黑","华文隶书","楷体_GB2312","TimesNewRoman"};
//可选的字符
privateStringcodes="23456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";
//背景色
privateColorbgColor=newColor(255,255,255);
//验证码上的文本
privateStringtext;
//生成随机颜色
privateColorrandomColor(){
intred=r.nextInt(150);
intgreen=r.nextInt(150);
intblue=r.nextInt(150);
returnnewColor(red,green,blue);
}
//生成随机字体
privateFontrandomFont(){
intindex=r.nextInt(fontNames.length);//获取下标
StringfontName=fontNames[index];//生成随机的字体名称
intstyle=r.nextInt(4);//获取随机样式,0表示无样式,1表示粗体,2表示斜体,3表示粗体加斜体
intsize=r.nextInt(5)+24;//生成随机字号,24~28
returnnewFont(fontName,style,size);
}
//画干扰线
privatevoiddrawLine(BufferedImageimage){
intnum=3;//一共画3条
Graphics2Dg2=(Graphics2D)image.getGraphics();
for(inti=0;i
2、在jsp页面上应用:
其核心代码如下:
用户名:">
密码:
验证码:
看不清换一张
看不清换一张使用javascript实现,代码如下:
function_change(){
/**
*1.得到image图片
*2.修改其src为http://dh.wk163.com/test/VerifyCodeServlet
*/
varimgEle=document.getElementById("img");
imgEle.src="http://dh.wk163.com/test/VerifyCodeServlet?a="+newDate().getTime();
}
+newDate().getTime()这条语句可以欺骗浏览器,以为请求是新的,实现验证码的改变。
3、在第2步中,VerifyCodeServlet的实现生成一张验证码,并且通过session域保存验证码图片对应的文本内容,为后面的登录验证验证码是否正确做准备。核心代码如下:
publicclassVerifyCodeServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
/*
*1.生成图片
*2.保存图片上的文本到session域中
*3.把图片响应给客户端
*/
VerifyCodevc=newVerifyCode();
BufferedImageimage=vc.getImage();
//保存图片上的文本到session域
request.getSession().setAttribute("session_code",vc.getText());
VerifyCode.output(image,response.getOutputStream());
}
}
4、最后一步,实现登录验证验证码是否正确,其核心代码如下:
publicclassLoginServletextendsHttpServlet{
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
/*
*校验验证码
*1.从session中获取正取的验证码
*2.从表单中获取用户填写的验证码
*3.进行比较
*4.如果相同,向下运行,否则保存错误信息到request域,转发到login.jsp
*/
StringsessionCode=(String)
request.getSession().getAttribute("session_code");//获得的验证码里面对应的文本内容
StringparamCode=request.getParameter("verifyCode");//用户输入文本框里面的内容
if(!paramCode.equalsIgnoreCase(sessionCode)){
request.setAttribute("msg","验证码错误!");
request.getRequestDispatcher("/login.jsp").forward(request,response);//打回到登录界面。
return;//返回,不继续执行下面的语句。
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。