qiyadeng

          專注于Java示例及教程
          posts - 84, comments - 152, trackbacks - 0, articles - 34

          DWR Sample

          Posted on 2005-10-23 11:52 qiyadeng 閱讀(566) 評論(0)  編輯  收藏 所屬分類: WEB

          一個Ajax Projecthttp://getahead.ltd.uk/dwr/,DWR,就是有點像遠程方法調用,但是它的文檔里強調過,這個遠程方法的調用是安全的,所有安全問題應該不需要擔心。

          下面測試個簡單的例子,算是開始。這個例子是來自它的文檔的一篇文章,主要是實現一個類似聊天室的東西,有個輸入文本框,還要個顯示部分。用戶輸入的信息點擊發送就可以把消息顯示到顯示區域,當然是不需要刷新的^_^。
          1、先到DWR網站去下載個jar包dwr.jar,地址是:http://getahead.ltd.uk/dwr/download,并把該包放到自己的webproject的WEB-INF/lib目錄下。
          2、然后修改配置文件web.xml把加入如下信息:



           <servlet>
            <display-name>DWR Servlet</display-name>
            <servlet-name>dwr-invoker</servlet-name>
            <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
            <init-param>
             <param-name>debug</param-name>
             <param-value>true</param-value>
            </init-param>
           </servlet>
           
           <servlet-mapping>
            <servlet-name>dwr-invoker</servlet-name>
            <url-pattern>/dwr/*</url-pattern>
           </servlet-mapping>

          這個應該和我們其他的app配置沒什么兩樣的。
          3、配置DWR專門的配置文件dwr.xml(放到和web.xml一個目錄下),這個文件就是部署你可以被調用的遠程的方法和類。

          <dwr>
            <allow>
              <create creator="new" javascript="Chat">
               <param name="class" value="com.motel168.chat.Chat"></param>
              </create>
              <convert converter="bean" match="com.motel168.chat.Message"/>
            </allow>
          </dwr>


          這個文件描述的服務器端的類Chat和JavaBean,Message。

          4、對應的服務器類文件:
          Chat.java
          package com.motel168.chat;

          import java.util.LinkedList;
          import java.util.List;

          public class Chat {
           static LinkedList messages = new LinkedList();
           public List addMessage(String text){
            if(text != null && text.trim().length()>0){
             messages.addFirst(new Message(text));
             while(messages.size() > 10){
              messages.removeLast();
             }
            }
            return messages;
           }
           public List getMessages(){
            return messages;
           }


          }
          Message.java
          package com.motel168.chat;

          public class Message {
           long id = System.currentTimeMillis();
           String text;
           
           public Message(String newtext){
            text = newtext;
            if(text.length()>256){
             text = text.substring(0,256);
            }
            text = text.replace('<','[');
            text = text.replace('&','_');
           }
           public long getId(){
            return id;
           }
           public String getText(){
            return text;
           }
          }

          5、在前端頁面調用:

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <script type='text/javascript' src='/DWR/dwr/interface/Chat.js'></script>
          <script type='text/javascript' src='/DWR/dwr/engine.js'></script>
          <script type='text/javascript' src='/DWR/dwr/util.js'></script>

            <head>
              <title>chat.html</title>
              <meta http-equiv="content-type" content="text/html; charset=UTF-8">
            </head>
           
            <body>
           <P>聊天記錄:</P>
           <DIV id="chatlog"></DIV>
           <p>
           請輸入信息:<INPUT id="text"/>
           <INPUT type="button" value="發言" onclick="sendMessage()"/>
            </body>
          </html>
          <script language="javascript">
           function sendMessage(){
            var text = DWRUtil.getValue("text");
            DWRUtil.setValue("text","");
            Chat.addMessage(gotMessages,text);
           }
           function gotMessages(messages)
           {
               var chatlog = "";
               for (var data in messages)
               {
                   chatlog = "<div>" + messages[data].text +
                       "</div>" + chatlog;
               }
               DWRUtil.setValue("chatlog", chatlog);
           }
          </script>

          <script type='text/javascript' src='/DWR/dwr/interface/Chat.js'></script> 是動態產生的js文件,另外兩個util.js,engine.js是兩個javascript庫文件。

          后面有個DWRUtil類可以參考對應的文檔。
          最后應該是類似下面這個效果:
          dwrsample.bmp


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


          網站導航:
           
          主站蜘蛛池模板: 宝鸡市| 巩义市| 崇州市| 靖西县| 于都县| 仁寿县| 太保市| 高台县| 稷山县| 油尖旺区| 漳浦县| 章丘市| 梅州市| 松滋市| 巴彦淖尔市| 颍上县| 介休市| 延长县| 钦州市| 讷河市| 东港市| 新源县| 瑞安市| 贺兰县| 阜宁县| 敦煌市| 和平区| 惠安县| 嘉禾县| 基隆市| 宁河县| 梅河口市| 东阳市| 鹤壁市| 治县。| 凤冈县| 靖边县| 大关县| 尉氏县| 洞头县| 麦盖提县|