AJAX方式进行验证码的判断(JS方式)
1.生成验证码
<%@ page language="java" pageEncoding="UTF-8"%> <%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %> <%!public Color getColor(){Random random = new Random();int r = random.nextInt(256);int g = random.nextInt(256);int b = random.nextInt(256);return new Color(r,g,b);}public String getNum(){String str = "";Random random = new Random();for(int i=0;i<4;i++){str += random.nextInt(10);}return str;} %> <%response.setHeader("pragma", "mo-cache");response.setHeader("cache-control", "no-cache");response.setDateHeader("expires", 0);BufferedImage image = new BufferedImage(80,30,BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics();g.setColor(new Color(200,200,200));g.fillRect(0,0,80,30);for (int i = 0; i < 30; i++) {Random random = new Random();int x = random.nextInt(80);int y = random.nextInt(30);int xl = random.nextInt(x+10);int yl = random.nextInt(y+10);g.setColor(getColor());g.drawLine(x, y, x + xl, y + yl);}g.setFont(new Font("serif", Font.BOLD,16));g.setColor(Color.BLACK);String checkNum = getNum();//"2525" StringBuffer sb = new StringBuffer();for(int i=0;i<checkNum.length();i++){sb.append(checkNum.charAt(i)+" ");//"2 5 2 5" }g.drawString(sb.toString(),15,20);session.setAttribute("CHECKNUM",checkNum);//2525 ImageIO.write(image,"jpeg",response.getOutputStream());out.clear();out = pageContext.pushBody(); %>
2.添加验证码
<tr><th>验证码:</th><td><input size="2" type="text" name="checkcode" id="checkcodeID" maxlength="4"/></td><td id="checked" ><img id="imageId" src="${pageContext.request.contextPath }/jsp/01_image.jsp"/><td id="response"></td></tr>
3.创建AJAX
function createAJAX(){var ajax = null;try{ajax = new ActiveXObject("microsoft.xmlhttp");}catch(e1){try{ajax = new XMLHttpRequest();}catch(e2){alert("你的浏览器不支持ajax!");}}return ajax;}
4.异步方式进行验证
<!-- 去除空格 --><script type="text/javascript">//去掉二边的空格 function trim(str){str = str.replace(/^\s*/,"");str = str.replace(/\s*$/,"");return str; }</script> <!-- 异步判断验证码输入是否正确 --> <script type="text/javascript">document.getElementById("checkcodeID").onkeyup = function(){var checkcode = this.value;checkcode = trim(checkcode);if(checkcode.length == 4){//NO1)创建AJAXvar ajax = createAJAX();//NO2)设置提交方式var method = "POST";var url = "${pageContext.request.contextPath}/dictionary_checked?time="+new Date().getTime();ajax.open(method,url);//NO3)设置请求头ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");//NO4)设置参数var content = "checkcode=" + checkcode;ajax.send(content);//--------------------------------------------------------等待//NO5)判断是否返回成功并接收参数ajax.onreadystatechange = function(){if(ajax.readyState == 4){if(ajax.status == 200){//NO6)var tip = ajax.responseText;//NO7)var img = document.createElement("img");img.src = tip;img.style.width = "14px";img.style.height = "14px";var td = document.getElementById("response");td.innerHTML = "";td.appendChild(img);}}}}else{//清空图片var td = document.getElementById("response");td.innerHTML = "";}}</script>
5.后台验证
/*** 验证*/public String checked() throws Exception {// 图片路径String tip = "images/error.gif";// 从服务器获取session中的验证码String checkcodeServer = (String) ActionContext.getContext().getSession().get("CHECKNUM");// 将客户端的验证码与服务端的验证码进行比较if (checkcode.equals(checkcodeServer)) {tip = "images/success.gif";}// 以IO流的方式将tip变量的值输出到AJAX异步对象中HttpServletResponse response = ServletActionContext.getResponse();response.setContentType("text/html;charset=UTF-8");PrintWriter pw = response.getWriter();pw.write(tip);pw.flush();pw.close();return null;}
6.提交验证
function submit2(){//获取js对象var td = document.getElementById("response");var img=td.firstChild;//获取路径信息var src2=img.src;//对输入的结果进行判定,选择是否提交if(src2==""){alert("验证码不能为空!");}else if(src2=="http://localhost:8080/BBS/jsp/images/success.gif"){var for2=document.forms[0];for2.submit();}else{alert("验证码输入错误!");}}</script>
7.总结:
(1)暂时无法实现点击更换验证码
(2)js方式过于繁琐,代码臃肿;
转载于:https://www.cnblogs.com/loong996/p/8551846.html
AJAX方式进行验证码的判断(JS方式)相关推荐
- Ajax和JSON-学习笔记01【原生JS方式实现Ajax】
Java后端 学习路线 笔记汇总表[黑马程序员] Ajax和JSON-学习笔记01[原生JS方式实现Ajax] Ajax和JSON-学习笔记02[JQuery方式实现Ajax] Ajax和JSON-学 ...
- ajax加载vue数据,详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
整理文档,搜刮出一个使用vue.js结合jquery ajax加载数据的两种方式的代码,稍微整理精简一下做下分享. 废话不多说,直接上代码 html代码 demo {{message }} 测试jqu ...
- Ajax的异步同步原理以及js几种方式的实现
Ajax的异步同步原理以及js几种方式的实现的个人详细解析 Ajax简介 Ajax的全称是:Asynchronous JavaScript And XML,指的是异步 JavaScript 及 XML ...
- ajax获取后台数据的几种方式及如何获取ajax内部的数据供外部使用
文章目录 1 ajax获取后台数据的几种方式 1.1 原生js的ajax方式 1.1.1 get 1.1.2 post 1.2 jQuery封装的ajax方式 1.2.1 $.ajax 1.2.2 $ ...
- 利用modelarts和物体检测方式识别验证码
近来有朋友让老山帮忙识别验证码.在github上查看了下,目前开源社区中主要流行以下几种验证码识别方式: tesseract-ocr模块: 这是HP实验室开发由Google 维护的开源 OCR引擎,内 ...
- 考前自学系列·计算机组成原理·查询方式/中断方式/DMA方式的适用范围及判断
适用范围 查询方式:适合于工作不太繁忙的系统: 中断方式:适合于CPU任务比较忙的情况下,尤其适合实时控制和紧急事件的处理: DMA方式:适合于需要高速而又频繁地与存储器进行批量的数据交换的I/O设备 ...
- js方式调用php_javascript调用PHP和PHP调用javascript的方法
javascript调用PHP和PHP调用javascript的方法 发布时间:2020-06-22 17:03:14 来源:亿速云 阅读:262 作者:Leah 这篇文章将为大家详细讲解有关java ...
- js方式调用php_举例说明JS调用PHP和PHP调用JS的方法
举例说明JS调用PHP和PHP调用JS的方法 在学习任何一门编程语言,我们都会听到调用这个词,那么,在javascript中是如何调用php的呢?在php中也可以调用js吗?下面就让我们一起来看看吧. ...
- day 05总结(格式化输出的三种方式/基本运算符/if判断)
一.格式化输出的三种方式 1.占位符(Python3.0) 占位符:%s(针对所有数据类型).%d(仅仅针对数字类型) 使用方法:引号内需要拼接的数据用占位符替代,引号外%加上数据所在的列表. nam ...
最新文章
- rm -fr后的恢复
- 北大邮箱收件服务器,北京大学微电子学研究院邮件系统
- AB1601的AD转换注意事项
- Axios的基本使用
- org.apache.flink.table.api.bridge.java.internal.BatchTableEnvironmentImpl找不到的问题
- IBASE archive pre-processing report RIBARCHV
- jpa jsf_完整Web应用程序Tomcat JSF Primefaces JPA Hibernate –第2部分
- 什么是YARN?跟HBase和Spark比优势在哪?终于有人讲明白了
- mysql 字段存文件_使用数据库(mysql)字段保存文件
- linux远程备份视频教程,linux实现自动远程备份(scp+ssh)
- 前端之JQuery:JQuery属性操作
- 分享一个帮助你有效避免SQL Injection攻击的在线手册 - bbobby-tables.com
- OpenCV4 利用点线距离判断最小外接矩形的距离
- DBC文件解析,基于致远电子DBC_demo
- 主域名跳转到带www的域名方法,以及对seo有什么影响?
- ilove中文_Ilovechina的中文
- pvid与access的关系_交换机应用之端口模式(access、trunk和hybird)、是否标记(tag、untag)、端口缺省vlan(pvid、native id)...
- 西工大c语言程序设计,西工大18春《C语言程序设计》平时作业
- Java 轻量级框架Spring曝出0day漏洞
- 西门子V90 PN伺服_常用通信报文(速度+位置)的基本介绍