<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    IT人生
    專注于java相關技術.
    posts - 53,comments - 87,trackbacks - 0

    最近有一個項目要上,決定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>  


    減肥瘦身品總匯     值得信賴*脈脈美妝*正品現貨謝絕講價     〓深港商盟〓名品歐衣坊(美國休閑品牌AF系列)     QQ三國游戲幣及道具專賣店     小臉紅紅的瘦身旗艦店
    posted on 2009-03-07 21:21 龍華城 閱讀(619) 評論(0)  編輯  收藏 所屬分類: Struts2
    主站蜘蛛池模板: 亚洲国产精品无码久久久秋霞2 | 亚洲一区二区成人| 九九九国产精品成人免费视频| 免费看无码自慰一区二区| 大片免费观看92在线视频线视频| 麻豆最新国产剧情AV原创免费| 亚洲视频在线不卡| 亚洲免费在线视频播放| 亚洲视频.com| 国产人成免费视频网站| 亚洲人成7777影视在线观看| 国产99视频精品免费观看7| 亚洲国产精品综合久久20| 在线永久免费观看黄网站| 直接进入免费看黄的网站| 亚洲黄片手机免费观看| 国产一级a毛一级a看免费视频| 亚洲VA中文字幕无码一二三区| 91香蕉在线观看免费高清| 亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | 亚洲视频在线不卡| 毛片免费视频观看| 久久亚洲AV成人无码国产电影| 亚洲福利中文字幕在线网址| 中国一级特黄的片子免费 | 亚洲色婷婷一区二区三区| 久久这里只精品热免费99| 亚洲乱码日产精品BD在线观看| 女人张腿给男人桶视频免费版| 日韩一级片免费观看| 亚洲AV乱码一区二区三区林ゆな| 免费观看激色视频网站bd| 久久精品国产亚洲av天美18| 国产亚洲精久久久久久无码77777| 日韩精品久久久久久免费| 亚洲国产区男人本色| 4399影视免费观看高清直播| 亚洲熟妇无码八V在线播放| 亚洲成a人片在线播放| 久久久久免费看成人影片| 亚洲国产精品99久久久久久|