??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品国产三级国产普通话三级 ,欧美日韩一区二,亚洲va欧美va在线观看http://www.aygfsteel.com/yigemaser/category/30437.html学习(fn)+实践=q步zh-cnSun, 25 May 2008 06:19:57 GMTSun, 25 May 2008 06:19:57 GMT60W六部分 DWR原理http://www.aygfsteel.com/yigemaser/articles/191018.html满店?/dc:creator>满店?/author>Sun, 06 Apr 2008 04:13:00 GMThttp://www.aygfsteel.com/yigemaser/articles/191018.htmlhttp://www.aygfsteel.com/yigemaser/comments/191018.htmlhttp://www.aygfsteel.com/yigemaser/articles/191018.html#Feedback2http://www.aygfsteel.com/yigemaser/comments/commentRss/191018.htmlhttp://www.aygfsteel.com/yigemaser/services/trackbacks/191018.html    我们以DWR的第一个样例ؓ(f)例Dynamically Text
   1Q在index.html里面我们嵌入
     <script type='text/javascript' src='../dwr/engine.js'> </script>
     <script type='text/javascript' src='../dwr/util.js'> </script>
     <script type='text/javascript' src='../dwr/interface/Demo.js'> </script>
         前面两个都是DWRpȝ默认需要加载的QDemo.js是Demo.java所对应的。按理论Q只要在web.xml和dwr.xml配置好,那么我们可以在客户端操作Demo.jsQ类g操作服务器端的Demo.js?br />     

HTML source:

<p>
Name:
<input type="text" id="demoName"/>
<input value="Send" type="button" onclick="update()"/>
<br/>
Reply: <span id="demoReply"></span>
</p>

Javascript source:

function update() {
var name = dwr.util.getValue("demoName");
Demo.sayHello(name, function(data) {
dwr.util.setValue("demoReply", data);
});
}

Java source:

package org.getahead.dwrdemo.simpletext;
public class Demo {
public String sayHello(String name) {
return "Hello, " + name;
}
}

dwr.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="Demo">
<param name="class" value="org.getahead.dwrdemo.simpletext.Demo"/>
</create>
</allow>
</dwr>
        

       在浏览器W一ơ加载本面Ӟ览器第一步发?lt;script type='text/javascript' src='../dwr/engine.js'> </script>Q根据web.xml关于dwr的配|,pȝ?x)激发Servlet的POSTҎ(gu),向客L(fng)输出engine.js文g,q个文g你可以在IE的缓存里面发?当然,E序?x)在最后输ZL较客L(fng)是否已经存在该文Ӟ如果要输出的文g大和和该文g大小一_(d)׃输出?jin),同样util.js、Demo.js也是q么输出的。那么看看Demo.js文g里面的内容如下:(x)
if (typeof this['Person'] != 'function') {
  
function Person() {
    
this.address = null;
    
this.phoneNumber = null;
    
this.name = null;
    
this.id = 0;
    
this.salary = 0;
  }

}


// Provide a default path to dwr.engine
if (typeof this['dwr'] == 'undefined') this.dwr = {};
if (typeof dwr['engine'] == 'undefined') dwr.engine = {};

if (typeof this['Demo'] == 'undefined') this.Demo = {};

Demo._path 
= '/dwr/dwr';

Demo.sayHello 
= function(p0, callback) {
  
return dwr.engine._execute(Demo._path, 'Demo', 'sayHello', p0, callback);
}
;

Demo.getInclude 
= function(callback) {
  
return dwr.engine._execute(Demo._path, 'Demo', 'getInclude', callback);
}
;

    q样我们q道了(jin)Q实际上Demo.javacȝsayHelloҎ(gu)已经被解释到Demo.js中了(jin)Q只不过后面的调用还?sh)是很清楚而已?br /> l箋(hu)Q?br /> public String sayHello(String name) {
return "Hello, " + name;
}
 译?br />        Demo._path = '/dwr/dwr';
 Demo.sayHello = function(p0, callback) {
  return dwr.engine._execute(Demo._path, 'Demo', 'sayHello', p0, callback);
};
  在调用engine.execute()Ҏ(gu)Ӟ最l采用无h讉K服务器技术?br />  采用该技术的关键问题是两个参敎ͼ一个是urlQ往什么地方发送;一个是docQ发送什么内?br />  通过跟踪engine.js我们知道
url=/dwr/dwr/call/plaincall/Demo.sayHello.dwr
发送内容如下:(x)

