自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JSP驗證碼學(xué)習(xí)筆記

開發(fā) 前端 后端
本文通過實例,介紹在做JSP驗證碼的時候為了給用戶很好的體驗,需要在原有驗證方式基礎(chǔ)之上增加一段js,通過xmlhttp來獲取返回值,以此來驗證是否有效。同時,本例還特別適合檢驗用戶名是否有效。

1、我們在做JSP驗證碼的時候往往由于要反作弊,驗證有時故意加入多的干擾因素,這時JSP驗證碼顯示不很清楚,用戶經(jīng)常輸入錯誤。這樣不但要重新刷新頁面,導(dǎo)致用戶沒有看清楚驗證碼而重填而不是修改,而且如果沒有用session保存下用戶輸入的其它數(shù)據(jù)的話(如姓名),用戶剛剛輸入的內(nèi)容也不存在了,這樣給用戶造成不好的體驗。

2、本例在原有驗證方式基礎(chǔ)之上增加一段js,通過xmlhttp來獲取返回值,以此來驗證是否有效,這樣即使用戶瀏覽器不支持js,也不會影響他的正常使用了。

3、為了防止作弊,當(dāng)用戶連接3次輸入錯誤時則重載一下圖片,這樣也利于用戶因為圖片上的驗證碼辨認(rèn)不清而使其終無法輸入正確。

4、本例還特別適合檢驗用戶名是否有效,只要從后臺做個sql查詢,返回一個值或是xml即可。(這種例子太多 ,就在此不贅述了)。

5、本例的優(yōu)點在于非常方便用戶輸入,而且減少對服務(wù)器端的請求,可以說既改善用戶體驗而且略會節(jié)省帶寬成本,但相應(yīng)地要在頁面上增加一段JavaScript代碼,在目前網(wǎng)速越來越快人們要求便捷舒適的今天,似乎我們更應(yīng)注意提供給用戶良好的使用感受。

代碼如下:

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("

恭喜您,驗證碼輸入成功,這里是提交結(jié)果頁面,可以寫入數(shù)據(jù)庫了!

返回再測試
");
  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對象,可以很方便的調(diào)用

  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驗證碼學(xué)習(xí)筆記

【編輯推薦】

  1. JSP開發(fā)技術(shù)應(yīng)用詳解
  2. 詳解JSP開發(fā)環(huán)境的配置
  3. JScript、Java、JavaScript和JSP總結(jié)
  4. 詳解JSP開發(fā)環(huán)境的配置
  5. 詳解ASP和JSP比較
責(zé)任編輯:佚名 來源: 中國IT實驗室
相關(guān)推薦

2009-08-13 10:47:29

C#創(chuàng)建驗證碼

2013-06-19 10:19:59

2020-11-16 07:28:53

驗證碼

2009-02-09 14:17:36

2021-01-19 10:29:34

短信驗證碼密碼

2017-12-21 07:38:19

2015-03-23 17:58:04

驗證碼倒計時并行

2015-09-21 15:31:05

php實現(xiàn)驗證碼

2022-02-11 07:10:15

驗證碼

2015-03-17 09:28:04

2011-11-02 12:43:33

2011-11-02 16:46:41

2019-06-18 07:12:25

驗證碼漏洞加密

2020-07-31 07:56:47

驗證碼

2016-11-14 15:40:01

Android

2009-12-11 15:17:52

PHP驗證碼調(diào)用

2009-12-16 15:46:41

Ruby on rai

2016-11-03 13:33:31

2016-11-08 19:19:06

點贊
收藏

51CTO技術(shù)棧公眾號