java后台的servlet:

 1 @WebServlet(value = "/login.love",name = "AjaxLoginServlet")
2 public class AjaxLoginServlet extends HttpServlet {
3
4 @Override
5 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
6 super.doPost(req, resp);
7 }
8
9 @Override
10 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
11
12 ResultMsg rm=new ResultMsg();
13 PrintWriter out=resp.getWriter();
14 Gson gson=new Gson();
15
16 //1 获取前台来的验证码
17 //2 获取session里面的验证码
18 //3 校验
19
20 String vcode=req.getParameter("vcode");
21 String code= (String) req.getSession().getAttribute("code");
22
23 if (null==vcode||null==code){
24 rm.setResult("0002");
25 rm.getMsg("验证码为空");
26
27 out.println(gson.toJson(rm));
28 return;
29 }
30 if (vcode.equalsIgnoreCase(code)){
31 rm.setResult("0000");
32 out.println(gson.toJson(rm));
33 }else {
34 rm.setResult("0001");
35 rm.getMsg("验证码错误");
36 out.println(gson.toJson(rm));
37 }
38
39
40 }

前端的jsp:

 1 <!-- 提交的方式; get  post -->
2
3
4 <form action="login.love" method="post">
5
6 <!-- name : 对应我们servlet去获取前台文本框的值的 key -->
7 用户名:<input id="nm" name="userName" type="text" value="${userName}" />
8 密码:<input name="userPass" type="password" />
9 验证码:<input id="vcode" name="vcode" type="text"><img id="img1" alt="" src="data:image.do" onclick="flash(this)">
10
11 <!-- 默认是submit; -->
12 <button type="button" onclick="login()">登录</button>
13
14 <label id="lab1"></label>
15
16 </form>
17 </body>
18 <script type="text/javascript">
19
20 function login(){
21 var xhr=XMLHttpRequest();
22 xhr.open("POST","login.love",true);
23 xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
24 xhr.send("vcode="+document.getElementById("vcode").value);
25
26 xhr.onreadystatechange=function () {
27
28 //请求成功
29 if (xhr.readyState==4&&xhr.status==200){
30 var obj=JSON.parse(xhr.responseText);
31
32 if (obj.result=="0000"){
33 alert("验证码正确");
34 } else if(obj.result=="0002"){
35 alert("验证码为空")
36 flash(document.getElementById("img1"))
37 }else {
38 alert("验证码错误");
39 flash(document.getElementById("img1"));
40 }
41 }
42 }
43 }
44 function flash(obj){
45 obj.src = "code.do?"+Math.random();
46 console.info(obj.src);
47 }
48 </script>

