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

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

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

    隨筆-88  評論-77  文章-48  trackbacks-0
    在網上找了一圈Ajax的Java框架,感覺不錯的只有兩個,一個是被提到比較多的DWR(Direct Web Remoting),另一個是剛剛1.0的Ajax4JSF。本文先用代碼說話,各用兩個框架開發同樣功能的Ajax輸入驗證的小程序。在最后表達一下鄙人對這兩個框架的淺見。

    ·程序功能

        頁面上有兩個輸入框,一個填用戶名,一個填密碼。兩個框空著時提示“請填寫”;用戶名字符長度小于3時提示“長度應大于3”;當用戶名是“root”,密碼是“123”時提示密碼正確,否則提示密碼錯誤。

    ·DWR的實現
        Java邏輯: 這是提供給頁面異步調用的Java代碼

     1 package net.jialing;
     2 
     3 public class ValidateBean {
     4 
     5     public String checkName(String name) {
     6         if(name == null || name.equals("")) return "請填入用戶名";
     7         
     8         if(name.length()<3return "用戶名長度須大于3";
     9         
    10         return "";
    11     }
    12 
    13     public String checkPwd(String name,String password) {
    14         if(password == null || password.equals("")) return "請填入密碼";
    15         
    16         if(name != null && password != null) {
    17             if(name.equals("root"&& password.equals("123"))
    18                 return "密碼正確!";
    19             else
    20                 return "密碼不正確!";
    21         }
    22         
    23         return "";
    24     }
    25 
    26 }



        DWR的配置:

    <dwr>
      
    <allow>
        
    <create creator="new" javascript="JValidate">
            
    <param name="class" value="net.jialing.ValidateBean"/>
        
    </create>
      
    </allow>
    </dwr>



        JSP頁面:在頁面中寫了四個函數來調用各自的Java驗證代碼。

    <%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>Struts + DWR AJAX Validation</title>
    <script type='text/javascript' src='dwr/engine.js'></script>
    <script type='text/javascript' src='dwr/util.js'></script>
    <script type='text/javascript' src='dwr/interface/JValidate.js'></script>
    <script>
    function changeName() {
        
    var name = document.getElementById("name").value;
        JValidate.checkName(name,validateName);
    }

    function validateName(data) {
        document.getElementById(
    "name_message").innerHTML = data;
    }

    function changePwd() {
        
    var name = document.getElementById("name").value;
        
    var pwd = document.getElementById("password").value;
        JValidate.checkPwd(name,pwd,validatePwd);
    }

    function validatePwd(data) {
        document.getElementById(
    "password_message").innerHTML = data;
    }
    </script>
    </head>
    <body>
    Struts + DWR AJAX Validation: 
    <br>
    Name:
    <input name="name" type="text" id="name" onkeyup="changeName()"> <label id="name_message"></label><br>
    Password:
    <input name="password" type="password" id="password" onkeyup="changePwd()"> <label id= password_message"></label>
    </body>
    </html>

        

    ·A4J的實現

        Java邏輯:這是JSF控制下的JavaBean

    package net.jialing;

    public class ValidateBean {
        
    private String name;

        
    private String password;

        
    private String name_message;

        
    private String password_message;

        
    public String getName() {
            
    return name;
        }

        
    public void setName(String name) {
            
    this.name = name;
        }

        
    public String getName_message() {
            
    if(name == null || name.equals("")) return "請填入用戶名";
            
            
    if(name.length()<3return "用戶名長度須大于3";
            
            
    return "";
        }

        
    public void setName_message(String name_message) {
            
    this.name_message = name_message;
        }

        
    public String getPassword() {
            
    return password;
        }

        
    public void setPassword(String password) {
            
    this.password = password;
        }

        
    public String getPassword_message() {
            
    if(password == null || password.equals("")) return "請填入密碼";
            
            
    if(name != null && password != null) {
                
    if(name.equals("root"&& password.equals("123"))
                    
    return "密碼正確!";
                
    else
                    
    return "密碼不正確!";
            }
            
            
    return "";
        }

        
    public void setPassword_message(String password_message) {
            
    this.password_message = password_message;
        }

    }



        JSF的配置:

    <faces-config>
    <managed-bean>
            
    <managed-bean-name>validate</managed-bean-name>
            
    <managed-bean-class>
                net.jialing.ValidateBean
            
    </managed-bean-class>
            
    <managed-bean-scope>request</managed-bean-scope>
            
    <managed-property>
                
    <property-name>name</property-name>
                
    <null-value/>
            
    </managed-property>
            
    <managed-property>
                
    <property-name>password</property-name>
                
    <null-value/>
            
    </managed-property>
            
    <managed-property>
                
    <property-name>name_message</property-name>
                
    <null-value/>
            
    </managed-property>
            
    <managed-property>
                
    <property-name>password_message</property-name>
                
    <null-value/>
            
    </managed-property>
    </managed-bean>
    </faces-config>



        JSP頁面:

    <%@ page language="java" pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
        
    <title>Ajax4JSF Validate Page</title>
    </head>
    <body>
        
    <f:view>
            This is my Ajax4JSF Validate page. 
    <br>
            
    <h:form>
                Name:
    <h:inputText id="name" value="#{validate.name}" >
            
    <a4j:support event="onkeyup" reRender="rename" />
            
    </h:inputText> <h:outputText id="rename" value="#{validate.name_message}" /><br>
            
                Password:
    <h:inputSecret id="password" value="#{validate.password}" >
            
    <a4j:support event="onkeyup" reRender="repwd" />
              
    </h:inputSecret> <h:outputText id="repwd" value="#{validate.password_message}" />
            
    </h:form>
        
    </f:view>
    </body>
    </html>



    ·對比


    1.代碼量
        這是程序員最關心問題,哪個框架能減輕我們更多的負擔呢。首先看Java代碼,DWR似乎比A4J少一點,其實不然,因為A4J是基于JSF的Managed Bean上開發的,所以Bean里的其它代碼都可以用到JSF其它的地方,所以Java的開發量是相同的。其次看配置量,A4J稍有一些優勢,只要在JSF中配置了就不用在配置,而DWR還需要再配置一個XML文件。最后看頁面的代碼量,這一點A4J的優勢更加明顯,程序員完全不用寫JavaScript代碼,只需將要異步刷新的地方加入a4j的標簽即可。
        總的來說,在節省代碼量這個方面A4J是勝利的。

    2.靈活性
        這一點DWR是明顯的贏家,DWR適合各種框架,在設計時都考慮到了如Spring、JSF、Struts等的集成。而A4J僅適合JSF框架,對應用范圍做了很大的限制。在集成方面不僅僅是Java框架,還有現在越來越流行的JavaScript框架(如Dojo、Qooxdoo等),因為A4J封裝了JavaScript代碼,開發者無法像DWR一樣可以自由的使用JavaScript。當開發者習慣于將一些邏輯寫在JavaScipt中時,使用A4J可能會造成很多的不便。

    3.風險性
        A4J以標簽為開發手段,減去了應用程序開發者在JavaScript和DHTML等方面開發的時間,但同時也可能埋下風險的隱患。在開發一個Web應用的時候,開發者需要全面的評估應用中會使用到的技術功能,確定利用A4J可以實現,畢竟這是一個新成長起來的框架,需要更加留意。另外在安全方面,兩個框架都還無從考證。

    4.前景
        DWR在2.0里實現了Ajax的反轉,即在Java中執行JavaScript代碼,似乎標志著一種新的開發方式。A4J則搭上了JSF這趟快車,各個大公司都在謀劃著將應用開發進一步的分工,上游廠商制定組件,下游的公司使用組件為企業提供服務,JSF是它們賺錢的一個好工具,一定會繼續推而廣之,而A4J也會隨著JSF的成長而成長。


    ·總結
        也許還不到總結的時候。我想用DWR還是A4J,可以參考究竟使用Struts還是JSF,DWR的靈活性和Struts是對應的,兩者結合可以開發出靈活性很高的程序。A4J則肯定和JSF搭配,JSF的組件樹也可以讓開發的速度加快。


    ·參考
    DWR:http://getahead.ltd.uk/dwr
    Ajax4jsf: https://ajax4jsf.dev.java.net/

    ·示例下載
    基于DWR的示例:http://www.jialing.net/download/ajax/Struts_DWR_Validate.rar
    基于A4J的示例:http://www.jialing.net/download/ajax/A4J_Validate.rar
    posted on 2007-08-27 20:17 崛起的程序員 閱讀(566) 評論(0)  編輯  收藏 所屬分類: 載選文章
    主站蜘蛛池模板: 五月天婷婷免费视频| 日本一卡精品视频免费| 国产亚洲精品影视在线产品| a在线观看免费视频| 亚洲国产高清美女在线观看| 国产免费变态视频网址网站| 中国人免费观看高清在线观看二区| 亚洲第一成年男人的天堂| 国内自产拍自a免费毛片| 久久久WWW成人免费精品| 亚洲一区二区三区在线观看蜜桃| 大胆亚洲人体视频| 中文字幕在线免费观看| 国产成人亚洲综合无| 亚洲色图国产精品| 五月婷婷亚洲综合| 四虎永久在线观看免费网站网址| 特黄特色的大片观看免费视频| 亚洲理论片中文字幕电影| 亚洲成a人一区二区三区| 日韩不卡免费视频| 免费看黄的成人APP| 粉色视频在线观看www免费| 亚洲成色999久久网站| 四虎永久在线精品免费观看地址 | 亚洲国产精品乱码在线观看97| 国产一级做a爱免费视频| 18禁黄网站禁片免费观看不卡| 免费国产高清毛不卡片基地| 亚洲成人一级电影| 亚洲高清国产AV拍精品青青草原| 啦啦啦www免费视频| 在线免费观看你懂的| GOGOGO免费观看国语| 亚洲精品色在线网站| 亚洲av日韩av综合| 91天堂素人精品系列全集亚洲| 亚洲熟妇无码八AV在线播放| 亚洲成av人在片观看| 国产成人在线免费观看| 日韩精品福利片午夜免费观着|