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 龍華城 閱讀(621) 評論(0)  編輯  收藏 所屬分類: Struts2
          主站蜘蛛池模板: 河东区| 富顺县| 呼图壁县| 城固县| 阳城县| 盐城市| 九龙坡区| 咸宁市| 蒙阴县| 双鸭山市| 永康市| 土默特右旗| 方正县| 大埔区| 兰州市| 烟台市| 玉门市| 青田县| 丁青县| 菏泽市| 南溪县| 连南| 桐城市| 沐川县| 肥西县| 章丘市| 南漳县| 库尔勒市| 洮南市| 宜丰县| 高邮市| 绥芬河市| 株洲县| 黑龙江省| 太和县| 马边| 拉萨市| 阜阳市| 阿拉善左旗| 襄垣县| 日喀则市|