seasun  
          在不斷模仿、思考、總結中一步一步進步!
          公告
          •     我的blog中的部分資源是來自于網絡上,如果您認為侵犯了您的權利,請及時聯系我我會盡快刪除!E-MAIL:shiwenfeng@aliyun.com和QQ:281340916,歡迎交流。

          日歷
          <2010年1月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          常用鏈接

          隨筆分類

          good blog author

          積分與排名

          • 積分 - 81738
          • 排名 - 700

          最新評論

          閱讀排行榜

           

          本文轉自:http://www.aygfsteel.com/xylz/

          DWR作為Ajax遠程調用的服務端得到了很多程序員的追捧,在DWR的2.x版本中已經集成了Guice的插件。

          老套了,我們還是定義一個HelloWorld的服務吧,哎,就喜歡HelloWorld,不怕被別人罵! 

          1 public interface HelloWorld {
          2 
          3     String sayHello();
          4 
          5     Date getSystemDate();
          6 }
          7 

          然后寫一個簡單的實現吧。 

           1 public class HelloWorldImpl implements HelloWorld {
           2 
           3     @Override
           4     public Date getSystemDate() {
           5         return new Date();
           6     }
           7 
           8     @Override
           9     public String sayHello() {
          10         return "Hello, guice";
          11     }
          12 }
          13 

          然后是與dwr有關的東西了,我們寫一個dwr的listener來注入我們的模塊。 

           1 package cn.imxylz.study.guice.web.dwr;
           2 
           3 import org.directwebremoting.guice.DwrGuiceServletContextListener;
           4 
           5 /**
           6  * @author xylz (www.imxylz.cn)
           7  * @version $Rev: 105 $
           8  */
           9 public class MyDwrGuiceServletContextListener extends DwrGuiceServletContextListener{
          10 
          11     @Override
          12     protected void configure() {
          13         bindRemotedAs("helloworld", HelloWorld.class).to(HelloWorldImpl.class).asEagerSingleton();
          14     }
          15 }
          16 

          這里使用bindRemotedAs來將我們的服務開放出來供dwr遠程調用。

          剩下的就是修改web.xml,需要配置一個dwr的Servlet并且將我們的listener加入其中。看看全部的內容。 

           1 <?xml version="1.0" encoding="UTF-8"?>
           2 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           3     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
           4     version="2.5">
           5 
           6     <display-name>guice-dwr</display-name>
           7     <description>xylz study project - guice</description>
           8 
           9     <listener>
          10         <listener-class>cn.imxylz.study.guice.web.dwr.MyDwrGuiceServletContextListener
          11         </listener-class>
          12     </listener>
          13     <servlet>
          14         <servlet-name>dwr-invoker</servlet-name>
          15         <servlet-class>org.directwebremoting.guice.DwrGuiceServlet</servlet-class>
          16         <init-param>
          17           <param-name>debug</param-name>
          18           <param-value>true</param-value>
          19         </init-param>
          20     </servlet>
          21     <servlet-mapping>
          22         <servlet-name>dwr-invoker</servlet-name>
          23         <url-pattern>/dwr/*</url-pattern>
          24     </servlet-mapping>
          25 
          26 </web-app>
          27 

          非常簡單,也非常簡潔,其中DwrGuiceServlet的debug參數只是為了調試方便才開放的,實際中就不用寫了。

          好了,看看我們的效果。

           1 <html>
           2 <head><title>dwr - test (www.imxylz.cn) </title>
           3   <script type='text/javascript' src='/guice-dwr/dwr/interface/helloworld.js'></script>
           4   <script type='text/javascript' src='/guice-dwr/dwr/engine.js'></script>
           5   <script type='text/javascript' src='/guice-dwr/dwr/util.js'></script>
           6   <script type='text/javascript'>
           7     var showHello = function(data){
           8         dwr.util.setValue('result',dwr.util.toDescriptiveString(data,1));   
           9     }
          10     var getSystemDate = function(data){
          11         dwr.util.setValue('systime',dwr.util.toDescriptiveString(data,2));   
          12     }
          13   </script>
          14   <style type='text/css'>
          15     input.button { border: 1px outset; margin: 0px; padding: 0px; }
          16     span { background: #ffffdd; white-space: pre; padding-left:20px;}
          17   </style>
          18 </head>
          19 <body onload='dwr.util.useLoadingMessage()'>
          20     <p>
          21     <h2>Guice and DWR</h2>
          22         <input class='button' type='button' value="Call HelloWorld 'sayHello' service" onclick="helloworld.sayHello(showHello)" />
          23         <span id='result' ></span>
          24     </p>
          25     <p>
          26         <input class='button' type='button' value="Call HelloWorld 'getSystemDate' service" onclick="helloworld.getSystemDate(getSystemDate)" />
          27         <span id='systime' ></span>
          28     </P>
          29 </body>
          30 </html>

          我們通過兩個按鈕來獲取我們的遠程調用的結果。

          posted on 2010-01-06 18:46 shiwf 閱讀(468) 評論(0)  編輯  收藏 所屬分類: 1.15 guice

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


          網站導航:
           
           
          Copyright © shiwf Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 息烽县| 兴城市| 绥宁县| 崇义县| 黑河市| 罗平县| 南川市| 鄂尔多斯市| 湘西| 华坪县| 内黄县| 儋州市| 延吉市| 玉树县| 宝应县| 班戈县| 于田县| 莱州市| 重庆市| 安吉县| 承德县| 商河县| 广宁县| 麻栗坡县| 乌兰浩特市| 松阳县| 胶南市| 都安| 东方市| 敦化市| 嘉义县| 平武县| 陆丰市| 高雄县| 淮北市| 桃园市| 英山县| 安陆市| 读书| 峡江县| 德庆县|