首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

怎么快速的生成验证码

2012-12-22 
如何快速的生成验证码?我在登陆首页有个验证码功能,从网上找了好多种方式,都实验了一遍。在刷新整个页面的

如何快速的生成验证码?
我在登陆首页有个验证码功能,从网上找了好多种方式,都实验了一遍。在刷新整个页面的时候验证码都能很快的过来,但是如果我只点击图片本身刷新的时候就非常非常慢,代码普遍都是这样:
function refresh(obj) {
        obj.src = "/randomservlet?"+Math.random();
 }

 <input type="text" name="randomCode"/><img title="点击更换" onclick="javascript:refresh(this);" src="/randomservlet"><br/>

我去12306网站的登陆页面看了一下,12306的验证码图片刷新就非常快,点击一下基本上都是一秒之内就换,请问这是怎么实现的?各位是否有相关的代码?网上提的几种方式都不行。
PS:我的验证码方式也非常简单,跟12306是一样的,4位数字字母混合的方式。
[最优解释]
<img src ="XXX/XXservelt"  onclick="changCode(this)" >


function changCode(obj){
   $(obj).removeAttr('src');
   $(obj).attr('src','XXX/XXservelt');
}


我曾经用上面的代码实现验证码 很快
[其他解释]

<p>
  <label class="nature">验证码:</label>
  <input type="text" id="txtCode" name="checkCode" maxlength="4" style="width:78px;margin-right:5px;" onkeyup="doLogin1(event)"/>&nbsp;
  <img src="/app/pm/servlet/chart_checkCode.svl?random=0.47210467518321286" id="imgCode" title="点击更换图片"
  style="vertical-align:bottom;cursor:pointer;" onclick="this.src='/app/pm/servlet/chart_checkCode.svl?random='+Math.random()"/>
 </p>



不会很慢呀,只要保证每次请求后台servlet的url都是不同的,就能解决你的问题了,


如果还有疑问,
http://download.csdn.net/detail/s478853630/4064638
或许能帮你
[其他解释]
url后边+一个随机数,这样就可以保证url不重复了
[其他解释]
最好的方法就是产生随机数
[其他解释]

<img src="verifyCode.action?date="+new Date() id="imgCode" title="点击更换图片"
      style="cursor:pointer;" />
document.getElementById("imgcode").onclick = function() {
//每次请求需要一个不同的参数,否则可能会返回同样的验证码    
//这和浏览器的缓存机制有关系,也可以把页面设置为不缓存,这样就不用这个参数了。
document.getElementById("imgcode").src = "verifyCode.action?date=" + new Date();
};

大概思想就是这样
[其他解释]
其实你写的一点问题都没有。感觉慢是因为页面在展示的时候是整个jsp页面已经在服务器解析好后一次性写到页面上的。你以后每点击一次服务器还要重新解析下,再到页面上,所以感觉会慢一点,其实想像一下,刷新整个页面的时候要解析整个页面,而产生验证码只需要解析一个验证码,后者是比前者要快的。
12306的比较快是因为在人少的时候,人多的时候肯定也不行。你的电脑和12306的服务器性能是没有办法比的。12306花几个亿做系统,服务器性能肯定是不错的。
如果排除以下原因,可能就是你写的代码性能不佳,可以适应优化下。
[其他解释]
元芳,CSDN新论坛上线!你怎么看?
[其他解释]
引用:
XML/HTML code12345678<p>      <label class="nature">验证码:</label>      <input type="text" id="txtCode" name="checkCode" maxlength="4" style="width:78px;margin-right:5px;" onkeyup="doLogin1……




引用:
Java code12345678<img src="verifyCode.action?date="+new Date() id="imgCode" title="点击更换图片"      style="cursor:pointer;" />document.getElementById("imgcode").onclick = function() {        ……



感谢各位朋友的回复。
我在提问的代码里面已经加了随机数,
function refresh(obj) {
        obj.src = "/randomservlet?"+Math.random();
 }
现在不是随机数的问题,而是点击图片刷新的时候非常慢,我用的是JSP。
各位可以在本地测试一下,是否存在这个问题。

[其他解释]
自己顶!自己顶!
[其他解释]
换个浏览器试试看呢?
[其他解释]
换个浏览器试试看呢?
[其他解释]
引用:
换个浏览器试试看呢?


IE,FF 都一样的。

自己顶!自己顶! 
[其他解释]
顶一个,支持一下

[其他解释]
自己顶!自己顶!
[其他解释]
自己顶!自己顶! 
[其他解释]
引用:
其实你写的一点问题都没有。感觉慢是因为页面在展示的时候是整个jsp页面已经在服务器解析好后一次性写到页面上的。你以后每点击一次服务器还要重新解析下,再到页面上,所以感觉会慢一点,其实想像一下,刷新整个页面的时候要解析整个页面,而产生验证码只需要解析一个验证码,后者是比前者要快的。
12306的比较快是因为在人少的时候,人多的时候肯定也不行。你的电脑和12306的服务器性……


这位朋友,你没看明白我的问题,单独刷新验证码很慢,而刷新整个页面反而很快。
你可以在本地试试这个项目:http://download.csdn.net/detail/s478853630/4064638

自己顶!自己顶!  
[其他解释]
引用:
<img src ="XXX/XXservelt"  onclick="changCode(this)" >

JavaScript code?12345function changCode(obj){   $(obj).removeAttr('src');   $(obj).attr('src','XXX/XXservelt');}

我曾经用上面的代码实现验证……


朋友,你太牛了!
搞定,结贴!

热点排行