callCount=1
windowName
=DWR-442B435899
c0
-scriptName=Demo
c0
-methodName=sayHello
c0
-id=0
c0
-param0=string:Joe
batchId
=1
page
=/dwr/simpletext/index.html
httpSessionId
=
scriptSessionId
=1CC3A.0A3


实际上url=/dwr/dwr/call/plaincall/Demo.sayHello.dwrQ{向的是DwrServletQDwrServlet实际上获取了(jin)两部分信息,一部分是urlQ根据这个能够解析到我们的目标javacR方法,另外一部分是发送信息包Q实际上q就是SayHello所需要的参数输入信息Q最后,q回数据Q这些数据格式通过responseq回Q在engine.js中对应于return batch.reply;通过解析q回对象Q采用javascirpt数据动态刷新到面?/p>

    x(chng)Qdwr的核?j)原理,基本清?/p>

]]>
W二部分 下蝲源码Q做好准?/title><link>http://www.aygfsteel.com/yigemaser/articles/190861.html</link><dc:creator>满店?/dc:creator><author>满店?/author><pubDate>Fri, 04 Apr 2008 18:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/yigemaser/articles/190861.html</guid><wfw:comment>http://www.aygfsteel.com/yigemaser/comments/190861.html</wfw:comment><comments>http://www.aygfsteel.com/yigemaser/articles/190861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yigemaser/comments/commentRss/190861.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yigemaser/services/trackbacks/190861.html</trackback:ping><description><![CDATA[<p>    DWR?a >www.java.net</a>开源社Z,目前?.0版本Q而且׃DWRd刚加入Dojo基金?x),而Dojo基金?x)力促(j)DWR和基金会(x)下面的另外一个comet目l合Q估计将来dwr?x)有很大变化。dwr是以客户端获取会(x)ȝ动态技术,comet是以服务器端推ؓ(f)ȝ动态技术,q两个结合有好看的,我们拟目以待。首先要d<a >www.java.net</a>|站注册一个用户名Q注册之后,可以下载源码啦。【四大开源社区:(x) 1)www.sourceforge.netQ?)www.java.netQ?)<a >www.eclipse.org</a>Q?)<a >www.opensource.org</a>?br />    我是q么下蝲源码的,使用的eclipse的cvs工具,按下面方式填?br />     Connection type:    pserver<br />     User:                     你的注册用户名称<br />     Password:              你的注册用户密码<br />     Host:                     cvs.dev.java.net<br />     Repository path:     /cvs      <br />     Use default port<br />    打开cvs后,你会(x)发现好多好多开源工E,扑ֈDWR工程,目前DWR版本?.0Qcheck outQ在把运行环境配备好Q我用的是Tomcat5.5Qjava虚拟?.5版本Q这三个正好配套?br />    eclipse和Tomcat5.5调试好后Q我们就可以工E发布到Tomcat中去?jin),q里注意Q由于DWR工程l织方式是按ant?fn)惯方式l织的,所以你不能按eclipse默认方式d布你的DWR工程Q你需要执行build.xml构徏dwr.war包,该包?x)生成放到工E的\target\ant\目录下,在我机器上是D:\dwr_workspace\dwr\target\ant\dwr.warQ然后你需要将dwr.war拯到D:\Tomcat 5.5\webapps目录Q运行TomcatQ系l会(x)自动dwr.war解包QŞ成dwr目录Q比如在我机器上?x)Ş成文件夹D:\Tomcat 5.5\webapps\dwr?br />    在我机器上访?a href="http://localhost:5050/dwr">http://localhost:5050/dwr</a>Q就可见到首面了(jin)Q但是下半部分报错,看看tomcat后台也报错,查了(jin)查是找不到类的缘故,再查发现~少js.jar包,上网找找Q下载了(jin)一个js.jar包,再将js.jar包添加到目录D:\dwr_workspace\dwr\web\WEB-INF\lib\js.jarQ然后重新发布war包就没问题啦?br />     <br /> </p> <img src ="http://www.aygfsteel.com/yigemaser/aggbug/190861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yigemaser/" target="_blank">满店?/a> 2008-04-05 02:35 <a href="http://www.aygfsteel.com/yigemaser/articles/190861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>W一部分 DWR是什么,如何使用http://www.aygfsteel.com/yigemaser/articles/190859.html满店?/dc:creator>满店?/author>Fri, 04 Apr 2008 17:49:00 GMThttp://www.aygfsteel.com/yigemaser/articles/190859.htmlhttp://www.aygfsteel.com/yigemaser/comments/190859.htmlhttp://www.aygfsteel.com/yigemaser/articles/190859.html#Feedback0http://www.aygfsteel.com/yigemaser/comments/commentRss/190859.htmlhttp://www.aygfsteel.com/yigemaser/services/trackbacks/190859.html    DWR是一个开源的cd,可以帮助开发h员开发包含AJAX技术的|站.它可以允许在览器里的代码(javascriptQ用运行在WEB服务器上的JAVA函数,像它就在浏览器里一?   它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了(jin)AJAX原则的Servlet(应用程?中获取数?另外一斚w一个JavaScript库可以帮助网站开发h员轻村֜利用获取的数据来动态改变网늚内容. 
    官方|站地址http://getahead.org/dwr

