??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久久久电影,在线观看视频你懂的,93在线视频精品免费观看http://www.aygfsteel.com/zkjbeyond/category/11348.html原创专栏 开源学?/description>zh-cnWed, 28 Feb 2007 15:26:31 GMTWed, 28 Feb 2007 15:26:31 GMT60ajax blog 搬家http://www.aygfsteel.com/zkjbeyond/archive/2006/08/21/64760.html原创专栏 开源学?/dc:creator>原创专栏 开源学?/author>Mon, 21 Aug 2006 04:52:00 GMThttp://www.aygfsteel.com/zkjbeyond/archive/2006/08/21/64760.htmlhttp://www.aygfsteel.com/zkjbeyond/comments/64760.htmlhttp://www.aygfsteel.com/zkjbeyond/archive/2006/08/21/64760.html#Feedback2http://www.aygfsteel.com/zkjbeyond/comments/commentRss/64760.htmlhttp://www.aygfsteel.com/zkjbeyond/services/trackbacks/64760.html
朋友l了个blog,专门放ajax的文章吧Q以后这专门写关于java的东西吧?br />http://zkj.wisekernel.net

谢谢支持?img src ="http://www.aygfsteel.com/zkjbeyond/aggbug/64760.html" width = "1" height = "1" />

]]>
dwr2.0 milestone 1 的些新功?/title><link>http://www.aygfsteel.com/zkjbeyond/archive/2006/04/20/42031.html</link><dc:creator>原创专栏 开源学?/dc:creator><author>原创专栏 开源学?/author><pubDate>Wed, 19 Apr 2006 16:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/zkjbeyond/archive/2006/04/20/42031.html</guid><wfw:comment>http://www.aygfsteel.com/zkjbeyond/comments/42031.html</wfw:comment><comments>http://www.aygfsteel.com/zkjbeyond/archive/2006/04/20/42031.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zkjbeyond/comments/commentRss/42031.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zkjbeyond/services/trackbacks/42031.html</trackback:ping><description><![CDATA[    一直关注DWR目,我们目中有些功能有它来实现,M下来效果不错.一直期?.0的发?我一般不{正式版本发布是不会仔细看的,在javaeye 有h提到 DWR version 2.0 milestone 1 is released ?span class="postbody"><a target="_blank">http://getahead.ltd.uk/dwr/changelog/dwr20m1</a> .下蝲了看了看.<br /><br />主要特征修改如下:<br /><strong>Reverse Ajax</strong><br />DWR 1.x允许用javascript代码异步调用java代码. DWR 2.0 允许你用java代码调用javascript代码?Reverse Ajax 可以使你更方便的建立Ҏ通信cd用程? It can use polling or <a class="" title="" target="_blank">Comet</a> (long-lived HTTP) queries. <br /><br />发行包里有Chat example 的例子可以直接运?<br /> <font face="Courier New"><span id="wmqeeuq" class="java_type">OutboundVariable</span><span id="wmqeeuq" class="java_plain"> ov </span><span id="wmqeeuq" class="java_operator">=</span><span id="wmqeeuq" class="java_plain"> wctx</span><span id="wmqeeuq" class="java_separator">.</span><span id="wmqeeuq" class="java_plain">toJavascript</span><span id="wmqeeuq" class="java_separator">(</span><span id="wmqeeuq" class="java_plain">messages</span><span id="wmqeeuq" class="java_separator">);<br /></span></font><span id="wmqeeuq" class="java_plain"></span>把java对象转化成javascript代码,在客Leval()Ҏ执行.(google maps也用了这U方?<br />服务器把q段javascript代码发到在当前页面的用户,更新面. 注意q里不是传统web늚拉模?而是推模?<br /><h2><font size="3">Cross Domain Ajax: <code><script></code> tag manipulation</font></h2><p>大家写ajax+webservice或javascript调用其它web domain的web应用Ӟ可能会遇到麻烦,可能你也有了解决Ҏ。但dwr2.0提供了个<font face="Courier New"><script></font> tag。可以直接?br /><strong>The <code><signatures></code> Element<br /></strong>如果你DWR2.0跑在jdk5.0下,<font face="Courier New">signatures不需要,由JDK5 generic types提供转换时的疑惑?br /><strong>DWRUtil Updates<br /><br /></strong>javascript脚本的修攏V(略)</font></p><strong>New Attribute Scope - Script<br /></strong><font face="Courier New">Q略Q?br /></font><strong>Refactoring</strong><br /><font face="Courier New">代码重构Q改动较大,包都换成org.directwebremoting<br /></font><strong>Security and Stability<br /></strong>除了支持<strong>j2eeSecurity外,可以用web容器的session来控制权限?/strong><br /><br /><br />从代码角度看dwr2.0可能要集成dojo的一些东西,对spring的集成力度加大。野心不啊?/span><img src ="http://www.aygfsteel.com/zkjbeyond/aggbug/42031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zkjbeyond/" target="_blank">原创专栏 开源学?/a> 2006-04-20 00:12 <a href="http://www.aygfsteel.com/zkjbeyond/archive/2006/04/20/42031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>M遍DWR1.1官方文档Q提取的些东?/title><link>http://www.aygfsteel.com/zkjbeyond/archive/2006/03/23/37032.html</link><dc:creator>原创专栏 开源学?/dc:creator><author>原创专栏 开源学?/author><pubDate>Thu, 23 Mar 2006 05:18:00 GMT</pubDate><guid>http://www.aygfsteel.com/zkjbeyond/archive/2006/03/23/37032.html</guid><wfw:comment>http://www.aygfsteel.com/zkjbeyond/comments/37032.html</wfw:comment><comments>http://www.aygfsteel.com/zkjbeyond/archive/2006/03/23/37032.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zkjbeyond/comments/commentRss/37032.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zkjbeyond/services/trackbacks/37032.html</trackback:ping><description><![CDATA[ <span id="wmqeeuq" class="postbody">1、java的方法避免用 java ?javascript的关键字??try()Ҏ ?delete()Ҏ?<br />2、在你的javacM不要出现重蝲 avoid overloaded methods. <br />3? 在生产环境下Q你可以把deprecated.js engine.js util.js 合ƈ成一个,q放到web容器内,直接在htm,jsp中引用? Q对于java代码转换成的javascript代码也可以这么做Q免得每ơ生成javascript代码费旉Q?<br />4、研I一下Bean Converters。POJOjava对象必须严格按照 getProperty() setProperty()定义。Bean Converters是按?java对象?get setҎ工作的。DWR1.1加了Object Converters,是按private int property;q类属性工作的?<br /><convert converter="bean" match="example.Fred"/> <br /><param name="exclude" value="property1, property2"/> <br /></convert> <br />当你q样配置Ӟjava对象转化成的javascript对象不包括property1和property2?<br /><convert converter="bean" match="example.Fred"/> <br /><param name="include" value="property1, property2"/> <br /></convert> <br />反过来java对象转化成的javascript对象直包括property1和property2?<br />5?lt;convert converter="collection" match="java.util.Collection"/> <br /><convert converter="map" match="java.util.Map"/> <br />q也是容易出问题的地? <br />?<br />package example; <br />public class Person{ <br />private String name; <br />get ... set <br />private List relationPerson; <br />public List setRelationPerson(List relationPerson){ <br />this.relationPerson=relationPerson; <br />} <br />} <br /><convert converter="bean" match="example.Person"/> <br /></convert> <br /><signatures> <br /><![CDATA[ <br />import java.util.Set; <br />import example.Person; <br /><br />Person.setRelationPerson(List<Person>); <br />]]> <br /></signatures> <br /><br />在jdk1.5泛型中有写法区别 <br /><br /><br />6、另外在Set,List{做为方法参数时也会出现h。返回集合类型不会出现问题,xq道了?<br />? 在TestcM?public Set testBeanSetParam(Set test) q个ҎQ客L得到的javascriptҎ可能是Test.testBeanSetParam(p0,callback);当我? javascript调用q个ҎӞ鬼才知道怎么定p0的类?也不可能知道Set集合中该放什么类型的java对象Q所以dwr? special signatures syntax 定q些集合和内容的cd <br /><signatures> <br /><![CDATA[ <br />import java.util.Set; <br />import example.Test; <br /><br />Test.testBeanSetParam(Set<TestBean>); <br /><!--Test.stringStringMapParam(Map<String, String>);--> <br />]]> <br /></signatures> <br />7、Creators <br /><allow> <br /><create creator="..." javascript="..." scope="..."> <br /><param name="..." value="..."/> <br /><auth method="..." role="..."/> <br /><exclude method="..."/> <br /><include method="..."/> <br /></create> <br />... <br /></allow> <br />Z更少的暴露业务方法,最好配|include属性?<br />dwr支持new ,script,struts....几种集成ҎQ也支持staticҎ的调用,我觉得最好的是spring,其他感觉是处理遗留问题处理?<br />8、engine_js 作ؓdwr框架客户端核心,主要完成xmlHttp或iframe的构造,我们没必要关心它如何实现。有几点创新的我们可以学习下?<br />Call Batching 我们可以把几个客Lh一h送到服务器端Q减了|络交互Q但要注意依存关pd他们处理的顺序?<br />Call Ordering 同步异步调整。一般用默认的就好了。注意依存关pR?<br />Remoting Hooks 钩子Q?small AOP" <br />依存关系解释?如果 request1() request2()两个业务逻辑ҎQrequest2Ҏ需要用到request1Ҏ从服务器端返回的l果。如果调用request2Ӟrequest1q没处理或还没请求?下拉框连动可能有q个问题?<br />9、util.js propotype.js有些重复Q这让我很难受。只能改代码了,可别坏了开元协议?<br />10、如果你的回调方法想加其他参?<br />var dataFromBrowser = ...; <br />var callbackProxy = function(dataFromServer) { <br />callbackFunc(dataFromServer, dataFromBrowser); <br />}; <br />var callMetaData = { callback:callbackProxy }; <br />Remote.method(params, callMetaData); <br />11、dwr1.1 <br />1.1只能一个bug消除版本Q没有什么大的功能调整。源代码l构做了些调整?.0有新的特征加入?<br /><br />It has a far broader scope; the major new features are accessibility enhancements, and what now appears to be called 'Comet'. 在文档中提到了“Comet”,估计与DWR2.0作者想法类伹{?<br /><br /><a target="_blank">http://forum.javaeye.com/viewtopic.php?t=19089</a><br /><br />g叫server push?<br /><br /><a target="_blank">http://alex.dojotoolkit.org/?p=545</a> l正名了Q叫 Comet</span> <span id="wmqeeuq" class="postbody"> </span> <span id="wmqeeuq" class="gensmall"> </span> <img src ="http://www.aygfsteel.com/zkjbeyond/aggbug/37032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zkjbeyond/" target="_blank">原创专栏 开源学?/a> 2006-03-23 13:18 <a href="http://www.aygfsteel.com/zkjbeyond/archive/2006/03/23/37032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dwr配置web.xmlhttp://www.aygfsteel.com/zkjbeyond/archive/2006/03/23/37030.html原创专栏 开源学?/dc:creator>原创专栏 开源学?/author>Thu, 23 Mar 2006 05:17:00 GMThttp://www.aygfsteel.com/zkjbeyond/archive/2006/03/23/37030.htmlhttp://www.aygfsteel.com/zkjbeyond/comments/37030.htmlhttp://www.aygfsteel.com/zkjbeyond/archive/2006/03/23/37030.html#Feedback2http://www.aygfsteel.com/zkjbeyond/comments/commentRss/37030.htmlhttp://www.aygfsteel.com/zkjbeyond/services/trackbacks/37030.html1、最配|?
java代码: 

