大家好,欢迎来到IT知识分享网。
验证码定义:
验证码(Capcha):是一种区分用户是计算机还是人的公共全自动程序。
作用:可以防止恶意激活成功教程密码,算票,论坛灌水,有效防止某个黑客对某个特定注册用户用特定程序暴力激活成功教程方式进行不断的登陆尝试。
实际上用验证码是现在很多网站通行的方式,我们运用比较简单的方式实现这个功能。
实现步骤:
生成图片的类:
bufferedimage图像数据缓冲区
graphics绘制图片
color获取颜色
random生成随机数
imageio输出图片
生成图片的实现类:ImageServlet
1.定义bufferedimage对象
2.获取craphics对象
3.通过random产生随机验证码信息
4.使用graphics绘制图片
5.记录验证码信息到session中
6.使用imageIO输出图片
public class ImageServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { BufferedImage bi = new BufferedImage(68, 22, BufferedImage.TYPE_INT_RGB); Graphics g = bi.getGraphics(); Color c = new Color(200, 150, 255); g.setColor(c); g.fillRect(0, 0, 68, 22); char[] ch = "abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0".toCharArray(); Random r = new Random(); int len = ch.length, index; StringBuffer sb = new StringBuffer(); for (int i = 0; i < 4; i++) { index = r.nextInt(len); g.setColor(new Color(r.nextInt(88), r.nextInt(188), r.nextInt(255))); g.drawString(ch[index] + "", (i * 15) + 3, 18); sb.append(ch[index]); } request.getSession().setAttribute("piccode", sb.toString()); ImageIO.write(bi, "JPG", response.getOutputStream()); } }
校验验证码是否正确:LoginServlet类
1.获取页面验证码
2.获取session保存的验证码
3.比较验证码
4.返回校验结果
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{
String piccode = (String) request.getSession().getAttribute("piccode");
piccode = piccode.toLowerCase();
String checkcode = request.getParameter("checkcode").toLowerCase();
response.setContentType("text/html;charset=gbk");
PrintWriter out = response.getWriter();
if(checkcode.equals(piccode)){
out.println("验证码输入正确!");
}else{
out.println("验证码输入错误!!!");
}
out.flush();
out.close();
}
}
前台页面的实现:
<script type="text/javascript"> function reloadCode(){ var time = new Date().getTime(); document.getElementByIdx_x("imagecode").src="<%=request.getContextPath() %>/servlet/ImageServlet?d="+time; } </script> <body> 验证码:<input type="text" name="checkcode"/> <img alt="验证码" id="imagecode" src="<%=request.getContextPath() %>/servlet/ImageServlet"/> <a href="javascript: reloadCode();">看不清楚</a><br> <input type="submit" value="提交"> </body>
开源组件实现验证码:
Jcaptcha:一个用来生成图形验证码的java开源组件,使用起来非常方便。谕spring组合使用,可产生多种形式的验证码。
Kaptcha:一个常用使用的验证码生成工具,有了它,你可以生成各种样式的验证码,因为它是可配置的。
使用Jcaptcha开源组件:
首先在web-inf的lib文件夹下添加如下jar包:
然后实现一个servlet:Submi
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/117772.html
