<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 閱讀(5547) 評論(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

    企業管理網站

    好友

    站點收藏

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 4444亚洲国产成人精品| 国产精品V亚洲精品V日韩精品 | 免费一级毛片不卡在线播放| 亚洲色欲色欱wwW在线| 毛色毛片免费观看| 亚洲av无码专区亚洲av不卡| 国产高清在线免费视频| 男人扒开添女人下部免费视频| 国产成人精品免费直播| 日韩毛片免费一二三| 久久99亚洲综合精品首页| 国产精品免费久久久久电影网| 国产AV无码专区亚洲AV男同| 在线美女免费观看网站h| 亚洲国产精品网站久久| 大陆一级毛片免费视频观看i| 亚洲.国产.欧美一区二区三区| 国产成人免费永久播放视频平台| 一二三四在线观看免费中文在线观看 | 亚洲AV成人噜噜无码网站| 可以免费看黄的网站| 亚洲熟妇av一区二区三区| 免费国产污网站在线观看| 亚洲精品高清国产麻豆专区| 成年轻人网站色免费看| 久久免费香蕉视频| 亚洲天堂免费在线视频| 久久精品视频免费播放| 91在线亚洲综合在线| 爱情岛论坛网亚洲品质自拍| 日日麻批免费40分钟无码| 亚洲熟妇AV一区二区三区浪潮 | 国产aⅴ无码专区亚洲av麻豆| 亚洲一区免费观看| 亚洲偷自拍另类图片二区| 久久乐国产精品亚洲综合| 精品久久久久成人码免费动漫| 十八禁的黄污污免费网站| 亚洲成a人片7777| 久久精品国产精品亚洲人人| 免费国产作爱视频网站|