<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 閱讀(5546) 評論(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无码入口国语片| 久久精品国产亚洲Aⅴ蜜臀色欲| 120秒男女动态视频免费| 成人超污免费网站在线看| 亚洲中文字幕第一页在线| 免费成人黄色大片| 有码人妻在线免费看片| 免费播放一区二区三区| 亚洲人成电影亚洲人成9999网 | 99久久久精品免费观看国产| 亚洲A∨精品一区二区三区| 7777久久亚洲中文字幕蜜桃| 亚洲视频在线免费看| va天堂va亚洲va影视中文字幕| 国产中文字幕在线免费观看 | jlzzjlzz亚洲乱熟在线播放| 在线亚洲午夜片AV大片| 亚洲精品自偷自拍无码| 免费一级黄色毛片| 黄桃AV无码免费一区二区三区| 亚洲一区二区影院| 毛片免费观看网址| 免费一级全黄少妇性色生活片 | 亚洲高清中文字幕免费| 亚洲av无码无在线观看红杏| 久久久久久久99精品免费 | 亚洲午夜国产精品| 免费A级毛片无码A∨| 久久狠狠爱亚洲综合影院| 91精品国产免费| 亚洲日韩AV无码一区二区三区人| 伊在人亚洲香蕉精品区麻豆| 可以免费观看的毛片| 亚洲精品天堂在线观看| 77777亚洲午夜久久多人| 性xxxxx免费视频播放| 污污污视频在线免费观看| 亚洲精品亚洲人成在线观看麻豆|