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

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

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

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
    DWR一個外國人實現的很有前途的AJAX框架。
    多余的話就不說了,請看DWR的例子程序:
    web.xml
     1<?xml version="1.0" encoding="ISO-8859-1"?>
     2<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
     3
     4<web-app id="dwr">
     5
     6  <display-name>DWR (Direct Web Remoting)</display-name>
     7  <description>A demo of how to call Java on the server directly from Javascript on the client</description>
     8
     9  <servlet>
    10    <servlet-name>dwr-invoker</servlet-name>
    11    <display-name>DWR Servlet</display-name>
    12    <description>Direct Web Remoter Servlet</description>
    13    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
    14    <!--
    15    <init-param>
    16      <param-name>config</param-name>
    17      <param-value>WEB-INF/dwr.xml</param-value>
    18    </init-param>
    19    -->
    20    <init-param>
    21      <param-name>debug</param-name>
    22      <param-value>true</param-value>
    23    </init-param>
    24    <init-param>
    25      <param-name>scriptCompressed</param-name>
    26      <param-value>false</param-value>
    27    </init-param>
    28    <load-on-startup>1</load-on-startup>
    29  </servlet>
    30
    31  <servlet-mapping>
    32    <servlet-name>dwr-invoker</servlet-name>
    33    <url-pattern>/dwr/*</url-pattern>
    34  </servlet-mapping>
    35
    36</web-app>
    servlet(uk.ltd.getahead.dwr.DWRServlet)里:
     1     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException
     2     {
     3         try
     4         {
     5             builder.set(req, resp, getServletConfig(), getServletContext(), container);
     6             ServletLoggingOutput.setExecutionContext(this);
     7 
     8             processor.handle(req, resp);//該方法對所有request路徑/dwr/*有效,在引用JS的時候,使用這個路徑執行dwr生成的javascript代碼

        finally
    11         {
    12             builder.unset();
    13             ServletLoggingOutput.unsetExecutionContext();
    14         }
    15     }

    index.html
     1 <?xml version="1.0" encoding="ISO-8859-1" ?>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5   <title>DWR - Test Home</title>
     6   <script type='text/javascript' src='dwr/interface/Test.js'></script>
     7   <script type='text/javascript' src='dwr/engine.js'></script>
     8   <script type='text/javascript' src='dwr/util.js'></script>
     9   <script>
    10     function init() {
    11       // This turns off the no-javascript message
    12       document.getElementById("start").style.display = "none";
    13       // This checks for file: URLs and loading problems
    14       if (window.DWREngine == null || window.DWRUtil == null) {
    15         document.getElementById("file").style.display = "block";
    16         return;
    17       }
    18       // DWR setup
    19       DWREngine.setErrorHandler(function(message) { alert(message); });
    20       DWREngine.setWarningHandler(function(message) { alert(message); });
    21       DWRUtil.useLoadingMessage();
    22       // Turn on the generic error div
    23       $("error").style.display = "block";
    24       // Load a message from the server
    25       Test.getInsert(load);
    26     }
    27 
    28     function load(data) {
    29       $("error").style.display = "none";
    30       DWRUtil.setValue("reply", data);
    31       $("reply").style.display = "block";
    32     }
    33   </script>
    34 </head>
    35 
    36 <body onload="init()">
    37 .
    這一部分經過了SERVLET處理:
      <script type='text/javascript' src='dwr/interface/Test.js'></script>
      
    <script type='text/javascript' src='dwr/engine.js'></script>
      
    <script type='text/javascript' src='dwr/util.js'></script>
    dwrservlet.doPost方法內processor.handle(req, resp)這個方法如下:
     1     public void handle(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException
     2     {
     3         String pathInfo = req.getPathInfo();
     4         String servletPath = req.getServletPath();
     5 
     6         if (nullPathInfoWorkaround && pathInfo == null)
     7         {
     8             pathInfo = req.getServletPath();
     9             servletPath = HtmlConstants.PATH_ROOT;
    10             log.debug("Default servlet suspected. pathInfo=" + pathInfo + "; contextPath=" + req.getContextPath() + "; servletPath=" + servletPath); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    11         }
    12 
    13         if (pathInfo == null ||
    14             pathInfo.length() == 0 ||
    15             pathInfo.equals(HtmlConstants.PATH_ROOT))
    16         {
    17             resp.sendRedirect(req.getContextPath() + servletPath + HtmlConstants.FILE_INDEX);
    18         }
    19         else if (pathInfo.startsWith(HtmlConstants.FILE_INDEX))
    20         {
    21             index.handle(req, resp);
    22         }
    23         else if (pathInfo.startsWith(HtmlConstants.PATH_TEST))
    24         {
    25             test.handle(req, resp);
    26         }
    27         else if (pathInfo.startsWith(HtmlConstants.PATH_INTERFACE))
    28         {
    29             iface.handle(req, resp);//這個方法是我們要關注的
                 }
         。。。。。。。
         }
     iface.handle(req, resp);//這個方法是我們要關注的,來自DefaultInterfaceProcessor
     1     public void handle(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
     2     {
     3         String pathinfo = req.getPathInfo();
     4         String servletpath = req.getServletPath();
     5         if (pathinfo == null)
     6         {
     7             pathinfo = req.getServletPath();
     8             servletpath = HtmlConstants.PATH_ROOT;
     9         }
    10         String scriptname = pathinfo;
    11         scriptname = LocalUtil.replace(scriptname, HtmlConstants.PATH_INTERFACE, HtmlConstants.BLANK);
    12         scriptname = LocalUtil.replace(scriptname, HtmlConstants.EXTENSION_JS, HtmlConstants.BLANK);
    13         Creator creator = creatorManager.getCreator(scriptname);
    14 
    15         //resp.setContentType("text/javascript");
    16         PrintWriter out = resp.getWriter();
    17         out.println();
    18 
    19         out.println("function " + scriptname + "() { }"); //從這里開始DWR自動生成javascript
                 String   path = overridePath;
    22         if (path == null)
    23         {
    24             path = req.getContextPath() + servletpath;
    25         }
    26         out.println(scriptname + "._path = '" + path + "';"); //$NON-NLS-1$ //$NON-NLS-2$
    27 
    28         Method[] methods = creator.getType().getMethods();
    29         for (int i = 0; i < methods.length; i++)
    30         {
    31             Method method = methods[i];
    32             String methodName = method.getName();
    33 
    34             // We don't need to check accessControl.getReasonToNotExecute()
    35             // because the checks are made by the doExec method, but we do check
    36             // if we can display it
    37             String reason = accessControl.getReasonToNotDisplay(req, creator, scriptname, method);
    38             if (reason != null && !allowImpossibleTests)
    39             {
    40                 continue;
    41             }
    42 
    43             // Is it on the list of banned names
    44             if (jsutil.isReservedWord(methodName))
    45             {
    46                 continue;
    47             }
    48 
    49             out.print('\n');
    50             out.print(scriptname + '.' + methodName + " = function("); //$NON-NLS-1$
    51             Class[] paramTypes = method.getParameterTypes();
    52             for (int j = 0; j < paramTypes.length; j++)
    53             {
    54                 if (!LocalUtil.isServletClass(paramTypes[j]))
    55                 {
    56                     out.print("p" + j + ""); //$NON-NLS-1$ //$NON-NLS-2$
    57                 }
    58             }
    59             out.println("callback) {"); //$NON-NLS-1$
    60 
    61             out.print("    DWREngine._execute(" + scriptname + "._path, '" + scriptname + "', '" + methodName + "\', "); //實現javascript調用java內的方法
                     for (int j = 0; j < paramTypes.length; j++)
    63             {
    64                 if (LocalUtil.isServletClass(paramTypes[j]))
    65                 {
    66                     out.print("false, "); //$NON-NLS-1$
    67                 }
    68                 else
    69                 {
    70                     out.print("p" + j + ""); //$NON-NLS-1$ //$NON-NLS-2$
    71                 }
    72             }
    73             out.println("callback);"); //$NON-NLS-1$
    74 
    75             out.println('}');
    76         }
    77 
    78         out.flush();
    79     }
    DWR例子程序下載地址:http://www.tkk7.com/Files/javajohn/dwr.rar
    (待續)
    posted on 2007-10-23 10:37 蘆葦 閱讀(947) 評論(0)  編輯  收藏 所屬分類: JAVA
    主站蜘蛛池模板: 一级毛片**免费看试看20分钟| 日本成年免费网站| 国产a级特黄的片子视频免费| 亚洲午夜国产精品| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲成AV人片在线观看无码| 两个人www免费高清视频| 免费在线观看h片| 亚洲VA综合VA国产产VA中| 亚洲综合国产精品| 久久亚洲AV成人无码国产电影| 日本人成在线视频免费播放| 亚洲国产精品无码久久一线| 国产无遮挡裸体免费视频在线观看 | 中文字幕手机在线免费看电影| 色久悠悠婷婷综合在线亚洲| 亚洲三级中文字幕| 免费毛片在线看片免费丝瓜视频| 亚洲AV无码专区国产乱码4SE| 午夜网站在线观看免费完整高清观看 | 亚洲国产精品美女久久久久| 日韩在线天堂免费观看| 亚洲黄色网址大全| 免费精品国产自产拍在线观看图片| 亚洲视频在线观看2018| 国产免费观看网站| 福利免费在线观看| 亚洲精品美女久久久久| 日本免费一区二区三区最新| g0g0人体全免费高清大胆视频| 亚洲成熟xxxxx电影| 一个人免费观看在线视频www| 久久久久亚洲Av片无码v| 19禁啪啪无遮挡免费网站| 亚洲色欲啪啪久久WWW综合网| 免费**毛片在线播放直播 | 亚洲图片在线观看| 四虎在线免费播放| a国产成人免费视频| 亚洲 日韩 色 图网站| 亚洲片国产一区一级在线观看|