论坛首页 入门技术论坛

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

浏览 9416 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-04-09   最后修改:2009-04-09
昨天下了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端获取呢?难道是全部嘛?

请熟悉这块技术的兄弟牛人们说说看,给点思路也行啊!
   发表时间:2009-04-09  
它那个demo是GWT,你看GWT的文档就可以了,是用Java生成HTML/Javascript
0 请登录后投票
   发表时间:2009-04-09  
QuakeWang 写道
它那个demo是GWT,你看GWT的文档就可以了,是用Java生成HTML/Javascript


感谢指路

更希望有兄弟能简明的说说GWT的设计思路 (以便看的时候更好理解一些)
0 请登录后投票
   发表时间:2009-04-09  
引用
那么GAE是如何将后端的java handler中的逻辑绑定到前台呢?(难道将hanlder中的java代码转译成前台的js?)


事实上差不多就是这么干的...
0 请登录后投票
   发表时间:2009-04-14  
[align=left][/align]
呵呵,GWT就是利用ajax和服务器生成的js脚本到前端,用java的方式去写js脚本这点是gwt最核心的思想,因为js脚本的种种弊端,而导致程序员很难习惯
0 请登录后投票
   发表时间:2009-04-14  
lemanli 写道
[align=left][/align]
呵呵,GWT就是利用ajax和服务器生成的js脚本到前端,用java的方式去写js脚本这点是gwt最核心的思想,因为js脚本的种种弊端,而导致程序员很难习惯


3Q,这个回答的很到位,
0 请登录后投票
   发表时间:2009-04-14   最后修改:2009-04-14
再问lemanli兄一个问题,GWT是在什么时候将java代码翻译成js的?包括事件响应的handler,应该是在页面生成的时候就翻译了吧?

如果是在响应请求时才翻译,就比较诡异了(想不通),呵呵!
0 请登录后投票
   发表时间:2009-04-14  
linliangyi2007 写道

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

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

应该是在响应请求时才翻译,因为GWT有自己的一堆的小类库,所以效率问题总比在客户端翻译强
具体不是很清楚,但是估计就是利用filter或interceptor的时候,也就是最终形成了一个页面返回流的过程
0 请登录后投票
   发表时间:2009-04-14  
lemanli 写道
linliangyi2007 写道

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

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

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


但如果是响应请求时才翻译,那我提交请求之前的页面控件间的控制逻辑(这部分应该是写在handler上的,如:disable页面上的某个输入框)不是没法执行,因为要等请求到达服务端是,handler才解析?!而且我要提交哪些数据,服务端又怎么知道呢?要是服务端要求的数据,我没有提交,不是没得处理了!
0 请登录后投票
   发表时间:2009-04-14  
GWT自带一个编译器,可以将符合GWT规范的部分代码编译成javascript

运行时生成javascript的可以看看ECHO2
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics