第 10 章 创建第一个Webx应用

10.1. 准备工作
10.1.1. 安装JDK
10.1.2. 安装和配置maven
10.1.3. 安装集成开发环境
10.2. 创建应用
10.3. 运行应用
10.4. 提问和解答
10.4.1. 在生产环境的应用上,也会出现前述的“开发者首页”吗?
10.4.2. “开发模式”是什么意思?
10.4.3. 所生成的应用中包含了什么?

本章将帮助你快速创建一个可运行的Webx应用。你可以把它作为你的Webx新项目的开端。

10.1. 准备工作

请耐心,准备工作会花掉你少许时间。但是磨刀不误砍柴工,做好准备工作将为你将来的开发节省大量时间。

10.1.1. 安装JDK

Webx需要JDK 5.0以上的版本。请从这里下载并安装它:http://www.oracle.com/technetwork/java/javase/

10.1.2. 安装和配置maven

Webx需要maven 2或更高版本。请从这里下载并安装它:http://maven.apache.org/

[注意]注意

你不需要对maven进行特殊的配置,因为运行Webx应用所需要的所有包都存放在全世界共享的中心Maven仓库(Central Maven Repository)中。Maven将从那里自动获取所有的jar包、源代码和javadoc。

你可以从这里查询到所有和Webx有关的发布包:http://search.maven.org/#search%7Cga%7C1%7Ccom.alibaba.citrus

10.1.3. 安装集成开发环境

很难想像不用集成开发环境(IDE)来帮助开发Java应用会变成怎样。

如果你使用Eclipse(从这里下载:http://www.eclipse.org/),建议安装如下插件:

10.2. 创建应用

请打开命令行工具(Windows cmd或Unix/Linux bash),输入如下命令:

例 10.1. 从archetype创建Webx应用

mvn archetype:generate \
 -DgroupId=com.alibaba.webx \
 -DartifactId=tutorial1 \
 -Dversion=1.0-SNAPSHOT \
 -Dpackage=com.alibaba.webx.tutorial1 \
 -DarchetypeArtifactId=archetype-webx-quickstart \
 -DarchetypeGroupId=com.alibaba.citrus.sample \
 -DarchetypeVersion=1.8 \
 -DinteractiveMode=false

由于Windows下不支持命令换行,请改用非换行版

mvn archetype:generate -DgroupId=com.alibaba.webx -DartifactId=tutorial1 -Dversion=1.0-SNAPSHOT -Dpackage=com.alibaba.webx.tutorial1 -DarchetypeArtifactId=archetype-webx-quickstart -DarchetypeGroupId=com.alibaba.citrus.sample -DarchetypeVersion=1.8 -DinteractiveMode=false

命令执行完后,你会看见一个新目录:tutorial1。它就是我们刚刚创建的新项目。项目的各项参数如下所示:

项目组(groupId):com.alibaba.webx

项目名称(artifactId):tutorial1

项目版本(version):1.0-SNAPSHOT

项目中Java类的包名(package):com.alibaba.webx.tutorial1

[注意]注意

你完全可以根据你的需要来调整上述命令中的参数,改用其它的groupIdartifactIdversion以及package

10.3. 运行应用

进入刚创建的tutorial1目录,在此目录下执行maven命令:

例 10.2. 启动Jetty服务器

mvn jetty:run

这条命令会启动Jetty Server,默认的端口是8081。请在浏览器地址栏输入地址,或直接点击这个链接:http://localhost:8081/。你应该可以看到类似下面的结果:

Webx开发者首页

图 10.1. Webx开发者首页

这是一个“开发者首页”。它不是真正的应用程序首页,而是一个专为开发者准备的首页。这个页面显示了一些诸如Webx版本、Java版本、OS类型、IP地址、内存等信息。

请点击页面顶部的菜单中的Application Home,

这样就可以进入真正的应用程序首页

Webx应用首页

图 10.2. Webx应用首页

10.4. 提问和解答

10.4.1. 在生产环境的应用上,也会出现前述的“开发者首页”吗?

不会的。

事实上,之所以刚才的运行会产生“开发者首页”,是因为在jetty启动时,定义了一个启动参数。请打开pom.xml看一下:

例 10.3. 定义“开发者模式”的启动参数

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    ...
    <build>
        <plugins>
            ...
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <configuration>
                    <webApp>
                        <contextPath>/</contextPath>
                    </webApp>
                    <stopKey>webx</stopKey>
                    <stopKey>9999</stopKey>
                    <connectors>
                        <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                            <port>8081</port>
                            <maxIdleTime>60000</maxIdleTime>
                        </connector>
                    </connectors>
                    <requestLog implementation="org.eclipse.jetty.server.NCSARequestLog">
                        <filename>target/access.log</filename>
                        <retainDays>90</retainDays>
                        <append>false</append>
                        <extended>false</extended>
                        <logTimeZone>GMT+8:00</logTimeZone>
                    </requestLog>
                    <systemProperties>
                        <systemProperty>
                            <name>productionMode</name> 
                            <value>false</value>
                        </systemProperty>
                    </systemProperties>
                </configuration>
            </plugin>
            ...
        </plugins>
    </build>
</project>

设定JVM启动参数:productionMode=false

如果不加特别设置,系统的默认状态是“生产模式”,即productionMode默认为true。因此,生产环境的服务器总是运行在“生产模式”而不是“开发模式”下的。而“开发者首页”只会出现在“开发模式”下面。

你可以用下面的命令来覆盖pom.xml的设置:

例 10.4. 在命令行上指定JVM参数

mvn jetty:run -DproductionMode=true

然后在浏览器地址栏输入地址,或直接点击这个链接:http://localhost:8081/,你将直接被带入应用首页,而不是“开发者首页”。

10.4.2. “开发模式”是什么意思?

开发模式是为了方便应用开发,Webx所提供的额外功能。具体请见:第 3.2.4 节 “开发模式工具”

10.4.3. 所生成的应用中包含了什么?

这个应用程序包含了几个Webx应用的常见元素:

  • 一个欢迎页面(index screen)

  • 一个页面布局(layout)

  • 一个表单验证(form)

  • 一个action,用来处理用户提交的数据

  • Logback日志被打印在屏幕上