久久久亚洲欧洲日产国码农村,国产精品亚洲天堂,在线观看国产一区亚洲bdhttp://www.tkk7.com/cool2009/category/38164.html專注于java相關技術.zh-cnTue, 10 Mar 2009 20:06:41 GMTTue, 10 Mar 2009 20:06:41 GMT60關于strusts2 的2.16版本中404錯誤http://www.tkk7.com/cool2009/articles/258704.html龍華城龍華城Tue, 10 Mar 2009 00:55:00 GMThttp://www.tkk7.com/cool2009/articles/258704.htmlhttp://www.tkk7.com/cool2009/comments/258704.htmlhttp://www.tkk7.com/cool2009/articles/258704.html#Feedback0http://www.tkk7.com/cool2009/comments/commentRss/258704.htmlhttp://www.tkk7.com/cool2009/services/trackbacks/258704.html 我并沒有用上傳組建啊,為什么在這個版本里非得加入這個jar包呢.

龍華城 2009-03-10 08:55 發表評論
]]>
使用struts2+prototype.js創建無刷新注冊檢測(轉載)http://www.tkk7.com/cool2009/articles/258405.html龍華城龍華城Sat, 07 Mar 2009 13:21:00 GMThttp://www.tkk7.com/cool2009/articles/258405.htmlhttp://www.tkk7.com/cool2009/comments/258405.htmlhttp://www.tkk7.com/cool2009/articles/258405.html#Feedback0http://www.tkk7.com/cool2009/comments/commentRss/258405.htmlhttp://www.tkk7.com/cool2009/services/trackbacks/258405.html最近有一個項目要上,決定struts2+hibernate+spring開發,可現在AJAX如火如荼,而且功能上也大大方便了程序員開發和WEB頁面,如果不用,太對不起Jesse James Garrett(AJAX的創始人)。可我以前一直是做后臺的開發,對前臺的JS知識是鳳毛麟角,直接嘗試用AJAX,時間、精力浪費不起。后來,在與一同事聊天時,提到了prototype.js,說學會了這個,AJAX將成囊中之物,姑且對他的話持保留態度。但在看了這個JS的源碼后,真是的柳暗花明又一村。

prototype.js是什么?

讓我來告訴你,prototype.js是由Sam Stephenson寫的一個javascript類庫。這個構思奇妙,而且兼容標準的類庫,能幫助你輕松建立有高度互動的web2.0特性的富客戶端頁面。

如果你最近嘗試使用它,你大概了解到文檔并不是作者的一個強項。和在我以前使用這個類庫的不少開發者一樣,一開始,我不得不一頭扎進閱讀prototype.js的源代碼和實驗它的功能中。因此,如果你是偷懶者,可以在GOOGLE里搜索關于它的東西。

開始創建項目

項目介紹:項目中使用了struts2,spring IOC,主要完成了一個無刷新檢測用戶名是否已經在數據庫中注冊的簡單功能。

本文重點介紹prototype.js,因此關于struts2的東西,將不重點講解。

首先看一下,struts2的配置文件:  

  1. <action name="register" method="register" class="userAction">  
  2.    <result>/register_success.jspresult>  
  3.    <result name="input">/register.jspresult>  
  4. action>  
  5. <action name="check" method="check" class="userAction">            
  6. action>  

可以看到這里有兩個Action,“register”是用戶提交注冊的,“check”是為用戶名檢測預留的。兩個Action的方法都是在userAction中,而這個類交給了spring來管理,看以下代碼: 

  1. <bean id="userAction" class="com.caitong.pingou.action.UserAction"         
  2.         autowire="byName">  
  3. bean>  

然后,我們再看一下userAction的東西吧。

