介绍
这篇文章给大家分享的是有关如何用java来生成后台验证码的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
我们先来看下效果:
一、适用需求
后台生成验证码,用于登陆验证。
二,实现流程
1,视图层思路
(1)输入用于输入验证码,一个img用于展示验证码
(2)校验输入的验证码是否合格,双击img刷新验证码,绑定onblue失去焦点事件(鼠标失去焦点时触发的事件)
(3) onblue事件中做校验,
(4) img中的src属性值为后台生成验证码的方法请求路径(即requestMapping的路径),当再点击验证码的时候,再动态设置src属性即可(原访问地址+随机时间戳,防止同一路径浏览器不另做访问的问题)
注意:后台直接返回图片,不是验证码的字符!若返回字符,则验证码就失去了意义(前台很容易就可以获取验证码字符,进行多次恶意访问了)(这点考虑了系统安全性)
2,后端思路
利用BufferedImage类创建一张图片,再用Graphics2D对图片进行绘制(生成随机字符,添加干扰线)即可,注意:生成的验证码字符串要放到会话中,用于接下来登陆的验证码验证(当然也是后台)。
前端代码如下:
& lt; td类=皌ds"在验证码:& lt;/td> & lt; td> & lt;输入类型=皌ext"name=皏alistr">包cn.tedu.web; 进口cn.tedu.util.VerifyCode; 进口javax.servlet.ServletException; 进口javax.servlet.http.HttpServlet; 进口javax.servlet.http.HttpServletRequest; 进口javax.servlet.http.HttpServletResponse; 进口javax.servlet.http.HttpSession; 进口java.io.IOException;/* * *获取验证码 */公开课ValiImgServlet扩展HttpServlet { 保护无效doPost (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException {//禁止浏览器缓存验证码 response.setDateHeader (“Expires", 1); response.setHeader (“Cache-Control",“no-cache"); response.setHeader (“Pragma",“no-cache");//生成验证码 VerifyCode vc=new VerifyCode ();//输出验证码 vc.drawImage (response.getOutputStream ());//获取验证码的值,存储到会话中 字符串valistr=vc.getCode (); HttpSession会话=request.getSession (); session.setAttribute (“valistr" valistr);//打印到控制台 System.out.println (valistr); } 保护无效doGet (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException { doPost(请求、响应); } }
如何用java来生成后台验证码