关于DWR的?引用别h的文章?nbsp;  

开始?DWR
    原文出处: http://www.javatang.com/archives/2006/10/20/254879.html
    译: Jet Mah
    有两U方法来开?DWR 的学?fn),最单的做法?a target="_blank">下蝲官方提供?WAR 文g然后Ҏ(gu)深入研究。不q这U方式不能你感到将 DWR 整合C现有?web E序有多么的单,所以我们推荐你跟随下面三个步骤Q?/h3>

1. 安装 DWR JAR ?/strong>
下蝲 dwr.jar 文gQ然后将它放?web E序?WEB-INF/lib 目录下面Q很可能在这个目录下已经有一?jar 文g?jin)?/p>

2. ~辑 config 文g

下面的代码d?WEB-INF/web.xml 文g中,<servlet>需要放在另外的<servlet>之后Q?lt;servlet-mapping>也是如此?/p>

<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <display-name>DWR Servlet</display-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  <init-param>
     <param-name>debug</param-name>
     <param-value>true</param-value>
  </init-param>
</servlet>

<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

接下来创?dwr.xml 文gq将此放?web.xml 所在的 WEB-INF 目录下。文件中cM下面的内容:(x)

<!DOCTYPE dwr PUBLIC
    ”-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN”
    ”http://www.getahead.ltd.uk/dwr/dwr10.dtd”>

<dwr>
  <allow>
    <create creator=”new” javascript=”JDate”>
      <param name=”class” value=”java.util.Date”/>
    </create>
    <create creator=”new” javascript=”Demo”>
      <param name=”class” value=”your.java.Bean”/>
    </create>
  </allow>
</dwr>

DWR 配置文g定义?jin)?DWR 创徏和被 Javascript q程使用的类。在上面的例子中我们在远E创Z(jin)2个类Qƈ且给Z(jin)?Javascript 中的cd?/p>

