前面发布的概览有点冗杂,不够直观,所以这次来点感性的吧。还是老习惯,先写个“ Hello World” 。完成这类任务只需要编写两个文件,无需任何配置。
先来写服务类,下面的代码实在是太平淡无奇了,几乎不需要解释。
package com.xt.gt.demo.service;
import com.xt.core.service.IService;
public class HelloService implements IService {
public HelloService() {
}
public void sayHello(String name) {
System.out.println("Hello:" + name);
}
}
所有服务都需要实现“ IService” 接口,这是一个声明接口,不需要实现其任何方法。
下面来画界面。如果你喜欢用 DreamWeaver, 没问题!我画界面多数用 Notepad++ ,偶尔用 Kompozer ,都是免费的!
<html><head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>Hello World</title>
<script type="text/javascript" src="../js/boot.js"></script>
<script>
// 动态加载 CSS 文件
Loader.importCSS();
// 动态加载 JS 文件
Loader.importJS();
</script>
</head>
<body>
您的名字 : <input id="name" value="World" />
<input type='button' value=" 提交 " οnclick='sayHello()' />
</body>
<script>
function sayHello() {
var helloService = ServiceFactory.getService('com.xt.gt.demo.service.HelloService');
var name = jQuery('#name').val(); // 读取输入域的值
helloService.sayHello(name);
}
</script>
</html>
需要关注的是两行代码:
第一行: var helloService = ServiceFactory.getService('com.xt.gt.demo.service.HelloService');
相当于实例化一个服务类的实例 ; 类名可以使用简写方式,后续文章中再介绍。
最后一行: helloService.sayHello(name); 调用服务器端的“ sayHello” 方法。
你查看一下输出控制台,应该已经有“ Hello:World” 输出了。
我想你应该已经从中看出端倪,这样写代码是不是很简单呢? HTML 页面是不是更容易维护呢?服务类是不是更容易测试和复用?动态和静态,表现层和业务逻辑层是不是截然分开呢?如果我重新设计一个 Swing 客户端或者 Flex 客户端,服务类是不是就可以不必重写了?网络传输量是不是很小了?
当然,这种方式不能满足所有的需求! Perl 有个哲学,易者易为之,难者可为之。我们不能因为 10% 的特殊性,让 90% 的常用操作都增加复杂性。
演示文件可从此处下载 。