科技优家 2017-06-12 12:10

昨天在网上看到了一篇关于验证码的文章,很不错,但是有些不尽人意的地方,比如没有考虑到前端传过来的验证码如果是小写的话,那么做验证的时候就会出现错误,

因为java是严格区分大小写的,还有就是验证码会重叠在一起的情况没有考虑到,再者验证码看不清刷新的功能没有做出来

在此我做下修改:

首先需要导入ValidateCode.jar包

1 package com.wqy.ValidateCode; 2 3 import java.io.IOException; 4 5 import javax.imageio.ImageIO; 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 import cn.dsna.util.images.ValidateCode; 12 13 public class ValidateCode1 extends HttpServlet { 14 15 public void doGet(HttpServletRequest request, HttpServletResponse response) 16 throws ServletException, IOException { 17 //控制不要缓存 18 response.setHeader("Expires", "-1"); 19 response.setHeader("Cache-Control", "no-cache"); 20 response.setHeader("Pragma", "no-cache"); 21 int width=120;//宽度 22 int height=25;//高度 23 int codeCount=4;//验证码的个数 24 int lineCount=9;//干扰线的个数 25 //设置验证码 26 ValidateCode vc = new ValidateCode(width, height, codeCount, lineCount); 27 //ValidateCode(120,25,4,9); 28 String code = vc.getCode; 29 //将验证码存放到Attribute域中 30 request.getSession.setAttribute("code", code); 31 //输出 32 ImageIO.write(vc.getBuffImg, "jpg", response.getOutputStream); 33 34 } 35 36 public void doPost(HttpServletRequest request, HttpServletResponse response) 37 throws ServletException, IOException { 38 doGet(request,response); 39 } 40 41 }

下面是html代码:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <% String path = request.getContextPath; String basePath = request.getScheme+"://"+request.getServerName+":"+request.getServerPort+path+"/"; %> <html> <head> <title>验证码</title> </head> <body> <form action="${pageContext.request.contextPath}/servlet/LoginServlet" method="post"> 用户名:<input type="text" name="username"/></br> 密码:<input type="password" name="password"/></br> 验证码:<input type="text" name="captcha" size="4"> <img src="${pageContext.request.contextPath}/servlet/ValidateCode1" id="CreateCheckCode" οnclick="this.src=this.src+'?'" width="120" height="25"> <a href="javascript:CreateCheckCode.onclick">看不清,换一张</a></br> <input type="submit" value="登录"> </form> </body> </html>

后台验证的servlet代码:

1 package com.wqy.ValidateCode; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 public class LoginServlet extends HttpServlet { 11 public void doGet(HttpServletRequest request, HttpServletResponse response) 12 throws ServletException, IOException { 13 //获取前端传来的验证码 14 String name = request.getParameter("captcha"); 15 //从Attribute域中获取存放的验证码 16 String code = (String)request.getSession.getAttribute("code"); 17 //前后端验证码做比较。(验证码.toLowerCase是让它忽略大小写,这样在前端做验证的时候就不会因为大小写问题引发异常) 18 if(code.toLowerCase.equals(name.toLowerCase)){ 19 System.out.println("验证码正确"); 20 } 21 } 22 23 public void doPost(HttpServletRequest request, HttpServletResponse response) 24 throws ServletException, IOException { 25 doGet(request, response); 26 } 27 28 }

最终显示结果:

转载于:https://www.cnblogs.com/shierban/p/6994368.html

用java来实现验证码功能相关推荐

  1. java短信验证码功能发送的验证码如何校验_java 实现发送短信验证码功能

    原标题:java 实现发送短信验证码功能 如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenz ...

  2. java短信验证码功能发送的验证码如何校验_Java实现发送短信验证码功能

    一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口( ...

  3. 用Java实现图片验证码功能

    一.什么是图片验证码? 可以参考下面这张图: 我们在一些网站注册的时候,经常需要填写以上图片的信息. 1.图片生成实体类: 1 package com.hexianwei.graphic; 2 3 i ...

  4. java实现手机验证码功能

    手机短信验证现在在各种系统可以说都是用的非常普遍的,这个可能是方便和安全性的考虑,所以才广泛的使用简单实用一下短信接口. Demo下载 链接: 百度网盘 请输入提取码 提取码: i1r8 实用短信接口 ...

  5. java短信验证码功能发送的验证码如何校验_发送短信验证码和邮箱验证码—Java实现...

    短信验证码 短信验证码都是调用一些接口来进行短信的发送,短信验证码在登录.注册等操作中使用的最广泛,本文这一节演示如何使用Java制作一个简单的短信验证码登录. 我这里演示使用的是聚合数据的短信接口( ...

  6. 2021金三银四,java短信验证码功能怎么实现

    程序员:给多少工资,干多少事 我们不是经常会看到一个关于西游记的"悖论"吗: 为什么孙悟空初期大闹天宫的时候那么厉害?因为他自己当老板,打一群天庭的打工仔. 为什么取经路上又变得不 ...

  7. java短信验证码功能发送的验证码如何校验_企业如何选择短信平台才能保障安全和稳定性?...

    现如今互联网不断发展,人们对网络的依赖性越来越大, 伴随而来的网络运营安全问题越来越严重,安全是我们企业都担忧的一个大问题,短信平台的安全性再次被企业所重视起来. 短信验证码日常生活中经常遇到,比如银 ...

  8. java生成验证码实例_Java生成验证码功能实例代码

    页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_te ...

  9. java阿里云短信服务开通验证码功能实现(1)

    java阿里云短信验证码功能实现篇(一) 最近有朋友咨询java短信验证码,系统注册登录,修改密码时使用,作为小白的我也是第一次搞这个,若有不好之处,忘见谅,废话不多说,我将写两篇文章来说明如何开通短 ...

最新文章

  1. Hinton再挖新坑:改进胶囊网络,融合Transformer神经场等研究
  2. traceview android studio,TraceView 的正确打开方式
  3. 【强烈推荐】Github star 10K+,周志华机器学习详细公式推导!
  4. 较全的jdom使用教程
  5. DualLinkList
  6. T-GANs:基于“图灵测试”的生成对抗模型
  7. 在windows下安装git中文版客户端并连接gitlab
  8. 重读经典:完全解析特征学习大杀器 ResNet
  9. Leaflet使用vector tiles 标注label设置
  10. FreeSync是什么
  11. css3 混合,css3混合模式
  12. 时间选择插件jquery.timepickr
  13. Hadoop组件启动的三种方式及配置SSH无密码登入
  14. java 坦克大战 素材_经典90坦克大战素材
  15. 社会的需求对科技进步的作用要超过十所大学
  16. Vue-element-admin 基础模板
  17. 冬瓜哥详解存储OS变迁
  18. 深圳金证股份面试的经历
  19. sip 时序图_教你如何看懂时序图(小白如何快速轻松的看懂时序图)
  20. creo5.0安装教程

热门文章

  1. 微信读书android换到ios,Android 微信读书本周推荐传送带列表实现
  2. Spring Web Flow 入门demo(二)与业务结合 附源码
  3. 算法是怎样决定你的职业生涯的
  4. 2021年高考成绩查询陕西文科,2021年陕西高考文科二本分数线预测
  5. matlab中显示ycbcr图像,rgb到matlab中的ycbcr转换
  6. 采用光线跟踪绘制场景 c++_虚拟演播室的跟踪系统以及色键器应要选择什么型号...
  7. 手机端网站底部悬浮 广告代码 代关闭_网站被劫持,网站被劫持了应该怎么办?怎么解决网站被劫持?...
  8. 一文带你马上清楚bootstrap的栅格系统
  9. python简单连接数据库
  10. java在线预览txt、word、ppt、execel,pdf代码