从这篇博文开始,我将针对基于Cosmos框架的开发进行详细的介绍,那么第一个例子就将着重来说明如何在Cosmos框架的基础上进行项目的开发和部署。
在进行例子的讲解之前,自然是要部署相应的开发环境、测试环境,为了尽快地了解Cosmos框架的全貌,我们将基于Cosmos自带的Example程序进行开发,这个Example程序已经将开发环境和测试环境设置完全了,同时,由于这个Example程序是基于HSQLDB开发的,因此,使用这个Example程序学习,仅需要安装JDK、Tomcat环境即可。下面首先说明如何安装Cosmos的Example程序。
首先去Cosmos项目的网站下载最新版的Cosmos-Example程序,下载地址是:http://code.google.com/p/cosmos4j/downloads/list,在撰写本文时,Cosmos-Example发布的最新版是1.0.2,因此,下载最新版,如下图所示。

Cosmos-Example是一个打好的WAR包,因此,下载下来之后,只需要将这个war包放置到Tomcat的webapps下即可。如下图所示:

启动Tomcat访问http://localhost:8080/cosmos-example-1.0.2/index.jsp,如果看到以下界面,则表示样例程序安装成功了:

下面就开始基于样例程序进行第一个例子的开发,我们的第一个例子程序将从Cosmos框架自带的一个Vocabulary表中查出所有的数据,并显示到界面中去。下面开始这个例子的开发流程:
在打开的Cosmos网站界面中点击左侧菜单-系统域全局命令,在这个菜单下面可以看到当前Cosmos中配置的数据库域,目前仅配置了一个域,名称为jndi,点击这个域名,打开如下的界面:

点击右侧面板中的创建命令按钮,打开新建命令的对话框,如下图所示:

在上述对话框中,填入命令名称为:vocabulary,命令内容为以下这样的SQL语句:
SELECT * FROM TB_COM_VOCABULARY这条SQL中的表名TB_COM_VOCABULARY为Cosmos框架中的一个字典表,表中存着各种国家、地区等数据,为了开发人员方便而建立的。
然后点击提交按钮,命令创建完成。要确认这条命令是否确认创建成功了,只需要在主界面上的这个列表里点击下一页翻页,即可看到刚刚创建好的命令,如下图所示:

点击新创建的命令名称,可以看到刚刚建好的vocabulary命令的详细信息,如下图所示:

经过上面的这几个步骤,一条新的命令vocabulary就已经创建成功了,下面就可以开始为这条命令建立JSP的展示页面,首先到tomcat安装目录里的webapps下,找到Tomcat释放出来的cosmos-example-1.0.2的文件夹,这个文件夹里,有一个test目录,进入test目录,如下图所示:

为了管理方便,我们暂时将我们开发的JSP文件放置到这个test目录里面来,在这个目录下,新建一个vocabulary.jsp文件,如下图所示:

使用记事本之类的文本编辑工具,在vocabulary.jsp文件中键入以下代码,并保存:
1

<%
@ page pageEncoding="UTF-8"language="java"contentType="text/html;charset=UTF-8"%><%
@ include file="/include.inc.jsp"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2
<htmlxmlns="http://www.w3.org/1999/xhtml">3
<head>4
<title>测试Vocabulary</title>5
<metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"/>6
<metahttp-equiv="X-UA-Compatible"content="IE=EmulateIE7"/>7
<linkhref="styles/default/css/main.css"rel="stylesheet"type="text/css"/>8
<scripttype="text/javascript"src="styles/default/scripts/main.js"></script>9
</head>10

11
<bodyonresize="fixSubHeight();"onload="fixSubHeight();">12
<iframeid="hiddenFrame"name="hiddenFrame"style="display:none;"></iframe>13
<divid="listContent">14
<h1><span>结果集列表</span></h1>15
<divid="top"class="toolBar">16
<divclass="left">17
</div>18
<divclass="right">19
</div>20
</div>21
<divid="tab"align="center">22
<tableclass="defaultList">23
<tr>24
<thscope="col">字典编号</th>25
<thscope="col">字典名称</th>26
</tr><c:forEachitems="${present:commandFirstList('jndi', 'vocabulary', result)}"var="vocabulary">27
<tronclick="selectRow(this);">28
<td>${vocabulary.id}</td>29
<td>${vocabulary.name}</td>30
</tr></c:forEach>31
</table>32
</div>33
<divid="bottom"class="toolBar">34
<divclass="left">35
</div>36
<divclass="right">37
</div>38
</div>39
</div>40
</body>41
</html>42

好了,到此为止,我们的开发已经完成了,那么,到底该怎么测试我们刚刚开发的这个页面呢?方法很简单,在浏览器中键入以下链接即可:
其中的几个参数分别代表的意思是:forward=test.vocabulary表示执行命令完成之后,跳转到test/vocabulary.jsp页面,domain=jndi表示要执行的命令是位于jndi域的,method=vocabulary表示要执行vocabulary命令。如果得到以下这样的界面,表示我们第一个样例程序已经开发完成了。
