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

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

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

    J2EE社區

    茍有恒,何必三更起五更眠;
    最無益,只怕一日曝十日寒.
    posts - 241, comments - 318, trackbacks - 0, articles - 16

    使用DWR開發AJAX For J2EE

    Posted on 2008-10-03 10:21 xcp 閱讀(2833) 評論(7)  編輯  收藏 所屬分類: Dwr
    DWR是Direct Web Remoting 的縮寫。

    DWR 是一個開放源碼的使用 Apache 許可協議的解決方案,它包含服務器端 Java 庫、一個 DWR servlet 以及 JavaScript 庫。雖然 DWR 不是 Java 平臺上唯一可用的 Ajax-RPC 工具包,但是它是最成熟的,而且提供了許多有用的功能。
    從最簡單的角度來說,DWR 是一個引擎,可以把服務器端 Java 對象的方法公開給 JavaScript 代碼。使用 DWR 可以有效地從應用程序代碼中把 Ajax 的全部請求-響應循環消除掉。這意味著客戶端代碼再也不需要直接處理 XMLHttpRequest 對象或者服務器的響應。不再需要編寫對象的序列化代碼或者使用第三方工具才能把對象變成 XML。甚至不再需要編寫 servlet 代碼把 Ajax 請求調整成對 Java 域對象的調用。
    DWR 是作為 Web 應用程序中的 servlet 部署的。把它看作一個黑盒子,這個 servlet 有兩個主要作用:首先,對于公開的每個類,DWR 動態地生成包含在 Web 頁面中的 JavaScript。生成的 JavaScript 包含存根函數,代表 Java 類上的對應方法并在幕后執行 XMLHttpRequest。這些請求被發送給 DWR,這時它的第二個作用就是把請求翻譯成服務器端 Java 對象上的方法調用并把方法的返回值放在 servlet 響應中發送回客戶端,編碼成 JavaScript。DWR 還提供了幫助執行常見的用戶界面任務的 JavaScript 工具函數。

    下面只是一個注冊的時候判斷用戶名是否已被注冊,也就是完成了當用戶輸入完用戶名的時候,自動測試用戶名是否被使用.!! ,首先我們要建立一個web工程,導入對 Hibernate的支持(在這就不多說,肯定大家都會);還有加上對Dwr的支持,在我們下載下來的dwr源碼里面有一個dwr.jar文件我們把它復制到我們web工程的lib下面,還要加上一個dwr.xml文件與web.xml同目錄(在后面將會配置).

    表信息:
    create table user(
    uid 
    INT  primary key auto_increment,
    username 
    VARCHAR(32unique not null,
    password 
    VARCHAR(32not null,
    );

    Hibernate映射:

    hibernate.cfg.xml文件
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
    >

    <!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration>

        
    <session-factory>
            
    <property name="connection.username">root</property>
            
    <property name="connection.url">
                jdbc:mysql://localhost:3306/struts1
            
    </property>
            
    <property name="dialect">
                org.hibernate.dialect.MySQLDialect
            
    </property>
            
    <property name="myeclipse.connection.profile">mysql</property>
            
    <property name="connection.password">sa</property>
            
    <property name="connection.driver_class">
                com.mysql.jdbc.Driver
            
    </property>
            
    <property name="show_sql">true</property>
            
    <mapping resource="org/topCSA/dwr/User.hbm.xml" />

        
    </session-factory>

    </hibernate-configuration>

    User實體類:
    package org.topCSA.dwr;

    /**
     * User entity.
     * 
     * 
    @author MyEclipse Persistence Tools
     
    */


    @SuppressWarnings(
    "serial")
    public class User implements java.io.Serializable
    {

        
    // Fields

        
    private Integer uid;
        
    private String  username;
        
    private String  password;

        
    // Constructors

        
    /** default constructor */
        
    public User()
        
    {
        }


        
    /** full constructor */
        
    public User(String username, String password)
        
    {
            
    this.username = username;
            
    this.password = password;
        }


        
    // Property accessors

        
    public Integer getUid()
        
    {
            
    return this.uid;
        }


        
    public void setUid(Integer uid)
        
    {
            
    this.uid = uid;
        }


        
    public String getUsername()
        
    {
            
    return this.username;
        }


        
    public void setUsername(String username)
        
    {
            
    this.username = username;
        }


        
    public String getPassword()
        
    {
            
    return this.password;
        }


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


    }

     

    User.hbm.xml映射文件

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
    >
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        
    <class name="org.topCSA.dwr.User" table="user">
            
    <id name="uid" type="java.lang.Integer">
                
    <column name="uid" />
                
    <generator class="native" />
            
    </id>
            
    <property name="username" type="java.lang.String">
                
    <column name="username" length="32" not-null="true" />
            
    </property>
            
    <property name="password" type="java.lang.String">
                
    <column name="password" length="32" not-null="true" />
            
    </property>
        
    </class>
    </hibernate-mapping>


    HibernateSessionFactory類(放在org.topCSA.util,是加入Hibernate時自動生成的Session工廠類,在這為了減少篇幅就不寫出來了)


    形成UserDAO接口:

     

    package org.topCSA.dwr;

    public interface UserDAO
    {
        
    public boolean existUser(String username);
    }

     

     形成UserDAOImpl:

    package org.topCSA.dwr;

    import java.util.List;


    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.topCSA.util.HibernateSessionFactory;

    public class UserDAOImpl implements UserDAO
    {

        @SuppressWarnings(
    "unchecked")
        @Override
        
    public boolean existUser(String username)
        
    {
            Session session 
    = HibernateSessionFactory.getSession();
            Transaction tx 
    = session.beginTransaction();
            
            Query qeury 
    = session.createQuery("from User u where u.username=?");
            qeury.setString(
    0, username);
            
            List
    <User> user =  qeury.list();
            
            
    if(user.size() > 0)
                
    return true;
            
            tx.commit();
            
    return false;
            
        }


    }



    形成一個UserDAOAjax接口(主要就是為客戶端定義要調用的服務方法):

     

    package org.topCSA.dwr;

    public interface 
    {
     
    public boolean existUser(String username);
    }



    形成一個UserDAOAjaxImpl類:

    package org.topCSA.dwr;

    public class UserDAOAjaxImpl implements UserDAOAjax
    {
        
    private UserDAO userDAO;
        @Override
        
    public boolean existUser(String username)
        
    {
            userDAO 
    = new UserDAOImpl();
            
    return userDAO.existUser(username);
        }


    }



    配置dwr.xml文件(它的作用就是將服務端方法轉換成javascript代碼):
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">

    <dwr>
        
    <allow>
            
    <create javascript="UserDAOAjaxImpl" creator="new">
                
    <param name="class" value="org.topCSA.dwr.UserDAOAjaxImpl"></param>
            
    </create>
            
    <convert match="org.topCSA.dwr.User" converter="bean"></convert>
        
    </allow>
    </dwr>

    web.xml里面加上對dwr框架的支持:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    >

        
    <servlet>
            
    <servlet-name>dwr</servlet-name>
            
    <servlet-class>
                org.directwebremoting.servlet.DwrServlet
            
    </servlet-class>
            
    <init-param>
                
    <param-name>debug</param-name>    
                
    <param-value>true</param-value>
            
    </init-param>
            
    <load-on-startup>1</load-on-startup>
        
    </servlet>
        
    <servlet-mapping>
            
    <servlet-name>dwr</servlet-name>
            
    <url-pattern>/dwr/*</url-pattern>
        
    </servlet-mapping>
    </web-app>


    前臺頁面register.jsp:
    <%@ page language="java" contentType="text/html; charset=GB18030"
        pageEncoding
    ="GB18030"
    %>
    <!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=GB18030">
            
    <title>register</title>

            
    <!-- 第一個是dwr的引擎腳本 -->
            
    <script type="text/javascript" src="dwr/engine.js"></script>
            
    <!-- 第二個是dwr的工具腳本 -->
            
    <script type="text/javascript" src="dwr/util.js"></script>
            
    <!-- 第三個是調用dwr通過dwr.xml自動生成的js -->
            
    <script type="text/javascript" src="dwr/interface/UserDAOAjaxImpl.js"></script>
            
    <!-- 具體操作腳本 -->
            
    <script type="text/javascript">
                
    function show(boolean)
                
    {
                    
    if(boolean)
                    
    {
                        $(
    "error").style.visibility="visible";
                        form1.username.value
    ='';
                    }

                    
    else
                    
    {
                        $(
    "error").style.visibility="hidden";
                    }

                }

                
    function validate()
                
    {
                    
    var name = $("username").value;
                    
    //alert(name);
                    UserDAOAjaxImpl.existUser(name,show);
                }

                
    function init()
                
    {
                    $(
    "error").style.visibility="hidden";
                }

        
    </script>

        
    </head>
        
    <body onload="init()">
            
    <form action="#" method="post" name="form1">
                
    <table id="table1" border="0">
                    
    <tr>
                        
    <td>
                            用戶名:
                        
    </td>
                        
    <td>
                            
    <input type="text" name="username" id="username"
                                onchange
    ="validate()" />
                        
    </td>
                        
    <td id="error">
                            
    <font color="red">用戶名已被注冊!</font>
                        
    </td>
                    
    </tr>
                    
    <tr>
                        
    <td>
                            密碼
    &nbsp;&nbsp;:
                        
    </td>
                        
    <td>
                            
    <input type="text" name="username" />
                        
    </td>
                    
    </tr>
                
    </table>
            
    </form>
        
    </body>
    </html>


     上面已經基本完成要實現的功能,下面就是布置測試:

    完成了當用戶輸入完用戶名的時候,自動測試用戶名是否被使用。
    若數據庫里面有相冊的用戶名提示用戶名已被注冊!

    若沒有正常執行.



    名稱: ?4C.ESL | .↗Evon
    口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
    mail: 聯系我


    Feedback

    # re: 使用DWR開發AJAX For J2EE  回復  更多評論   

    2008-10-03 21:51 by 免費小說
    這個不錯,試試看。

    # re: 使用DWR開發AJAX For J2EE  回復  更多評論   

    2008-10-06 17:17 by bruno
    function validate()
    {
    var name = $("username").value;
    //alert(name);
    UserDAOAjaxImpl.existUser(name,show);
    }
    這段代碼是不是有誤?
    我猜想是
    function validate()
    {
    var name = $("username").value;
    //alert(name);
    show(UserDAOAjaxImpl.existUser(name));
    }
    不知對否?

    # re: 使用DWR開發AJAX For J2EE  回復  更多評論   

    2008-10-12 21:31 by xcp
    @bruno
    樓上這位你知道回調函數嗎?建議學學!!

    function validate()
    {
    var name = $("username").value;
    //alert(name);
    UserDAOAjaxImpl.existUser(name,show);
    }
    以上代碼正確無誤!!

    # re: 使用DWR開發AJAX For J2EE  回復  更多評論   

    2008-11-11 11:23 by xiaodong
    為什么我照著你的代碼 敲完 了 沒有效果啊

    # re: 使用DWR開發AJAX For J2EE[未登錄]  回復  更多評論   

    2008-11-14 14:54 by xcp
    @xiaodong
    應該是哪敲錯了吧,自己再好好看看。。。

    # re: 使用DWR開發AJAX For J2EE  回復  更多評論   

    2009-03-22 14:05 by asd
    afds@xcp

    # re: 使用DWR開發AJAX For J2EE  回復  更多評論   

    2009-10-27 16:39 by 免費小說
    應該是哪敲錯了吧,自己再好好看看。。。 使用DWR開發AJAX For J2EE

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 精品免费视在线观看| 日日噜噜噜噜夜夜爽亚洲精品 | 久久国产色AV免费看| 五月天婷婷精品免费视频| 亚洲深深色噜噜狠狠网站| 亚洲AV日韩AV永久无码绿巨人| 免费中文字幕在线| 最近最新的免费中文字幕| 97人妻无码一区二区精品免费| 无码少妇精品一区二区免费动态 | 精品一区二区三区免费毛片爱 | 日本亚洲欧洲免费天堂午夜看片女人员 | 免费精品国偷自产在线在线| 免费黄网站在线看| 中文字幕a∨在线乱码免费看| 国产综合成人亚洲区| 亚洲人成电影网站色www| 亚洲国产美女视频| 亚洲视频一区网站| 精品日韩亚洲AV无码| 亚洲精品一品区二品区三品区| 亚洲美日韩Av中文字幕无码久久久妻妇| 成年女人免费视频播放77777| 国产成人免费午夜在线观看| 久久久久久夜精品精品免费啦| 久久久久成人片免费观看蜜芽| a级精品九九九大片免费看| 中文字幕免费人成乱码中国| 成年网在线观看免费观看网址| 日日躁狠狠躁狠狠爱免费视频| 理论亚洲区美一区二区三区 | 国产男女猛烈无遮挡免费网站| 在线jyzzjyzz免费视频| 成人a免费α片在线视频网站| 香蕉视频在线观看免费国产婷婷| 女人让男人免费桶爽30分钟| 青青草国产免费久久久91| 日韩精品免费电影| 亚洲AV中文无码乱人伦| 中文字幕一精品亚洲无线一区 | 最近中文字幕免费2019|