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. bee must have one register DataBase alias named `default`

    bee must have one register DataBase alias named default 在你初始化db,注册默认数据库时,看看你是否import初始化注册数据库驱动driver ...

  2. OkHTTP发送POST请求传送JSON数据

    导入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> ...

  3. 【Esp32】为 idf 定制本地 Arduino 组件

    在开始今天的水文前,老周先要奉劝一下国内某些嵌入式砖家和穴者,不要看不起 Arduino,它不是一种开发板,而是一种规范.Arduino 的思想是正确的,把各种开发板封装为统一的 API,让许多开源库 ...

  4. BUUCTF---RSA1

    RSA基础概念 rsa原理: RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥 RSA算法的具体描述如下: (1) ...

  5. Nginx 查看配置文件路径

    通过测试信息来间接查看 #测试nginx.conf是否正确 nginx -t #输入此命令,通常会输出如下信息 nginx: the configuration file /etc/nginx/ngi ...

  6. ASP.NET Core 响应压缩中间件

    使用及对比 在 Startup.cs 中添加服务并使用即可,主代码如下: // Startup.cs public void ConfigureServices(IServiceCollection ...

  7. Nginx日志拆分(linux环境下)

    1.新增shell脚本[nginx_log.sh],进行每日自动切割一次,存储在nginx文件夹下的logs下 #!/bin/bash #设置日志文件存放目录 LOG_HOME="/app/ ...

  8. Cpu 资源占用高排查

    查看java进程 ps aux | grep java 或者 ps -ef | grep java 查看java进程 线程信息 使用top -p [PID] -H 观察该进程中所有线程的资源占用 to ...

  9. 强化学习框架:OpenRLHF源码解读,模型处理

    强化学习框架:OpenRLHF源码解读,模型处理 本文主要介绍 强化学习框架:OpenRLHF源码解读,模型处理 models框架设计 了解一下 OpenRLHF的模型框架设计范式: From:htt ...

  10. 腾讯云短信发送【java】

    先去官网申请secretId, secretKey,然后创建对应的模板 maven引入包 <dependency> <groupId>com.tencentcloudapi&l ...