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

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

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

    javajohn

    金色年華

    DWR源碼學習(一)

    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 2006-05-27 19:23 javajohn 閱讀(5556) 評論(13)  編輯  收藏 所屬分類: AJAX

    Feedback

    # 求助 2006-06-11 16:21 Aivon

    近來才開始接觸AJAX
    想在一個大作業中使用DWR
    在網上找了很多配置教程
    但我在自己機上老是測試不成功
    郁悶中……
    近來趕大作業,就要考試了,還請大哥能幫幫忙,給點提示
    小弟的QQ是:4034947  回復  更多評論   

    # re: DWR源碼學習(一) 2006-06-12 08:51 javajohn

    mail to me
    DWR的配置例子在下載的代碼里有demo  回復  更多評論   

    # re: DWR源碼學習(一) 2006-06-13 01:05 Aivon

    找不到你的email阿...

    我在官方網站下在的demo運行時顯示:
    Missing DWR Javascript Functions

    自己按照網上的教程進行配置
    也顯示js文件錯誤

    能否給我一份你使用正常的代碼?
    我的email是:aivon@163.com
    謝謝了  回復  更多評論   

    # re: DWR源碼學習(一) 2006-06-13 09:20 javajohn

    我的mail:thesecondbull@yahoo.com.cn
    DWR代碼下載地址http://www.tkk7.com/Files/javajohn/dwr.rar
    下載的文件后綴更名為.war  回復  更多評論   

    # re: DWR源碼學習(一) 2006-06-13 10:30 Aivon

    還是出現以下問題:
    Missing DWR Javascript Functions
    This is a fairly advanced page that tests DWR to check that everything is setup properly for you.

    It appears that you may be attempting to run DWR outside a servlet container (possibly using a file: URL). We think this because this page has missing Javascript functions that should have been produced by DWR. To fix the problem please use DWR from within a servlet container.

    If this is not the cause of the problem, please report it to the DWR mailing list, including your browser, server, OS configuration and any error messages that appeared either in the browser (including the Javascript console if one exists) and the server console log.

    DWR is testing installation ...
    This is a fairly advanced page that tests DWR. If you can see this message for a prolonged period of time then you should check the following:

    Can you see the test pages?
    If not it is likely that DWR has not deployed in your web server properly; Check the web server console and log files for error messages.
    If you can see the test pages then DWR is loaded but is something is preventing DWR working. Check your browser Javascript console for error messages, or see the main DWR website for more information.
    If none of these steps fixes the error, please report it to the DWR mailing list, including your browser, server, OS configuration and any error messages that appeared either in the browser (including the Javascript console if one exists) and the server console log.

    For general information about DWR see:

    不解~~~  回復  更多評論   

    # re: DWR源碼學習(一) 2006-06-13 10:59 javajohn

    @Aivon
    說一下你的JDK和TOMCAT的版本,JDK如果為1.5以上TOMCAT需要5.5以上的版本  回復  更多評論   

    # re: DWR源碼學習(一) 2006-06-13 12:27 Aivon

    哈,原來是tomcat的版本問題
    換了5.5的就OK了

    謝謝了~~~  回復  更多評論   

    # re: DWR源碼學習(一) 2006-07-10 09:43 snackok

    下載了,提示Test對象不存在,發現dwr/interface/目錄下缺少test.js  回復  更多評論   

    # re: DWR源碼學習(一) 2006-07-10 15:11 javajohn

    test.js是由DWR自動生成的,不再是我們以前開發時的那種概念上的js文件了.如果不清楚請再詳細閱讀我BLOG里的另一篇《dwr源碼學習函數調用篇》  回復  更多評論   

    # re: DWR源碼學習(一) 2006-07-25 14:46 Sandy


    可以跟我講下DWR2.0中JAVA調用JS嗎?  回復  更多評論   

    # re: DWR源碼學習(一) 2006-08-20 09:31 東北小白

    不錯哈哈,謝謝摟住  回復  更多評論   

    # re: DWR源碼學習(一) 2006-09-14 14:42 vircomagice

    摟主有沒有DWR的源碼和發行包啊,我這里下載不了https的連接,很郁悶。。。
    如果有的話,能不能發我一封啊
    vircomagice@yahoo.com.cn  回復  更多評論   

    # re: DWR源碼學習(一) 2006-09-14 19:05

    @vircomagice
    發行包到處都有啊,你到www.springside.org.cn下載不就行了  回復  更多評論   



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


    網站導航:
     

    My Links

    Blog Stats

    常用鏈接

    留言簿(7)

    隨筆分類(36)

    隨筆檔案(39)

    classmate

    good blog

    企業管理網站

    好友

    站點收藏

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV无码乱码在线观看| 无码人妻一区二区三区免费| 免费在线视频一区| 色噜噜亚洲男人的天堂| 日本免费xxxx| 亚洲理论在线观看| 免费A级毛片无码免费视| 亚洲一本一道一区二区三区| 成年人在线免费观看| 亚洲欧美日韩中文无线码| 免费高清小黄站在线观看 | 1a级毛片免费观看| 久久亚洲日韩精品一区二区三区| 成人性生交大片免费看好| 亚洲AV综合色区无码一区| 久久永久免费人妻精品下载 | 青青久在线视频免费观看| 亚洲中文字幕无码中文| 四虎影视精品永久免费| av午夜福利一片免费看久久| 亚洲国产精品无码久久SM| 99精品免费观看| 亚洲人成综合在线播放 | 亚洲第一区精品观看| 国产福利免费视频| 亚洲精品私拍国产福利在线| 57PAO成人国产永久免费视频| 亚洲综合小说另类图片动图| 日本19禁啪啪无遮挡免费动图| 野花视频在线官网免费1| 亚洲精品成人a在线观看| 久艹视频在线免费观看| 亚洲无吗在线视频| 亚洲一区精品伊人久久伊人| 色欲国产麻豆一精品一AV一免费| 亚洲国产乱码最新视频| 亚洲中文字幕丝袜制服一区| 91视频免费网址| 羞羞漫画小舞被黄漫免费| 亚洲人成网址在线观看| 国产又大又黑又粗免费视频|