使用ajax实现验证码
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实现验证码的更多相关文章
- Ajax动态刷新验证码图片
一> 原理: 把用代码生成的图片存放到硬盘当中,然后在返回存储路径把图片通过图片标签的 src 属性 自动加载到浏览器中 二> 步骤 1. 首先用GDI+ 绘图 把验证码图片给绘制出来 2 ...
- Ajax实现验证码异步校验
验证码异步校验可以防止表单提交后因验证码不正确导致已填的其它项都清空. 整个过程图如下 验证码输入框出代码 <div class="form-group"> <l ...
- ajax发送验证码
$.ajax({ url:url, type:"POST", data:data, dataType:"JSON", s ...
- 用户登录ajax局部刷新验证码
用户登录的时候,登录页面附带验证码图片,用户需要输入正确的验证码才可以登录,验证码实现局部刷新操作. 效果如图: 代码如下: #生成验证码及图片的函数 newcode.py import rando ...
- thinkphp验证码
thinkphp自带验证码 前端页面: <div style="position:absolute;z-index:3;top:160px;left:180px;"> ...
- asp.net验证码及怎么获取里面的数值(整合)
一.ASP.Net的验证码的作用 对于一个预防攻击的web表单来讲,验证码通常是一个常见的措施.因为如果对于一些public区域的页面内容来讲,譬如一个登录表单,如果没有必要的安全措施,很可能遭到模拟 ...
- Thinkphp3.2版本使用163邮箱发(验证码)邮件
今天忽然想写一个用户修改密码的功能,又没有短信接口,只能选择用邮箱发送验证码啦,穷啊,没办法,哈哈,以下为正文. ------------------------------------------- ...
- BBS(第二天) Django之Admin 自动化管理数据页面 与创建一个用户注册的验证码
1.admin的概念 # Admin是Django自带的一个功能强大的自动化数据管理界面 # 被授权的用户可以直接在Admin中操作数据库 # Django提供了许多针对Admin的定制功能 2. 配 ...
- java 实现验证码功能
所需文件以及技术: · SecurityUtil.java (后面我会复制给大家) · 图像处理技术 · 向客户端输出io流 一,实现的原理,当视图页面加载的时候通过<img >元素的 ...
- Jfinal框架登陆页面的图形验证码
本文转自,http://www.bubuko.com/infodetail-720511.html 验证码的工具类, 这个jfinal自带的也有,但是下面这个和Jfinal自带的有一点点小的改动,(我 ...
随机推荐
- SpringBoot前后端接口加解密--解决方案
开放接口 - 通信方式采用HTTP+JSON或消息中间件进行通信. - 调用接口之前需要使用登录鉴权接口获得token. - 当鉴权成功之后才能调用其他接口(携带Token). 登录接口: Code ...
- nginx下增加https端口的方法
一.进入根目录我是使用xshell进行远程连接服务器的,连接到服务器首先输入cd /进入到根目录在这里插入图片描述二.配置nginx.conf文件首先输入cd etc/nginx进入到nginx目录在 ...
- 网络设备开局配置生成器(第三次更新) QQ交流群:(4817315)
下载:链接: https://pan.baidu.com/s/1BIvh3u7VfbaQtBsUOjl1IA?pwd=kgtw 提取码: kgtw 网络设备开局配置生成器(SecureCRT vbs脚 ...
- 一文速通Python并行计算:02 Python多线程编程-threading模块、线程的创建和查询与守护线程
一文速通 Python 并行计算:02 Python 多线程编程-threading 模块.线程的创建和查询与守护线程 摘要: 本文介绍了 Python threading 模块的核心功能,包括线程创 ...
- [源码系列:手写spring] IOC第十三节:Bean作用域,增加prototype的支持
为了帮助大家更深入的理解bean的作用域,特意将BeanDefinition的双例支持留到本章节中,创建Bean,相关Reader读取等逻辑都有所改动. 内容介绍 在Spring中,Bean的作用域( ...
- Docker 初始镜像 scratch
初识 scratch 有那么一天,我们在这里邂逅了镜像scratch... 先来搜索下这个镜像 docker search scratch NAME DESCRIPTION STARS OFFICIA ...
- study Python3 【1】
用VSCode来编辑Python代码,作为IDE使用,有点头晕. https://www.runoob.com/python3/python-vscode-setup.html有介绍.还有更好的博客介 ...
- 创建windows脚本bat/cmd或jar为windows服务完整教程
一.将windows bat/cmd脚本创建为windows服务 1.下载winsw工具 https://gitee.com/colinisg/winsw/releases/download/v2 ...
- soapUI参数化总结
1.新建项目目录 以获取用户贡献等级为例,目录如下: 2.添加DataSource和DataSource Loop 选中Test Step右键分别新建DataSource和DataSource Loo ...
- 测试工作中用到的MongoDB命令
1.远程连接MongoDB mongo host:port/dbname (host和port根据自己需要修改) 连接成功页面如下: 2.显示所有数据库 show dbs 3.切换到oversea-a ...