商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

整合Java 6 脚本、Groovy实现动态MVC模式(一)



    【IT168 专稿】
一个有弹性的和动态的开发环境正在受到前所未有的关注,甚至连脚本语言也显现出这方面的特性,这也正是我们所需要的,也就是说,我们永远需要建立易维护,并且可满足我们需求的应用程序。如果我们要想使用脚本语言参与进来,我想我们应该考虑一下Java SE 6所提供的一个新的脚本API:一个与语言无关的允许开发人员在Java代码中使用脚本语言的框架。使用这套新API,我们不仅可以利用脚本语言的特性,而且还能使用很多和Java相关器工具。

    在本文中,我们提供了一个实例,这个实例将尽可能体现这套API的特性。并且使用这套API实现一个基于Model View Controller(MVC)模式的Web应用程序,这个程序同时还使用了Groovy框架(一个基于Java平台的动态脚本语言,Groovy负责实现商业逻辑,也就是MVC中的M层)。并且使用了不同的技术来实现MVC中的View层。对于控制层(Controller)层来说,我们使用WebLEAF,这是一个用于开发基于MVC模式的Web程序的开源框架。为了使这个例子更容易部署和运行,我们使用了一个基于Java的数据库:HSQLDB,这个数据库允许的们只通过两个文本文件来创建一个简单的数据库。为了实现可以产生HTML用户接口的view层,在本文中我们采用了XSLT技术,这是一种可以将XML文档转换成另外一种形式的语言,同时还使用了FreeMarker,这是一个流行的处理XML的模板引擎,如它可以使XML作为输入数据变得很容易。

    在本文的例子中我们将首先开发一个web页,它将显示数据库的不同项,并允许我们选择一个,以便我们可以查看某项的详细信息。虽然这个程序很简单,但它足以清楚地表述本文要讲的内容了。
 
一、进行准备工作
 
    第一步是建立健全个基本的标准Web应用程序结构,并且将最新的WebLEAF 3.x库加进来,这个版本可以非常好地支持新的Java脚本API,我们可按如下的五步进行:

1. 首先建立一个叫Test的目录。
2. 然后在Test目录中建立一个WEB-INF目录。
3. 在WEB-INF目录中建立两个目录:lib和classes。
4. 将开载的WebLEAF3.jar文件放到Test\WEB-INF\lib中。
5. 然后在Test\WEB-INF中建立一个标准化sevlet描述文件web.xml,它的内容如下:
<?xml version="1.0"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> <web-app> <!-- WebLEAF controller servlet configuration --> <servlet> <servlet-name>WebLEAFController</servlet-name> <servlet-class>org.leaf.LEAFManager</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <!-- End controller servlet --> </web-app>
    这个配置文件告诉Servlet容器实例化一个WebLEAF控制Servlet,并当Context开始时启动它。在这里我们要注意一个<load-on-startup>的值是2,一会我们要解释一下这个值为什么不是1,而是2。
 
    最后,我们需要在WEB-INF中建立一个WebLEAF配置文件test.leaf.conf,内容如下:

<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE WADSET SYSTEM "http://www.uib.es/leaf/LEAFwad.dtd"> <WADSET> <WAD NAME="Test" INIT_MODE="INITS_ON_START_UP" XML_ALLOW_SHOW="TRUE" XSLT_NO_CACHE="TRUE" > </WAD> </WADSET>
    虽然上面的配置文件只是最小化配置,但它对于本文的例子已经足够了。

1 2 3
【内容导航】
第1页: 进行准备工作 第2页: 建立数据库
第3页: 使用Groovy实现商业逻辑
©版权所有。未经许可,不得转载。
[责任编辑:李宁]