上面使用?new creator 使用?jin)所有的 JavaBeans 必须含有的公有(publicQ无参(no-argsQ的构造函数。值得一提的是, DWR q有一些限Ӟ(x)

  • 避免使用 JavaScript 保留字;以保留字命名的方法将自动被排除。大多数 JavaScript 的保留字同时也是 Java 的保留字Q因此无论如何你也不能用一个名?“try()” 的方法。但是最常用的一个词 “delete()”Q在 JavaScript 中有Ҏ(gu)的含义而在 Java 中没有?
  • 重蝲Ҏ(gu)QOverloaded methodsQ将?x)在调用的时候陷入未知的状况Q因此应该避免重载方法?

    3. 讉K下面的地址
    http://localhost:8080/[YOUR-WEBAPP]/dwr/

    你应该会(x)看到一个页面,上面昄?jin)刚才你在第二步所创徏的类。进入一个链接之后你?x)看到所有等待调用方法的列表。这些动态生的例子你也能通过 DWR 来实现?/p>

    亲自试和体?x)下吧?/p>

    怎样应用C?Web E序中?

    在侧Ҏ(gu)有很多例子演CZ(jin)怎样改变|页中的文本、更新列表、操作表单和动态修改表根{每一个例子都有详l的说明?/p>

    另外一个开始方法就是从面中查看源代码Q这些页面你刚刚览q:(x)

  • q入 http://localhost:8080/[YOUR-WEBAPP]/dwr/ 然后点击你创建的c;
  • 查看源代码然后定位到你所感兴的Ҏ(gu)的代码行Q?
  • 这些文本粘贴到?Web E序的一?HTML ?JSP面中;
  • 包含下面?javascrip 文gQ?

    <script src=’/[YOUR-WEBAPP]/dwr/interface/[YOUR-SCRIPT].js’></script>
    <script src=’/[YOUR-WEBAPP]/dwr/engine.js’></script>

    你可以根据实际情况修?/[YOUR-WEBAPP]/ 部分?/p>

    关于怎样书写 DWR 控制?Javascript 代码h?脚本?/a>?/p>



  • ]]>W三部分 DWR的技术基?无刷新访问服务器http://www.aygfsteel.com/yigemaser/articles/190845.html满店?/dc:creator>满店?/author>Fri, 04 Apr 2008 17:31:00 GMThttp://www.aygfsteel.com/yigemaser/articles/190845.htmlhttp://www.aygfsteel.com/yigemaser/comments/190845.htmlhttp://www.aygfsteel.com/yigemaser/articles/190845.html#Feedback0http://www.aygfsteel.com/yigemaser/comments/commentRss/190845.htmlhttp://www.aygfsteel.com/yigemaser/services/trackbacks/190845.html阅读全文

    ]]>
    W五部分 包拆?4)org.directwebremoting.create?http://www.aygfsteel.com/yigemaser/articles/189560.html满店?/dc:creator>满店?/author>Sat, 29 Mar 2008 16:59:00 GMThttp://www.aygfsteel.com/yigemaser/articles/189560.htmlhttp://www.aygfsteel.com/yigemaser/comments/189560.htmlhttp://www.aygfsteel.com/yigemaser/articles/189560.html#Feedback0http://www.aygfsteel.com/yigemaser/comments/commentRss/189560.htmlhttp://www.aygfsteel.com/yigemaser/services/trackbacks/189560.html阅读全文

    ]]>
    W五部分 包拆?3)org.directwebremoting.convert?http://www.aygfsteel.com/yigemaser/articles/189400.html满店?/dc:creator>满店?/author>Fri, 28 Mar 2008 20:18:00 GMThttp://www.aygfsteel.com/yigemaser/articles/189400.htmlhttp://www.aygfsteel.com/yigemaser/comments/189400.htmlhttp://www.aygfsteel.com/yigemaser/articles/189400.html#Feedback0http://www.aygfsteel.com/yigemaser/comments/commentRss/189400.htmlhttp://www.aygfsteel.com/yigemaser/services/trackbacks/189400.html     在源码工E中Q有两个dwr.xml,一个是pȝ的,一个是客户自定义的Q这两个dwr文g在DwrServlet初始化时加蝲。在pȝdwr.xmlQorg\directwebremoting\dwr.xmlQ中Q我们可以看到convert元素Qconvert元素的作用是告诉DWR在服务器端Java 对象表示和序列化的JavaScript之间如何转换数据cd?br />     java对象被{换成字符?或者字W串被{换ؓ(f)java对象Q这些字W串是按json格式写的Q客L(fng)javascript可识别,在客L(fng)接收到后转换成javascript对象。注意:(x)字符串内Ҏ(gu)有采用xml格式Q而是采用json格式Q是因ؓ(f)json格式技术更成熟和快捗?

        每个convert都包含两个方法convertInboundQconvertOutbound,q两个方法相?br />     convertInbound    q站转换 字W串转换为java可识别的对象                                针对调用Ҏ(gu)的输入参?br />     convertOutbound 出站转换 java对象转换为javascript可识别的json格式的字W串 针对调用Ҏ(gu)的返回?/p>

    ]]>
    W五部分 包拆?2)org.directwebremoting.bayeux?http://www.aygfsteel.com/yigemaser/articles/189397.html满店?/dc:creator>满店?/author>Fri, 28 Mar 2008 18:27:00 GMThttp://www.aygfsteel.com/yigemaser/articles/189397.htmlhttp://www.aygfsteel.com/yigemaser/comments/189397.htmlhttp://www.aygfsteel.com/yigemaser/articles/189397.html#Feedback0http://www.aygfsteel.com/yigemaser/comments/commentRss/189397.htmlhttp://www.aygfsteel.com/yigemaser/services/trackbacks/189397.html ?br />

    下面q些可以实现Zweb的实时事仉知的方法:(x)

        1.HTTP:(x)q种Ҏ(gu)由存在于不间断的HTTPq接响应中或某个XMLHttpRequestq接中的服务器数据流所l成?/p>

      2.HTTP拉取方式Q在q种传统的方法中Q客L(fng)以用户可定义的时间间隔去(g)查服务器上的最新数据。这U拉取方式的频率要够高才能保证很高的数据精度Q?br /> 但高频率可能?x)导致多余的(g)查,从而导致较高的|络量。而另一斚wQ低频率则会(x)D错过更新的数据。理惛_Q拉取的旉间隔应该{于服务器状态改变的速度?/p>

      3.反{AJAXQ服务流应用到AJAXQ就是所谓的反{AJAX 或者COMET 。它使得服务器在某事件发生时可以发送消息给客户端,而不需要客L(fng)昑ּ的请求?br /> 目标在于辑ֈ状态变化的实时更新。COMET使用?jin)HTTP/1.1中的持箋(hu)q接的特性。通过HTTP/1.1Q除非另作说明,服务器和览器之间的TCPq接?x)一直保持连接状态,
    直到其中一方发送了(jin)一条明昄“关闭q接”的消息,或者有时以及(qing)|络错误发生?/p>

      4.长时间轮询:(x)也就是所谓的异步轮询Q这U方式是U服务器端推送方式和客户端拉取方式的混合。它是基于BAYEUX协议的。这个协议遵循基于主题的发布——订阅机制?br /> 在订阅了(jin)某个频道后,客户端和服务器间的连接会(x)保持打开状态,q保持一D事先定义好的时间。如果服务器端没有事件发生,而发生了(jin)时Q?br /> 服务器端׃(x)h客户端进行异步重新连接。如果有事g发生Q服务器端会(x)发送数据到客户端,然后客户端重新连?br />
        注:(x)CometQ?a >Z HTTP 长连接的“服务器推”技?/a>
    ?br />         Bayeux是Dojo基金?x)定义的一个协议。dwr在去q的时候就开始支持该协议Q随着dwr目2008q初加入到Dojo基金?x),ajax技?dwr)和comet(cometd)技术将?x)融合的更加紧?说明Qdwr,cometd现在都属于dojo基金?x)下面的?Q本包将来估计会(x)作很大的变化。ajax技术和comet技术的融合Q参?a >使用 Jetty ?Direct Web Remoting ~写可扩展的 Comet 应用E序Q?br />         q个包是dwr外部支持包,q未被其他包引用?br />         org.directwebremoting.bayeux.BayeuxClient                                                        Bayeux协议客户?br />         org.directwebremoting.bayeux.BayeuxScriptConduit                                            Bayeux协议Script道
            org.directwebremoting.bayeux.BayeuxServletContextAttributeListener                  该监听器由web.xml注册Q如果要使用推的技术,那么你就必须注册QBayeuxServletContextAttributeListenerQ会(x)调用BayeuxClientQ按comet原理script推送的客户端。具体细节未作研I?br />      
            
           



    ]]>
    W五部分 包拆?1)org.directwebremoting?/title><link>http://www.aygfsteel.com/yigemaser/articles/189168.html</link><dc:creator>满店?/dc:creator><author>满店?/author><pubDate>Thu, 27 Mar 2008 17:52:00 GMT</pubDate><guid>http://www.aygfsteel.com/yigemaser/articles/189168.html</guid><wfw:comment>http://www.aygfsteel.com/yigemaser/comments/189168.html</wfw:comment><comments>http://www.aygfsteel.com/yigemaser/articles/189168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yigemaser/comments/commentRss/189168.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yigemaser/services/trackbacks/189168.html</trackback:ping><description><![CDATA[<p>AjaxFilter<br />           2U类型接?br />            1Q认证,日志Q安全,<br />            2Qgq?br />             org.directwebremoting.filter.ExtraLatencyAjaxFilter<br />              一般和AjaxFilterChain合作<br /> <br />  Container <br />           容器</p> <p> hub   <br />            集线器,提供多个ajax互相操作接口Q得一个界面中多个ajax可以互相调用Q参考openajax联盟制定的规则,dwr已经是联盟的?x)员(sh)一<br />            org.directwebremoting.export包会(x)用到Q具体细节不清楚<br /> <br />  ScriptBuffer<br />             采用list储存scriptQ功能类gStringBuffer</p> <p> ServerContext<br />             服务器端上下?br /> <br />  WebContext<br />             览器上下文Q?span style="color: red">好像是每个客户一个(U色表示没仔l看Q?br /> </span> auth.js <br />             AuthHandler负责dq个js文g<br />             l节由CachingFileHandlerd<br />              readResource()字节符转换为字W串<br />              l承JavaScriptHandler接口Q专门处理读取js文g</p> <p>             JavaScriptHandler extends TemplateHandler implements CachingFileHandler implements Handler</p> <p>             CachingFileHandler<br />              d数据文gQ根据req的报头属性判断,如果修改q,那么重新下蝲Q否则不?nbsp;<br />              下蝲d资源文gQ由不同的handle处理Q这些handle都承于JavaScriptHandler<br />              如:(x)AuthHandler extends JavaScriptHandler<br />              实际上客L(fng)?x)将js文g下蝲到缓存区Q这U机制可以得浏览的时候检查是否js文g内容发生变化。从而重C载?/p> <p> dwr20.dtd  <br />             org.directwebremoting.impl.DTDEntityResolve处理<br />  dwr20.xsd <br />              <span style="color: red">实际上没用到<br /> </span>             两种xml框架cd文gQ可以被parse识别?/p> <p>engine.js <br />             引擎js,在浏览器~存?sh)?x)发现q个文g已经下蝲到本地。EngineHandler处理,</p> <p> messages.properties <br />             语言资源文g<br />             由org.directwebremoting.util.Messagesd<br />             private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("org.directwebremoting.messages");</p> <img src ="http://www.aygfsteel.com/yigemaser/aggbug/189168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yigemaser/" target="_blank">满店?/a> 2008-03-28 01:52 <a href="http://www.aygfsteel.com/yigemaser/articles/189168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>W四部分 DWRServletcd?/title><link>http://www.aygfsteel.com/yigemaser/articles/189167.html</link><dc:creator>满店?/dc:creator><author>满店?/author><pubDate>Thu, 27 Mar 2008 17:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/yigemaser/articles/189167.html</guid><wfw:comment>http://www.aygfsteel.com/yigemaser/comments/189167.html</wfw:comment><comments>http://www.aygfsteel.com/yigemaser/articles/189167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yigemaser/comments/commentRss/189167.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yigemaser/services/trackbacks/189167.html</trackback:ping><description><![CDATA[<p>    org.directwebremoting.servlet.DwrServlet主要分ؓ(f)三部分,也就是三个主要方?init;doGet;doPost;<br />     1,init,初始化?nbsp;   <br />     DWR对于Servelet容器内部设一个配|容器,该容器装载dwr映射相关信息?/p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> init(ServletConfig servletConfig) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> ServletException<br /> <img id="Codehighlighter1_74_1576_Open_Image" onclick="this.style.display='none'; Codehighlighter1_74_1576_Open_Text.style.display='none'; Codehighlighter1_74_1576_Closed_Image.style.display='inline'; Codehighlighter1_74_1576_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_74_1576_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_74_1576_Closed_Text.style.display='none'; Codehighlighter1_74_1576_Open_Image.style.display='inline'; Codehighlighter1_74_1576_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span id="Codehighlighter1_74_1576_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_74_1576_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">super</span><span style="color: #000000">.init(servletConfig);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        ServletContext servletContext </span><span style="color: #000000">=</span><span style="color: #000000"> servletConfig.getServletContext();<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">try</span><span style="color: #000000"><br /> <img id="Codehighlighter1_207_1069_Open_Image" onclick="this.style.display='none'; Codehighlighter1_207_1069_Open_Text.style.display='none'; Codehighlighter1_207_1069_Closed_Image.style.display='inline'; Codehighlighter1_207_1069_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_207_1069_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_207_1069_Closed_Text.style.display='none'; Codehighlighter1_207_1069_Open_Image.style.display='inline'; Codehighlighter1_207_1069_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_207_1069_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_207_1069_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #008000">//</span><span style="color: #008000"> setupLogging() only needed for servlet logging if commons-logging is unavailable<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #008000">//</span><span style="color: #008000"> logStartup() just outputs some version numbers</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">            日志初始化开?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            StartupUtil.logStartup(servletConfig);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #008000">//</span><span style="color: #008000"> create and setup a DefaultContainer</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">             DWR对于Servelet容器内部设一个配|容器,该容器装载dwr隐射相关信息?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            container </span><span style="color: #000000">=</span><span style="color: #000000"> ContainerUtil.createAndSetupDefaultContainer(servletConfig);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            StartupUtil.initContainerBeans(servletConfig, servletContext, container);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            webContextBuilder </span><span style="color: #000000">=</span><span style="color: #000000"> container.getBean(WebContextBuilder.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            ContainerUtil.prepareForWebContextFilter(servletContext, servletConfig, container, webContextBuilder, </span><span style="color: #0000ff">this</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            ContainerUtil.publishContainer(container, servletConfig);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            ContainerUtil.configureContainerFully(container, servletConfig);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (ExceptionInInitializerError ex)<br /> <img id="Codehighlighter1_1126_1272_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1126_1272_Open_Text.style.display='none'; Codehighlighter1_1126_1272_Closed_Image.style.display='inline'; Codehighlighter1_1126_1272_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1126_1272_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1126_1272_Closed_Text.style.display='none'; Codehighlighter1_1126_1272_Open_Image.style.display='inline'; Codehighlighter1_1126_1272_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_1126_1272_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1126_1272_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            log.fatal(</span><span style="color: #000000">"</span><span style="color: #000000">ExceptionInInitializerError. Nested exception:</span><span style="color: #000000">"</span><span style="color: #000000">, ex.getException());<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">throw</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ServletException(ex);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (Exception ex)<br /> <img id="Codehighlighter1_1311_1420_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1311_1420_Open_Text.style.display='none'; Codehighlighter1_1311_1420_Closed_Image.style.display='inline'; Codehighlighter1_1311_1420_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1311_1420_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1311_1420_Closed_Text.style.display='none'; Codehighlighter1_1311_1420_Open_Image.style.display='inline'; Codehighlighter1_1311_1420_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_1311_1420_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1311_1420_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            log.fatal(</span><span style="color: #000000">"</span><span style="color: #000000">DwrServlet.init() failed</span><span style="color: #000000">"</span><span style="color: #000000">, ex);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">throw</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ServletException(ex);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">finally</span><span style="color: #000000"><br /> <img id="Codehighlighter1_1446_1570_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1446_1570_Open_Text.style.display='none'; Codehighlighter1_1446_1570_Closed_Image.style.display='inline'; Codehighlighter1_1446_1570_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1446_1570_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1446_1570_Closed_Text.style.display='none'; Codehighlighter1_1446_1570_Open_Image.style.display='inline'; Codehighlighter1_1446_1570_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_1446_1570_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1446_1570_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">if</span><span style="color: #000000"> (webContextBuilder </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">)<br /> <img id="Codehighlighter1_1503_1560_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1503_1560_Open_Text.style.display='none'; Codehighlighter1_1503_1560_Closed_Image.style.display='inline'; Codehighlighter1_1503_1560_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1503_1560_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1503_1560_Closed_Text.style.display='none'; Codehighlighter1_1503_1560_Open_Image.style.display='inline'; Codehighlighter1_1503_1560_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span id="Codehighlighter1_1503_1560_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1503_1560_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />                webContextBuilder.unset();<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span></div> <p><br /> 比较l致的环节:(x)<br />  init()调用<br />      createAndSetupDefaultContainer()<br />         调用<br />          setupDefaultContainer(defaultContainer, servletConfig)<br />              调用如下步骤<br />                    1)setupDefaults(container);<br />                    包括Q?br />                    容器相关理工具配置集,也就是要实现的一些接口。这U方式蛮好,当容器需要具备很多接口功能时Q把q些接口全部做成隐射Qƈ讄成可配置的实?br />                     container.addImplementation(AccessControl.class, DefaultAccessControl.class);<br />                     // Mapping handlers to URLsQ\径配|?br />                     createUrlMapping(container, "/index.html", IndexHandler.class, "indexHandlerUrl");<br />                     //dservlet配置属?br />                    2)setupFromServletConfig(container, servletConfig);<br />                      额外处理1)中多选类?br />                    3)resolveMultipleImplementations(container, servletConfig);</p> <p>                    里面使用?jin)通用yui型压~器 <br />                    【?YUI Compressor 压羃 Javascript ?CSS <br />         <br />                     工具下蝲Q?http://www.julienlecomte.net/yuicompressor/ <br />                     英文介绍Q?http://com3.devnet.re3.yahoo.com/yui/compressor/ </p> <p>                    YUI Compressor是用Java~写的工P需要Java版本大于{于1.4?</p> <p>                    工作原理介:(x) <br />                     主要是去掉冗余的I白Q主要包括空|换行W、制表符?nbsp;<br />                     对于 JavascriptQ还采用~短变量名的Ҏ(gu)压羃文gQ就是在保证代码正确性的情况下将变量名用只有1个字W的字符串代替,或?个?个字W,M量短?nbsp;<br />                     对于 CSSQ还有采用优?值属性值的表示Q优化颜色值的Ҏ(gu)压羃文g?nbsp;<br />                      CSS的优化比 CSSTidy 功能弱。CSSTidyq能支持一些相兛_性的合ƈ。?br />                      //工具配置?加蝲Q显玎ͼ(g)?br />                    4)container.setupFinished();<br />                      容器内容bean初始?,包括pȝ默认Q?Q?br />                      initContainerBeans</p>     2QdoGet<br />   实际调用doPost,看到q里最好温?fn)下servlet的doGetҎ(gu)和doPost的区?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">protected</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> doGet(HttpServletRequest req, HttpServletResponse resp) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> IOException, ServletException<br /> <img id="Codehighlighter1_112_145_Open_Image" onclick="this.style.display='none'; Codehighlighter1_112_145_Open_Text.style.display='none'; Codehighlighter1_112_145_Closed_Image.style.display='inline'; Codehighlighter1_112_145_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_112_145_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_112_145_Closed_Text.style.display='none'; Codehighlighter1_112_145_Open_Image.style.display='inline'; Codehighlighter1_112_145_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span id="Codehighlighter1_112_145_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_112_145_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        doPost(req, resp);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div> <br />     3QdoPost<br />    <a href="http://localhost:5050/dwr/simpletext/index.html">在工E中Q有个样例Dynamically TextQ地址是http://localhost:5050/dwr/simpletext/index.html</a>Q当点击按钮Ӟ实际上就是触发了(jin)org.directwebremoting.servlet.DwrServlet的下面的Ҏ(gu)?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">protected</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> doPost(HttpServletRequest request, HttpServletResponse response) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> IOException, ServletException<br /> <img id="Codehighlighter1_121_466_Open_Image" onclick="this.style.display='none'; Codehighlighter1_121_466_Open_Text.style.display='none'; Codehighlighter1_121_466_Closed_Image.style.display='inline'; Codehighlighter1_121_466_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_121_466_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_121_466_Closed_Text.style.display='none'; Codehighlighter1_121_466_Open_Image.style.display='inline'; Codehighlighter1_121_466_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span id="Codehighlighter1_121_466_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_121_466_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">try</span><span style="color: #000000"><br /> <img id="Codehighlighter1_143_385_Open_Image" onclick="this.style.display='none'; Codehighlighter1_143_385_Open_Text.style.display='none'; Codehighlighter1_143_385_Closed_Image.style.display='inline'; Codehighlighter1_143_385_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_143_385_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_143_385_Closed_Text.style.display='none'; Codehighlighter1_143_385_Open_Image.style.display='inline'; Codehighlighter1_143_385_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_143_385_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_143_385_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            webContextBuilder.set(request, response, getServletConfig(), getServletContext(), container);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            UrlProcessor processor </span><span style="color: #000000">=</span><span style="color: #000000"> container.getBean(UrlProcessor.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            processor.handle(request, response);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">finally</span><span style="color: #000000"><br /> <img id="Codehighlighter1_411_460_Open_Image" onclick="this.style.display='none'; Codehighlighter1_411_460_Open_Text.style.display='none'; Codehighlighter1_411_460_Closed_Image.style.display='inline'; Codehighlighter1_411_460_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_411_460_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_411_460_Closed_Text.style.display='none'; Codehighlighter1_411_460_Open_Image.style.display='inline'; Codehighlighter1_411_460_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_411_460_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_411_460_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            webContextBuilder.unset();<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div> <img src ="http://www.aygfsteel.com/yigemaser/aggbug/189167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yigemaser/" target="_blank">满店?/a> 2008-03-28 01:41 <a href="http://www.aygfsteel.com/yigemaser/articles/189167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">Ϻ</a>| <a href="http://" target="_blank">ʲ</a>| <a href="http://" target="_blank">Ƶ</a>| <a href="http://" target="_blank">֣</a>| <a href="http://" target="_blank">ƽȪ</a>| <a href="http://" target="_blank">Ǹ</a>| <a href="http://" target="_blank">Ѩ</a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˼</a>| <a href="http://" target="_blank">ű</a>| <a href="http://" target="_blank">Ӣ</a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank">բ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank">Ĭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">佭</a>| <a href="http://" target="_blank">Է</a>| <a href="http://" target="_blank">گ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ƾ</a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ľ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>