<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>


2、当我们想看DWR自动生成的测试页QUsing debug/test modeQ时Q可?/span>
java代码: 

servlet中加
<init-param>
  <param-name>debug</param-name>
  <param-value>true</param-value>
</init-param>

q个参数DWR默认是false.如果选择true.我们可以通过url http://localhost:port/app/dwr ,你就可以看到你部|的每个DWR class。ƈ且可以测试java代码的每个方法是否运行正常。ؓ了安全考虑Q在正式环境下你一定把q个参数设ؓfalse.
3、logging信息配置?
? 无java.util.logging的jdk1.3下运行DWR,我们不希望强制用户加一个logging包,而是用HttpServlet.log ()Ҏ来输出日志。如果classpath中包括logging jar包,DWR自动切换用logging输出日志?
如果用HttpServlet.log()ҎQ以下配|是有效的?
java代码: 

<init-param>
<param-name>logLevel</param-name>
<param-value>DEBUG</param-value>
</init-param>

有效的值是 FATAL, ERROR, WARN (the default), INFO and DEBUG

我是喜欢用log4j输出日志Q那么在log4j.properties下加Qlog4j.logger.uk.ltd.getahead.dwr = debug。这样可以看DWR的调试日志?
4、多dwr.xml文g的配|?
可能有几U情况,我们一一列D?一个servlet,多个dwr.xml配置文gQ多个servletQ每个servlet对应一个或多个dwr.xml.
一个servlet,多个dwr.xml配置文gQ?
java代码: 

<servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
    <init-param>
      <param-name>config-1</param-name>
      <param-value>WEB-INF/dwr1.xml</param-value>
    </init-param>
    <init-param>
      <param-name>config-2</param-name>
      <param-value>WEB-INF/dwr2.xml</param-value>
    </init-param>
</servlet>

? q种配置下,param-name的值必Mconfig开头。param-name可以?gt;=0个。如果没有param-nameQ那么将会读? WEB-INF/dwr.xml。如果有大于零个param-nameQ那么WEB-INF/dwr.xml文g不会被d?

多个servletQ每个servlet对应一个或多个dwr.xml
java代码: 

<servlet>
   <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<!--用classes/dwr.xml-->
</servlet>
<servlet>
   <servlet-name>dwr-invoker1</servlet-name>
   <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
   <init-param>
     <param-name>config-admin</param-name>
     <param-value>WEB-INF/dwr1.xml</param-value>
   </init-param>
   <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>
<servlet-mapping>
   <servlet-name>dwr-invoker1</servlet-name>
   <url-pattern>/dwr1/*</url-pattern>
</servlet-mapping>

在这U情况下Q我们可以根据J2EE security来控制权限,针对不同url,加不同的角色?
5、dwr的几个扩展点QPlug-insQ?
DWR对以下接口提供的默认的实玎ͼ用户可以l承DWR的默认实现类来达到我们想要的效果。但q至需要我们读了DWR源码才能做这些工?dwr源码很是清晰Q有兴趣可以学习一?Q以后可能补存这部分?
java代码: 

uk.ltd.getahead.dwr.AccessControl   
uk.ltd.getahead.dwr.Configuration
uk.ltd.getahead.dwr.ConverterManager
uk.ltd.getahead.dwr.CreatorManager
uk.ltd.getahead.dwr.Processor
uk.ltd.getahead.dwr.ExecutionContext


]]>
dwr学习1http://www.aygfsteel.com/zkjbeyond/archive/2006/03/23/37029.html原创专栏 开源学?/dc:creator>原创专栏 开源学?/author>Thu, 23 Mar 2006 05:16:00 GMThttp://www.aygfsteel.com/zkjbeyond/archive/2006/03/23/37029.htmlhttp://www.aygfsteel.com/zkjbeyond/comments/37029.htmlhttp://www.aygfsteel.com/zkjbeyond/archive/2006/03/23/37029.html#Feedback1http://www.aygfsteel.com/zkjbeyond/comments/commentRss/37029.htmlhttp://www.aygfsteel.com/zkjbeyond/services/trackbacks/37029.html以下是我临时译的一些东?本来惛_?发现dwr实在是简?随便写?英文居差,C?

1、DWR: Easy AJAX for JAVA

作ؓ一个java open source library,DWR可以帮助开发h员完成应用AJAX技术的webE序。它可以让浏览器上的javascriptҎ调用q行在web服务器上javaҎ?

DWR主要׃部门l成。javascript与web服务器通信q更新web;q行在web服务器的Servlet处理hq把响应发回览器?

DWR 采用新颖的方法实CAJAX(本来也没有确切的定义)Q在java代码基础上动态的生成javascript代码。web开发者可以直接调用这? javascript代码Q然而真正的代码是运行在web服务器上的java code。出与安全考虑Q开发者必配|哪些java class暴露lDWR.(dwr.xml)

q种?java到javascript)调用机制l用户一U感觉,好象常规的RPC机制Q或RMI or SOAP.但是它运行在web上,不需要Q何浏览器插g?

DWR 不认为浏览器和web服务器之间协议重要,把系l界面放在首位。最大挑战是java method call的同步特征与ajax异步Ҏ之间的矛盾。在异步模型里,l果只有在方法结束后才有效。DWR解决了这个问题,把回调函数当成参Cl方法,处理 完成后,自动调用回调Ҏ?

q个图表昄了,通过javascript事gQDWR能改变select的内容,当然q些内容? java代码q回?javascript函数Data.getOptions(populateList)由DWR动态生成,q个函数会调用java class DatacȝҎ。DWR处理如何q程调用Q包括{换所有的参数和返回的l果Qjavascript\javaQ。javaҎ执行完后Q执行回调方? populateList。在整个q程中我们就惛_用本地的Ҏ一栗?

2、Getting Started

废话说Q试试就ok了?
web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app id="dwr">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>

dwr.xml 与web.xml同目?
<?xml version="1.0" encoding="UTF-8"?>
<!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>
</allow>
</dwr>

index.html
<html>
<head>
<title>DWR - Test Home</title>
<script type='text/javascript' src='dwr/interface/JDate.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script>
function init(){
JDate.getYear(load);
}
function load(data){
alert(data+1900+'q?)
}
</script>
</head>
<body onload="init()">
</body>
</html>

dwr.jar 下蝲放lib?

完了Q什么,够了Q就q些。访问ok!
3、Examples
http://www.aboutmyhealth.org/ q不是Google Suggest?ok.
4、源码浅?
dwr的设计很象webwork2的设?隐藏http协议,扩展性,兼容性及强?

通过研究uk.ltd.getahead.dwr.DWRServletq个servlet来研I下dwr到底是如何工作滴?

java代码: 

web.xml配置
<servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>


q样所有的/dwr/*所有请求都p个servlet来处理,它到底处理了些什么能。我们还以上面最单的例子来看?
1?web服务器启动,DWRServlet init()Ҏ调用Qinit主要做了以下工作?
讄日志U别、实例化DWR用到的单例类Q这些类在jvm中只有一个实例对象)、读去配|文Ӟ包括dwr.jar包中的dwr.xml,WEB-INF/dwr.xml. config*.xmlQ?
2、请求处?
DWRServlet.doGet, doPostҎ都调用processor.handle(req, resp)Ҏ处理。Processor对象在init()Ҏ中已l初始化了?
java代码: 

publicvoid handle(HttpServletRequest req, HttpServletResponse resp)
        throwsIOException
    {
        String pathinfo = req.getPathInfo();
        if(pathinfo == null || pathinfo.length() == 0 || pathinfo.equals("/"))
        {
            resp.sendRedirect(req.getContextPath() + req.getServletPath() + '/' + "index.html");
        }else
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/index.html"))
        {
            doIndex(req, resp);
        }else
        if(pathinfo != null && pathinfo.startsWith("/test/"))
        {
            doTest(req, resp);
        }else
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/engine.js"))
        {
            doFile(resp, "engine.js", "text/javascript");
        }else
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/util.js"))
        {
            doFile(resp, "util.js", "text/javascript");
        }else
        if(pathinfo != null && pathinfo.equalsIgnoreCase("/deprecated.js"))
        {
            doFile(resp, "deprecated.js", "text/javascript");
        }else
        if(pathinfo != null && pathinfo.startsWith("/interface/"))
        {
            doInterface(req, resp);
        }else
        if(pathinfo != null && pathinfo.startsWith("/exec"))
        {
            doExec(req, resp);
        }else
        {
            log.warn("Page not found. In debug/test mode try viewing /[WEB-APP]/dwr/");
            resp.sendError(404);
        }
    }


哦。这些恍然大悟。dwr/*处理的请求也p几种?
Q?Qdwr/index.htmlQdwr/test/q种只能在debug模式下用,调试用?
dwr/engine.jsQdwr/util.jsQdwr/deprecated.js当这个请求到达,从dwr.jar包中d文g,响应回去。(重复h有缓存)
Q?Q? 当dwr/interface/q种h到来Q(例如我们在index.html中的 <script type='text/javascript' src='dwr/interface/JDate.js'></script>QDWR做一件伟大的事。把我们在WEB- INF/dwr.xml中的
<create creator="new" javascript="JDate">
<param name="class" value="java.util.Date"/>
</create>
java.util.Date转化为javascript函数?
http://localhost:port/simpledwr/dwr/interface/JDate.js看看吧?/a>
l节也比较简单,通过java反射Q把Ҏ都写成javascript特定的方法。(我觉得这些{换可以放到缓存里Q下ơ调用没必要再生成一遍,不知道作者ؓ什么没q样做)?
Q?Qdwr/exec
javascript调用Ҏ时发送这U请求,可能是XMLHttpRequest或IFrame发送?
? Ӟjavascript调用的方法签名与java代码一_包括参数Q还有javascript的回调方法也传到了服务器端,在服务器端很Ҏ实现。回 调方法的java的执行结?q回cM <script>callMethod(l果)<script>的javascript字符?在浏览器执行。哈Q一切就q么 单,巧妙?

dwr的设计构思很是y妙?
W一、把javac{化ؓjavascriptcȝdwr自动完成Q只需单的配置?
W二、应用v来极其简单。开发者不要该服务器代码就可以集成?
W三、容易测试。和webwork一P隐藏的http协议?
W四、及强扩展性。例如与spring集成Q只需修改一点代码?
W五、性能。就我与jason,{简单比较,dwr性能可能是最好的?
W六、自动把java对象转化为javascript对象Qƈ且及易扩展。[/code]



]]>
վ֩ģ壺 Ϸ| | | ˳| | ƽ| ֯| | ˳| | ʷ| | ͷ| | ν| ͷ| | | ʡ| ϻ| | | ƽ| | | | | ǭ| ѭ| | ǿ| Ҷ| ij| | | ҵ| ר| | | °Ͷ| ɽ|