使用ajax实现验证码的更多相关文章

  1. Ajax动态刷新验证码图片

    一> 原理: 把用代码生成的图片存放到硬盘当中,然后在返回存储路径把图片通过图片标签的 src 属性 自动加载到浏览器中 二> 步骤 1. 首先用GDI+ 绘图 把验证码图片给绘制出来 2 ...

  2. Ajax实现验证码异步校验

    验证码异步校验可以防止表单提交后因验证码不正确导致已填的其它项都清空. 整个过程图如下 验证码输入框出代码 <div class="form-group"> <l ...

  3. ajax发送验证码

    $.ajax({     url:url,     type:"POST",     data:data,     dataType:"JSON",     s ...

  4. 用户登录ajax局部刷新验证码

    用户登录的时候,登录页面附带验证码图片,用户需要输入正确的验证码才可以登录,验证码实现局部刷新操作. 效果如图: 代码如下: #生成验证码及图片的函数  newcode.py import rando ...

  5. thinkphp验证码

    thinkphp自带验证码 前端页面: <div style="position:absolute;z-index:3;top:160px;left:180px;"> ...

  6. asp.net验证码及怎么获取里面的数值(整合)

    一.ASP.Net的验证码的作用 对于一个预防攻击的web表单来讲,验证码通常是一个常见的措施.因为如果对于一些public区域的页面内容来讲,譬如一个登录表单,如果没有必要的安全措施,很可能遭到模拟 ...

  7. Thinkphp3.2版本使用163邮箱发(验证码)邮件

    今天忽然想写一个用户修改密码的功能,又没有短信接口,只能选择用邮箱发送验证码啦,穷啊,没办法,哈哈,以下为正文. ------------------------------------------- ...

  8. BBS(第二天) Django之Admin 自动化管理数据页面 与创建一个用户注册的验证码

    1.admin的概念 # Admin是Django自带的一个功能强大的自动化数据管理界面 # 被授权的用户可以直接在Admin中操作数据库 # Django提供了许多针对Admin的定制功能 2. 配 ...

  9. java 实现验证码功能

    所需文件以及技术: · SecurityUtil.java   (后面我会复制给大家) · 图像处理技术 · 向客户端输出io流 一,实现的原理,当视图页面加载的时候通过<img >元素的 ...

  10. Jfinal框架登陆页面的图形验证码

    本文转自,http://www.bubuko.com/infodetail-720511.html 验证码的工具类, 这个jfinal自带的也有,但是下面这个和Jfinal自带的有一点点小的改动,(我 ...

随机推荐

  1. Xshell连接有跳板机(堡垒机)的服务器

    一.Xshell直连有跳板机的服务器 跳板机IP:112.74.163.161 端口号: 22     服务器IP:47.244.217.66 端口号:22 1. 新建跳板机会话 点击连接,主机和端口 ...

  2. MySQL-脏页的刷新机制

    MySQL内存结构-缓冲区 MySQL的缓冲区中有数据页,索引页,插入缓冲等等,这个角度是从页的功能来分类的.本小节从另一个视角关注这些页,如果从 是否被修改过(和磁盘不一致) 这个角度来区分这些页, ...

  3. 【服务器】Nodejs在局域网配置https访问

    [服务器]Node.js在局域网配置https访问 零.需求: 做一个局域网WebRTC视频聊天系统,需要用到HTTPS.因此,配置Node.js使其支持HTTPS访问. 一.解决 在线生成和证书 访 ...

  4. 学习unigui【22】unistringGrid的标题栏双击事件

    第一步:在TuniStringGrid的ClientEvents.ExtEvents中定义Ext.grid.Panel的reconfigure事件: function reconfigure(send ...

  5. 在web.xml下配置springmvc的核心控制器

    <!DOCTYPE web-app PUBLIC        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" ...

  6. Cookie,Session与Token

    参考资料 水平有限,欢迎交流!仅做学习交流使用 一定要看,非常透彻![Cookie.Session.Token究竟区别在哪?如何进行身份认证,保持用户登录状态?] 黑马jwt详解 Javaweb程序设 ...

  7. Eclipse 中 JAVA AWT相关包不提示问题(解决)

    原因: 由于在2021年7月15日 OpenJDK管理委员会全票通过批准成立由Phil Race担任初始负责人的 Client Libraries Group(客户端类库工作组). 新的工作组将继续赞 ...

  8. 工良出品 | 长文讲解 MCP 和案例实战

    作者:痴者工良 博客地址:https://www.whuanle.cn/ 示例项目地址:https://github.com/whuanle/mcpdemo 近期 MCP 协议越来越爆火,很多开发者都 ...

  9. 29.1K star!免费接入GPT-4/DeepSeek等顶级大模型,这个开源API神器绝了!

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 还在为天价API费用发愁?这个开源项目让你免费畅用GPT-4.DeepSeek.Claude ...

  10. ESP32S3 BLE_HID的编程实现

    ESP32S3 BLE_HID的编程实现 BLE是低功耗蓝牙,HID是Human Interface Device,也就是人机接口设备. 主要用于无线连接并传输用户输入数据(如按键.触控.手势等). ...