JSP验证码学习笔记 即使拼音怎么写
创始人
2024-03-20 00:01:41
0

1、我们在做JSP验证码的时候往往由于要反作弊,验证有时故意加入多的干扰因素,这时JSP验证码显示不很清楚,用户经常输入错误。这样不但要重新刷新页面,导致用户没有看清楚验证码而重填而不是修改,而且如果没有用session保存下用户输入的其它数据的话(如姓名),用户刚刚输入的内容也不存在了,这样给用户造成不好的体验。

2、本例在原有验证方式基础之上增加一段js,通过xmlhttp来获取返回值,以此来验证是否有效,这样即使用户浏览器不支持js,也不会影响他的正常使用了。

3、为了防止作弊,当用户连接3次输入错误时则重载一下图片,这样也利于用户因为图片上的验证码辨认不清而使其终无法输入正确。

4、本例还特别适合检验用户名是否有效,只要从后台做个sql查询,返回一个值或是xml即可。(这种例子太多 ,就在此不赘述了)。

5、本例的优点在于非常方便用户输入,而且减少对服务器端的请求,可以说既改善用户体验而且略会节省带宽成本,但相应地要在页面上增加一段JavaScript代码,在目前网速越来越快人们要求便捷舒适的今天,似乎我们更应注意提供给用户良好的使用感受。

代码如下:

1、img.jsp,输入主页面

<%@ page contentType="text/html; charset=GBK" language="java"

import="java.sql.*" errorPage="" pageEncoding="GBK"%>
<%
//set Chinese Char
//Cody by JarryLi@gmail.com;
//homepage:jiarry.126.com
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
response.setContentType("text/html; charset=GBK");
%>






AJAX(无刷新及时提示)验证码实例!cody by jarry



<%
String num=request.getParameter("num");
String random=(String)session.getAttribute("random");
String name=request.getParameter("name");
if(num!=null&&random!=null&&name!=null)
{
 if(num.equals(random))
 { 
  out.println("

恭喜您,验证码输入成功,这里是提交结果页面,可以写入数据库了!

返回再测试
");
  out.println("您的名字是:"+name);
  out.println("
");
  out.println("您输入的是:"+num);
  out.println("验证码是:"+random);
  out.println("");
   return;//javascript:history.go(-1)
  }
}
%>

 

onsubmit="return validata(this);">
您的姓名: (为了更好地说明此例,特加姓名一项)

验 证 码:

验证码看不清




 



2、num.jsp,反馈xmlhttp请求的页面

3、random.jsp,生成验证码图片的页面

4、net.js,封装好的xmlhttp对象,可以很方便的调用

  1. namespacingobject*/varnet=newObject();net.READY_STATE_UNINITIALIZED=0;
    net.READY_STATE_LOADING=1;  
  2. net.READY_STATE_LOADED=2;net.READY_STATE_INTERACTIVE=3;  
  3. net.READY_STATE_COMPLETE=4;  
  4. contentloaderobjectforcross-browserrequests  
  5. net.ContentLoader=function(url,on_load,on_error,method,params,contentType){  
  6. this.req=null;  
  7. this.on_load=on_load;  
  8. this.on_error=(on_error)?on_error:this.defaultError;  
  9. this.loadXMLDoc(url,method,params,contentType);  
  10. }  
  11. net.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType){  
  12. if(!method){  
  13. method="GET";  
  14. }  
  15. if(!contentType&&method=="POST"){  
  16. contentType='application/x-www-form-urlencoded';  
  17. }  
  18. if(window.XMLHttpRequest){  
  19. this.req=newXMLHttpRequest();  
  20. }  
  21. elseif(window.ActiveXObject){  
  22. //addtrycatch;try{  
  23. this.req=newActiveXObject("Msxml2.XMLHTTP");  
  24. }  
  25. catch(e1){  
  26. try{  
  27. this.req=newActiveXObject("Microsoft.XMLHTTP");  
  28. }  
  29. catch(e2){  
  30. }  
  31. }  
  32. ////this.req=newActiveXObject("Microsoft.XMLHTTP");  
  33. }  
  34. if(this.req){  
  35. try{  
  36. varloader=this;  
  37. this.req.onreadystatechange=function(){  
  38. net.ContentLoader.onReadyState.call(loader);  
  39. }  
  40. this.req.open(method,url,true);  
  41. if(contentType){  
  42. this.req.setRequestHeader('Content-Type',contentType);  
  43. }  
  44. this.req.send(params);  
  45. }  
  46. catch(err){  
  47. this.on_error.call(this);  
  48. }  
  49. }  
  50. }net.ContentLoader.onReadyState=function(){  
  51. varreq=this.req;  
  52. varready=req.readyState;  
  53. if(ready==net.READY_STATE_COMPLETE){  
  54. varhttpStatus=req.status;  
  55. if(httpStatus==200||httpStatus==0){  
  56. this.on_load.call(this);  
  57. }  
  58. else{  
  59. this.on_error.call(this);  
  60. }  
  61. }  
  62. }net.ContentLoader.prototype.defaultError=function(){  
  63. alert("errorfetchingdata!"+"\n\nreadyState:"+this.req.readyState+"\nstatus:
    "+this.req.status+"\nheaders:"+this.req.getAllResponseHeaders());  

以上介绍JSP验证码学习笔记

【编辑推荐】

  1. JSP开发技术应用详解
  2. 详解JSP开发环境的配置
  3. JScript、Java、JavaScript和JSP总结
  4. 详解JSP开发环境的配置
  5. 详解ASP和JSP比较

相关内容

热门资讯

Oracle中查询rownum... 在查询中,我们可以注意到,类似于“select xx from table where rownum...
软考信息系统项目管理师考哪些 ... 1.考试要求(1)掌握信息系统知识;(2)掌握信息系统项目管理知识和方法;(3)掌握大型、复杂项目管...
F5中国区总经理张毅强:ADN... [[2908]]F5中国区总经理张毅强在金融危机面前,节约成本优化IT架构则成为是客户重点的投资方向...
51CTO独家:2009年上半... 【51CTO.com独家特稿】2009年上半年软考在5月23日进行,本文是51CTO.com独家**...
垃圾邮件的五大特性分析及应对技... 对于垃圾邮件,已经在《中国互联网协会反垃圾邮件规范》中给出了一个明确的定义,但是它并不足以让我们了解...
SonicWALL公司发布其2... 【51CTO.com 综合消息】2009年5月19日,日前,SonicWALL, Inc. 宣布公布...
数十家黑客网站利用暴风影音零日... 【51CTO.com 综合消息】5月5日,江民反病毒中心监测发现,“暴风影音”最新版本出现的零日漏洞...
JSP验证码学习笔记 即使拼音... 1、我们在做JSP验证码的时候往往由于要反作弊,验证有时故意加入多的干扰因素,这时JSP验证码显示不...
JSP SQL Server连... JSP SQL Server连接 ***步:----安装J2SDK:到SUN官方站点(http://...
Android开发环境配置简介 写这个系列的原因也是因为自己对android比较感兴趣,而网上多数教程都是直接参照官方翻译,并且翻译...