java 代碼
  1. public class UserAction extends ActionSupport {   
  2.   
  3.  private User user;//User類是一個很簡單的JAVA BEAN,主要包括用戶名,密碼,年齡,性別等屬性   
  4.  public User getUser() {   
  5.   return user;   
  6.  }   
  7.   
  8.  public void setUser(User user) {   
  9.   this.user = user;   
  10.  }   
  11.   
  12.  public String execute(){   
  13.   return null;   
  14.  }   
  15.     
  16.  /**  
  17.   * 客戶端檢測用戶名是否已經注冊過  
  18.   *  
  19.   */  
  20.  public void check(){   
  21.   HttpServletResponse response = ServletActionContext.getResponse(); //取response對象   
  22.   HttpServletRequest request = ServletActionContext.getRequest();//取request對象   
  23. //服務器響應   
  24.   response.setContentType("text/xml;charset=utf-8");   
  25.   response.setHeader("Cache-Control","no-cache");   
  26.   
  27.   String name = request.getParameter("user.username");   
  28.   
  29.   String msgStr="";   
  30.   boolean flag = name.equals("abc");//從數據庫中檢測該用戶名是否已經存在     
  31.   if(flag){      
  32.       msgStr ="對不起,此用戶名已經存在,請更換用戶名";   
  33.   }      
  34.   else{   
  35.    msgStr ="用戶未被注冊,可以使用!";      
  36.   }   
  37.      
  38.   try{//response寫信息   
  39.    response.getWriter().print(msgStr);   
  40.    response.getWriter().close();   
  41.   }catch(IOException e){   
  42.    e.printStackTrace();   
  43.   }    
  44.  }   
  45.   
  46. /**  
  47.   * 提交注冊  
  48.   * @return  
  49.   */  
  50.  public String register(){   
  51.   if(!abc".equals(user.getUsername()){//如果數據庫中沒有用戶   
  52.       save(User);//偽代碼,保存用戶   
  53.   else  
  54.       return INPUT;   
  55.    reutrn SUCCESS;   
  56. }   

基本上在類里已經注釋過了,自己的工程是通過服務層來判斷用戶是否已經注冊過,其中服務層又是調用DAO層,所有的CLASS都交給SPRING來管理,其中標識偽代碼的部份,有興趣的人,可以自己試著寫一下,從數據庫取數據,然后判斷。

最后一起看一下WEB層的register.jsp,prototype將粉墨登場

 

js 代碼
  1. <%@ page contentType="text/html; charset=utf-8" %>   
  2. <%@ taglib  prefix="s" uri="/struts-tags"%>   
  3.   
  4. <html>   
  5. <head>   
  6. <title>注冊</title>   
  7. <script language="JavaScript" type="text/javascript"    
  8.         src="js/prototype.js"></script>   
  9. <script language="JavaScript">     
  10.     function showResponse(originalRequest){               
  11.         Element.hide($('load'));//用設定它的 style.display 為 'none'來隱藏每個傳入的元素。   
  12.         alert(originalRequest.responseText); //彈出服務器端的msgStr字符串   
  13.         Form.reset($('register'));//重置表單。和調用表單對象的 reset() 方法一樣。   
  14.         Field.focus($('user.username')); //移動焦點到給定的表單項目。   
  15.                  
  16.     }   
  17.     function showDiv(){        
  18.         Element.show($('load'));//用設定它的 style.display 為 ''來顯示每個傳入的元素。   
  19.     }   
  20.     //身份驗證    
  21.     function check(){          
  22.         var pars=Form.Element.serialize($('user.username'));   
  23.         var url='check.action'; //返回元素的 名稱=值 對, 如 'elementName=elementValue'           
  24.            
  25.         if($F('user.username')==""){   
  26.             alert("請輸入姓名!");   
  27.             return false;   
  28.         }   
  29.         else{   
  30.             var myAjax = new Ajax.Request(   
  31.                     url,{method:'get',   
  32.                     parameters:pars,   
  33.                     onLoading:showDiv,   
  34.                     onComplete:showResponse,   
  35.                     onFailure:reportError});//構造函數,見講解   
  36.        }   
  37.     }   
  38.     function reportError(){   
  39.         alert('嚴重故障,請重試!');   
  40.     }   
  41.       
  42.         
  43. </script>   
  44.   
  45. <s:head/>   
  46. </head>   
  47.     

 

  1. <body>  
  2.         <center>  
  3.         <br/><br/><br/><br/><br/><br/><br/><br/>  
  4.         <p><div id="load" style="display:none">正在驗證用戶名,請稍后……</div></p>  
  5.                
  6.         <s:form action="regiseter" method="post">  
  7.             <s:textfield name="user.username" label="UserName"></s:textfield>  
  8.             <input type="button" value="檢測!" onClick="check()"/>  
  9.             <s:textfield name="user.password" label="PassWord"></s:textfield>  
  10.             <s:textfield name="user.age" label="Age"></s:textfield>  
  11.             <s:textfield name="user.sex" label="Sex"></s:textfield>  
  12.             <s:submit></s:submit>  
  13.         </s:form>  
  14.         </center>  
  15.        
  16.   </body>  
  17. </html>  


龍華城 2009-03-07 21:21 發表評論
]]>
主站蜘蛛池模板: 99久久免费精品视频| 美女羞羞免费视频网站| 91视频精品全国免费观看| 久久精品亚洲福利| 久久www免费人成看国产片| 亚洲欧洲一区二区三区| 在线免费视频你懂的| 亚洲中文字幕久久精品无码APP| 亚洲阿v天堂在线2017免费| 国产av无码专区亚洲国产精品| 一级黄色免费网站| 亚洲香蕉成人AV网站在线观看 | 午夜亚洲av永久无码精品| 日本亚洲中午字幕乱码| 亚洲av无码专区在线观看素人| 人妖系列免费网站观看| 亚洲精品成人片在线观看精品字幕| 日本一区午夜艳熟免费| 久久精品亚洲精品国产色婷| 91精品免费国产高清在线| 亚洲最大的成人网| 亚洲国产a级视频| 日本不卡免费新一区二区三区| 亚洲成人免费网址| 日韩免费电影在线观看| 黄色短视频免费看| 亚洲精彩视频在线观看| 日本媚薬痉挛在线观看免费| 丰满妇女做a级毛片免费观看| 久久久综合亚洲色一区二区三区| 国产精品色拉拉免费看| 国产成人综合亚洲| 国产亚洲婷婷香蕉久久精品| 四虎1515hh永久久免费| 日韩色视频一区二区三区亚洲 | 亚洲人成图片小说网站| 青青在线久青草免费观看| 日韩精品无码免费视频| 亚洲最新永久在线观看| 国产男女猛烈无遮挡免费网站| 成人性生交大片免费看中文|