GWT中前后台交互有多种方式,包括JSON,XML,RPC
其中RPC是GWT提供给我们的功能,他能够让我们直接在前后台传递对象,而无效考虑中间的传递过程。这样的好处是大大提高了我们的开发效率。
GWT是如果后台是如果处理对象,使之序列化,网络传输,反序列化的呢。
下图是RPC过程中的几个核心类。
创建一个RPC,我们需要创建一个Servlet继承RemoteServiceServlet
当页面调用一个RPC时便进入了这个Servlet的doPost方法,此方法在AbstraceRemoteServiceServlet中
public final void doPost(HttpServletRequest request,
HttpServletResponse response) {
// Ensure the thread-local data fields have been initialized
try {
// Store the request & response objects in thread-local storage.
//
synchronized (this) {
validateThreadLocalData();
perThreadRequest.set(request);
perThreadResponse.set(response);
}
processPost(request, response);
} catch (Throwable e) {
// Give a subclass a chance to either handle the exception or rethrow it
//
doUnexpectedFailure(e);
} finally {
// null the thread-locals to avoid holding request/response
//
perThreadRequest.set(null);
perThreadResponse.set(null);
}
}
此方法中GWT将request和response放入线程变量,方便之后的调用
核心步骤在processPost(request,response)方法中。
这个方法在AbstractRemoteServiceServlet中是个抽象方法。RemoteServiceServlet实现了这个方法:
public final void processPost(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException,
SerializationException {
// Read the request fully.
//
String requestPayload = readContent(request);
// Let subclasses see the serialized request.
//
onBeforeRequestDeserialized(requestPayload);
// Invoke the core dispatching logic, which returns the serialized
// result.
//
String responsePayload = processCall(requestPayload);
// Let subclasses see the serialized response.
//
onAfterResponseSerialized(responsePayload);
// Write the response.
//
writeResponse(request, response, responsePayload);
}
这个核心方法主要的工作是:解析Request中的内容,根据解析出来的内容判断需要调用哪个方法,签名参数是什么。利用反射调用目标Service的方法,最后将返回结果序列化,写入Response。
具体代码上的体现是
1. readContent(request) 解析Request请求
2. processCall(requestPayload) 根据解析出来的结果利用反射调用Servie方法
3. writeResponse(request, response, responsePayload) 将最终结果写入Response
在这些过程中用到了RPC RPCServletUtils 等辅助类,核心功能是编码解码请求
- 大小: 95.5 KB
分享到:
相关推荐
介绍gwtrpc-spring项目限制了Spring GWT-RPC。 其目的是提供后者的简化和更新版本。得到它Spring GWT-RPC在Maven Central上发布: < dependency> < groupId>fr.sertelon.spring</ groupId> < artifactId>spring-gwt...
GWT的环境搭建详细配置说明,GWT中RPC调用的详细例子,内附代码加文档说明。
GWT-RPC-1.pdf
基于GWTRPC的通讯软件源代码 作业源代码
GWT-RPC.pdfGWT-RPC.pdfGWT-RPC.pdfGWT-RPC.pdf
GWT-RPC-2.pdf GWT-RPC-2.pdf
GWT学习经验及实例指导,详细说明了GWT的安装以及使用步骤,结合实例,简单易懂
115提供的那个不知道怎么回事,我一直下不下来,后来在论坛...8. GWT-RPC 9. Ext GWT 10. (实战)俄罗斯方块游戏 11. (实战)费用申请审批流程 12. GWT与Flex整合 13. 图片缓存 CSS Sprite 14. 本地化 15. 其他高级功能
gwt-rpc-序列化 重用 gwt-storage 和 gwt-rpc 序列化技术在客户端序列化对象的概念证明
gwt 练习gwt 练习gwt 练习gwt 练习
EXT-GWT2.0.1+API+DOC gwtdesigner Gwt-Ext基础-中级-进阶 GWT快速开发 GWT入门 GWT中文教程
fwefwefwGWT工具GWT工具GWT工具GWT工具GWT工具GWT工具
org.liveSense.sample.gwt.notes.zip,livesense gwt rpc samplelivesense gwt示例
在本文的后面部分将对利用GWT进行RPC调用进行详细介绍。 3.更加方便的调试 由于在开发阶段不需要生成HTML截面,用户开发的代码实际上是在JVM上运行的,这样用户就可以用传统的调试Java代码的方法对程序进行调试...
GWTPHP RPC 演示: : 巨大的功劳归于 Rafal M.Malinowski,他是 GWT 1.5 的原始 GWTPHP 库的作者。 他的项目网站: : 该项目已经死了很多年了,但我认为这是一个不错的主意,希望通过将其带到 GitHub 并结合最新...
本书内容全面,不仅详细介绍了 GWT 的主要模块和控件、GWT 与 JavaScript 对象的交互、在 GWT 中使用 XML、开发自定义 GWT 控件、GWT-RPC 和 Ext GWT 等必备的基础知识,而且还深入讲解了 GWT 与 Flex整合、图片缓存...
Gwt Rpc Spring做的一个整合
gwt 入门,是你开始学习gwt的大道 安装之后的目录结构为: C:\程序开发\Java\gwt-windows-1.4.59 doc(文档目录,开发文档和Java API文档) samples(示例代码目录,非常有名的KitchenSink示例代码即在此目录中)...
Gwt中文手册,GWt入门Gwt中文手册,GWt入门Gwt中文手册,GWt入门
填《GWT揭秘》中8.1节中--GWT中的XMLHTTPRequest:请求动态数据的代码,