`
linliangyi2007
  • 浏览: 1009749 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

有兴趣的兄弟(牛人)们来说说(猜猜)GAE的调用原理啊

阅读更多
昨天下了GAE的Eclipse插件,试着用了它的demo程序,觉得很有趣。

看了DEMO的源代码,感觉GAE在web界面的编辑控制上类似Apache Wicket的思路,将web前端编码采用窗体组件的方式实现了,确实很强。

对于用惯了传统web编程模型的我而言,能够理解GAE中业务逻辑放在server端实现的结构;但对于编写在server端的界面事件是如何绑定到web前端的感到很疑惑,我们从demo中看的出,事件和控件都是在界面生成后通过ID动态绑定上去的,那么GAE是如何将后端的java handler中的逻辑绑定到前台呢?(难道将hanlder中的java代码转译成前台的js?)
这里要说的是,GAE绑定的不仅仅是一个事件。因为在后台的Handler处理中有如下语句:
			private void sendNameToServer() {
				sendButton.setEnabled(false);
				String textToServer = nameField.getText();
				textToServerLabel.setText(textToServer);
				serverResponseLabel.setText("");
				greetingService.greetServer(textToServer,
						new AsyncCallback<String>() {
							public void onFailure(Throwable caught) {
								// Show the RPC error message to the user
								dialogBox
										.setText("Remote Procedure Call - Failure");
								serverResponseLabel
										.addStyleName("serverResponseLabelError");
								serverResponseLabel.setHTML(SERVER_ERROR);
								dialogBox.center();
								closeButton.setFocus(true);
							}

......
......
}


注意该语句“String textToServer = nameField.getText();”,这句话是在server端执行的,那么client端如何事先知道要传回哪些input的值来提供server端获取呢?难道是全部嘛?

请熟悉这块技术的兄弟牛人们说说看,给点思路也行啊!
分享到:
评论
23 楼 alanwu 2009-06-24  
说简单一点就是GWT把Java代码编译成ajax
至于ajax如何和java服务端交互,应该不是很难的事情。
22 楼 shoopman 2009-04-24  
GWT跟GAE没有太大关系。
在GAE上跑的应用,可以完全不用GWT。
21 楼 lemanli 2009-04-21  
不懂就要问,不用理会那个不太懂的人,如果懂了还用问,那是stupid
GAE用了GWT而已,所以理解GWT不需要懂GAE,但是了解GAE可能必须要了解GWT
不过我对GAE不懂,GWT只是了解,上次本来写了一堆,没发出去也就算了
只是简单说一下bs原理,一个client,request,server 收到后response,
只要符合http协议标准的东西,后台就是全部用c写,也能把网站做出来,但是不是费劲吗
所以gwt简单来讲就是模拟js输出
20 楼 swen00 2009-04-17  
我支持LZ发帖,不懂就要多问,偶刚开始学,还在摸索中。
19 楼 linliangyi2007 2009-04-16  
yizhuo 写道
这不是他山之石可以攻玉的问题,而是没有独立研究精神的问题。独立研究不等于蒙头做事,你这是在偷换概念。

如果你觉得这就是你的方法,你自然可以继续下去。毕竟与我无干。


行了,大家已经知道你很有研究精神了,而且你懂GWT了。
至于我是否有研究精神确实跟你无关,既然无关,你本可以不回这个贴的。
问题就在于,偏偏你回了,又回的一点建设性意见都没有!

18 楼 yizhuo 2009-04-16  
这不是他山之石可以攻玉的问题,而是没有独立研究精神的问题。独立研究不等于蒙头做事,你这是在偷换概念。

如果你觉得这就是你的方法,你自然可以继续下去。毕竟与我无干。
17 楼 linliangyi2007 2009-04-16  
throne212 写道
估计楼主没接触过GWT,那个是Google推出的GWT技术,与GAE没有直接的联系,看一哈GWT的手册就明白了。


确实不懂,新兴技术太多了,工作也很忙!
16 楼 linliangyi2007 2009-04-16  
Saito 写道
具体可参考我的Blog . 


           实际上按照我的理解. 是<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>这样的. . Java代码并不是在运行时compile成js的.如果真是那样的话. 那就无敌了. 因为compile是非常费时的. gwt这点也被大家所诟病. 实际上. 在我们的项目目录下面 有一个 war包. war包里面就存着所有的gwt代我们生成的js/html文件.Ajax则是通过RPC来实现的.  而前后的banding工作. 则是通过html的tag id 实现的 .. 在Java代码里banding html的id 来达到织入js的目的. 原始的html则是起到了一个布局的作用.


到这里,俺就大体明白GWT的目标和GAE的设计原理了。谢谢各位
15 楼 linliangyi2007 2009-04-16  
yizhuo 写道
发个贴累死我也。

楼主,这是GWT最大的特点,你问的这个问题说明

1. 你不懂GWT
2. 随便google一下就能出来答案的问题,还<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>来这里“说说”,说明没有自己研究问题的精神或能力。

话可能有点重,但看着就是不爽。

靠,竟然不能说球助。。。


兄弟啊,中国有句古话:它山之石可以攻玉。
GWT我从来就没说我懂,在此之前我没听说过,不过,现在就知道了不是?!
多交流,多请教是好事滴。表这么冲动啊

顺便问问,我要如何google,用GAE肯定不对的,要了解GWT,我必须先了解GAE,然后才知道,它用了GWT不是?
我们以前有个团队就是喜欢蒙头做事,很多问题其实只要问别人一下,人家就能给你指出方向,要是自己蒙头干,要绕很多弯路的。我想这也是javaeye存在的意义,避免大家绕弯路。
你跟我说了这个是GWT的功能,那我就知道应该从GWT入手了,而不是在GAE的其他方面打转转。

14 楼 throne212 2009-04-16  
估计楼主没接触过GWT,那个是Google推出的GWT技术,与GAE没有直接的联系,看一哈GWT的手册就明白了。
13 楼 Saito 2009-04-16  
具体可参考我的Blog . 


           实际上按照我的理解. 是这样的. . Java代码并不是在运行时compile成js的.如果真是那样的话. 那就无敌了. 因为compile是非常费时的. gwt这点也被大家所诟病. 实际上. 在我们的项目目录下面 有一个 war包. war包里面就存着所有的gwt代我们生成的js/html文件.Ajax则是通过RPC来实现的.  而前后的banding工作. 则是通过html的tag id 实现的 .. 在Java代码里banding html的id 来达到织入js的目的. 原始的html则是起到了一个布局的作用.
12 楼 yizhuo 2009-04-15  
点错,竟然投票了。。。
11 楼 yizhuo 2009-04-15  
发个贴累死我也。

楼主,这是GWT最大的特点,你问的这个问题说明

1. 你不懂GWT
2. 随便google一下就能出来答案的问题,还来这里“说说”,说明没有自己研究问题的精神或能力。

话可能有点重,但看着就是不爽。

靠,竟然不能说球助。。。
10 楼 linliangyi2007 2009-04-15  
guooscar 写道
GWT自带一个编译器,可以将符合GWT规范的部分代码编译成javascript

运行时生成javascript的可以看看ECHO2


问题越来越清晰咯
9 楼 guooscar 2009-04-14  
GWT自带一个编译器,可以将符合GWT规范的部分代码编译成javascript

运行时生成javascript的可以看看ECHO2
8 楼 linliangyi2007 2009-04-14  
lemanli 写道
linliangyi2007 写道

再问lemanli兄一个问题,GWT是在什么时候将java代码翻译成js的?包括事件响应的handler,应该是在页面生成的时候就翻译了吧?

如果是在响应请求时才翻译,就比较诡异了(想不通),呵呵!

应该是在响应请求时才翻译,因为GWT有自己的一堆的小类库,所以效率问题总比在客户端翻译强
具体不是很清楚,但是估计就是利用filter或interceptor的时候,也就是最终形成了一个页面返回流的过程


但如果是响应请求时才翻译,那我提交请求之前的页面控件间的控制逻辑(这部分应该是写在handler上的,如:disable页面上的某个输入框)不是没法执行,因为要等请求到达服务端是,handler才解析?!而且我要提交哪些数据,服务端又怎么知道呢?要是服务端要求的数据,我没有提交,不是没得处理了!
7 楼 lemanli 2009-04-14  
linliangyi2007 写道

再问lemanli兄一个问题,GWT是在什么时候将java代码翻译成js的?包括事件响应的handler,应该是在页面生成的时候就翻译了吧?

如果是在响应请求时才翻译,就比较诡异了(想不通),呵呵!

应该是在响应请求时才翻译,因为GWT有自己的一堆的小类库,所以效率问题总比在客户端翻译强
具体不是很清楚,但是估计就是利用filter或interceptor的时候,也就是最终形成了一个页面返回流的过程
6 楼 linliangyi2007 2009-04-14  
再问lemanli兄一个问题,GWT是在什么时候将java代码翻译成js的?包括事件响应的handler,应该是在页面生成的时候就翻译了吧?

如果是在响应请求时才翻译,就比较诡异了(想不通),呵呵!
5 楼 linliangyi2007 2009-04-14  
lemanli 写道
[align=left][/align]
呵呵,GWT就是利用ajax和服务器生成的js脚本到前端,用java的方式去写js脚本这点是gwt最核心的思想,因为js脚本的种种弊端,而导致程序员很难习惯


3Q,这个回答的很到位,
4 楼 lemanli 2009-04-14  
[align=left][/align]
呵呵,GWT就是利用ajax和服务器生成的js脚本到前端,用java的方式去写js脚本这点是gwt最核心的思想,因为js脚本的种种弊端,而导致程序员很难习惯

相关推荐

    基于GAE的Demo

    【基于GAE的Demo】是一个使用Eclipse集成开发环境构建的项目,主要展示了如何在Google App Engine(GAE)平台上整合Struts2、Spring和Tiles框架。GAE是Google提供的一个云计算平台,允许开发者在Google的基础设施上...

    GAE使用规则

    GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则

    GAE之webapp框架

    ### GAE之webapp框架详解 #### 一、引言 在Google App Engine (GAE) 平台上进行Web应用开发时,选择合适的框架对于提高开发效率至关重要。其中,`webapp` 框架因其简洁高效而备受开发者青睐。本篇文章将详细介绍`...

    gae-pytorch-master_pytorch_pytorchgae_GAE_自编码器_gaepytorchmaster_

    【标题】"gae-pytorch-master_pytorch_pytorchgae_GAE_自编码器_gaepytorchmaster_" 提供的信息表明,这是一个使用PyTorch实现的图自编码器(Graph Autoencoder, GAE)项目,其核心是将自编码器的概念应用于图数据。...

    gae_in_pytorch-master_GAE_

    **图形自动编码器(GAE)在PyTorch中的实现** **一、GAE概述** 图形自动编码器(Graph ...通过这个项目,你可以深入理解GAE的原理,掌握图神经网络在图结构学习中的应用,并且能够针对具体任务进行模型的调整和优化。

    GAE入门教程

    pass之GAE入门教程, 学习GAE

    gtap,基于GAE的代理

    标题中的“gtap,基于GAE的代理”指的是一个名为GTAProxy的项目,它是一个构建在Google App Engine(GAE)平台上的代理服务。这个服务的主要目的是为用户提供访问Twitter API的能力,尤其在某些地区或者特定网络环境...

    spring+gae

    【标题】"Spring+GAE"揭示了将Google App Engine(GAE)与Spring框架集成的主题,这是一个在云端运行Java应用程序的关键技术组合。Spring是一个广泛使用的开源Java框架,提供了依赖注入、面向切面编程和MVC(模型-...

    GAE read rss send to 腾讯微博

    标题“GAE read rss send to 腾讯...总的来说,这个项目结合了Web服务交互、RSS解析、API调用以及GAE的特性,为自动发布RSS内容提供了一种解决方案。对于想学习如何构建类似工具的开发者来说,这是一个很好的实践案例。

    GAE包(以配置好,解压可用)

    标题 "GAE包(以配置好,解压可用)" 提供的信息表明,这是一个已经预配置好的Google App Engine (GAE)开发环境的压缩包。GAE是Google提供的一项平台即服务(PaaS),允许开发者在Google的基础设施上运行自己的Web...

    GAE blog安装

    标题“GAE blog安装”指的是在Google App Engine (GAE)上部署一个博客应用的过程。GAE是一个由Google提供的平台即服务(PaaS)云环境,允许开发者构建、运行和维护Web应用程序,无需管理和维护底层基础设施。在这个...

    GAE和SAE的比较

    云计算下的PaaS中的GAE和SAE平台

    GAE编程指南

    《GAE编程指南》是一种云计算服务,跟其他的同类产品不同,它提供了一种简单的应用程序构建模型,通过这种模型,你可以轻松地构建出能够容纳数百万用户的应用程序。《GAE编程指南》是介绍使用这个强大平台的专家级...

    让gae支持php的方法

    在Google App Engine(GAE)平台上,虽然原生支持的语言是Java和Python,但通过一些技术手段,我们确实可以实现对PHP的支持。...这个过程需要对Java和GAE有一定的了解,同时也展示了跨平台和语言兼容性的技术魅力。

    关于GAE的教程、工具与文档(建站)

    总的来说,GAE为开发者提供了一个强大的平台,用于快速构建可伸缩的Web应用。通过深入学习和实践上述知识点,你可以充分利用GAE的优势,创建出高质量的网站和服务。在压缩包文件中,可能包含的资源有GAE的官方文档、...

    GAE上可以用的JAVA 博客源代码

    GAE上可以用的JAVA Blog源代码 可以在GAE上直接使用,支持图片上传等。 源代码是修改其他网友的普通blog程序而来,只做了必要的修改,原结构保留 最新版本请去主页下载 http://redpower1998.appspot.com 主页包括...

    gae编程指南

    《GAE编程指南》是一种云计算服务,跟其他的同类产品不同,它提供了一种简单的应用程序构建模型,通过这种模型,你可以轻松地构建出能够容纳数百万用户的应用程序。《GAE编程指南》是介绍使用这个强大平台的专家级...

    GAE Struts2配置

    标题中的“GAE Struts2配置”指的是在...综上所述,配置GAE上的Struts2需要对GAE的限制、Struts2的工作原理以及如何在两者之间建立桥梁有深入理解。通过正确配置和调整,你可以在GAE上构建出高效、可靠的Struts2应用。

    EGL扩展GAE示例代码

    3. **语言层面的扩展**:EGL可能增加了对GAE特性的语法支持,比如直接在EGL代码中调用GAE的API,简化了与GAE服务的交互。 4. **数据存储**:EGL可能封装了GAE的NoSQL Datastore服务,使开发者能够使用EGL方便地操作...

Global site tag (gtag.js) - Google Analytics