创建简单的WEBX应用Word格式.docx
- 文档编号:18852246
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:84
- 大小:586.36KB
创建简单的WEBX应用Word格式.docx
《创建简单的WEBX应用Word格式.docx》由会员分享,可在线阅读,更多相关《创建简单的WEBX应用Word格式.docx(84页珍藏版)》请在冰豆网上搜索。
这个文件指出了项目的名称、依赖哪些jar包等信息。
<
?
xmlversion="
1.0"
encoding="
GB2312"
>
projectid="
workshop/webapp-2"
<
build>
dependencies>
includeuri="
toolkit/webx/turbine"
version="
2.0"
/>
/dependencies>
/build>
/project>
第二个要修改的文件是:
project.jelly。
这个文件指出了该项目默认build成一个WAR包。
projectdefault="
war"
改完这两个文件以后,就可以生成eclipse项目了。
请在项目目录下执行:
antxeclipse
这样便生成了.classpath和.project这两个eclipse相关的文件。
请打开Eclipse并导入这个项目。
至此,你就可以在eclipse下开发项目了。
3.创建第一个Webx应用
3.1.创建、布署、运行
利用Webx框架来创建WEB应用,是一件比较简单的事情。
下面,我们将创建一个在屏幕上显示HelloWorld的Webx应用。
与其说“创建”不如说“配置”,因为显示HelloWorld页面,并不需要写一行程序。
3.1.1.创建web.xml
首先,请修改src/descriptors/web目录下的web.xml文件:
!
DOCTYPEweb-appPUBLIC"
-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"
"
web-app>
servlet>
servlet-name>
WebxController<
/servlet-name>
servlet-class>
com.alibaba.webx.WebxControllerServlet<
/servlet-class>
init-param>
param-name>
initAllServices<
/param-name>
param-value>
true<
/param-value>
/init-param>
/servlet>
servlet-mapping>
url-pattern>
*.htm<
/url-pattern>
/servlet-mapping>
*.do<
/web-app>
这个web.xml中定义了一个被称为Webxcontroller的servlet,并把它映射到*.htm和*.do两个URL中。
WebxControllerServlet的定义中,包含一个initAllServices参数。
将initAllServices设置成true,会让webx在启动时就初始化所有的services,以便及早发现初始化异常。
3.1.2.创建log4j.xml
虽然不是必须的,但是我还是建议你配置一下日志系统。
妥善地配置好日志系统,有助于你在将来的开发、调试中发现错误。
请在src/webroot/WEB-INF/目录下,创建一个log4j.xml,内容如下:
DOCTYPElog4j:
configurationSYSTEM"
http:
//toolkit.alibaba-
log4j:
configurationxmlns:
log4j="
//jakarta.apache.org/log4j/"
--=====================================================================-->
--以下是appender的定义-->
appendername="
WORKSHOP"
class="
org.apache.log4j.FileAppender"
paramname="
file"
value="
${loggingRoot}/${localHost}/workshop.log"
append"
false"
encoding"
layoutclass="
org.apache.log4j.PatternLayout"
ConversionPattern"
%d[%X{requestURIWithQueryString}]%-5p%c{2}-%m%n"
/layout>
/appender>
WORKSHOP-ERROR"
org.apache.log4j.ConsoleAppender"
target"
System.err"
threshold"
warn"
RESOURCE"
${loggingRoot}/${localHost}/workshop-resource.log"
FILTER"
${loggingRoot}/${localHost}/workshop-filter.log"
true"
%d%-5p%c{2}-%m%n"
APACHE"
${loggingRoot}/${localHost}/workshop-apache.log"
VELOCITY"
${loggingRoot}/${localHost}/workshop-velocity.log"
GBK"
--以下是logger的定义-->
loggername="
com.alibaba.webx.filter"
additivity="
levelvalue="
WARN"
appender-refref="
/logger>
com.alibaba.service.VelocityService"
com.alibaba.service.resource"
DEBUG"
com.alibaba.service.ResourceLoaderService"
mons.beanutils"
error"
mons.digester"
org.apache"
--Rootlogger的定义-->
root>
/root>
/log4j:
configuration>
这个配置文件有点长——但你完全可以按照你的意愿来自由地修改这个文件。
配置的方法请参见Log4j的文档。
3.1.3.创建webx.xml
每个webx应用,都需要有一个webx.xml配置文件。
这个文件定义了Webx所用到的所有services的配置。
请在src/webroot/WEB-INF/目录下创建webx.xml:
DOCTYPEconfigurationPUBLIC"
-//ALIBABA//DTDServicesConfigurationV1.0//EN"
services>
servicename="
PipelineService"
propertyname="
pipeline.default.descriptor"
/WEB-INF/pipeline.xml"
/service>
/services>
/configuration>
在这个文件中,目前只配置了一个Service——PipelineService(管道服务)。
PipelineService是Webx的核心服务,提供了webx请求执行的流程。
3.1.4.创建pipeline.xml
接下来,让我们创建/WEB-INF/pipeline.xml管道配置文件。
pipeline>
valveclass="
com.alibaba.service.pipeline.TryCatchFinallyValve"
try>
com.alibaba.turbine.pipeline.SetLoggingContextValve"
com.alibaba.turbine.pipeline.SetLocaleValve"
defaultLocale="
zh_CN"
defaultCharset="
com.alibaba.turbine.pipeline.AnalyzeURLValve"
com.alibaba.turbine.pipeline.ChooseValve"
label="
processModule"
whenextension="
jsp,vm"
com.alibaba.turbine.pipeline.PerformActionValve"
actionParam="
action"
com.alibaba.turbine.pipeline.PerformScreenTemplateValve"
/when>
do"
com.alibaba.turbine.pipeline.PerformScreenValve"
/valve>
com.alibaba.turbine.pipeline.RedirectTargetValve"
goto="
/try>
catch>
valvetarget="
error.vm"
com.alibaba.turbine.pipeline.SetErrorPageValve"
/catch>
finally>
action="
cleanup"
/finally>
/pipeline>
这个文件的意思过会再解释。
让我们先创建一个页面。
3.1.5.创建页面模板
请在src/webroot目录下,创建如下子目录:
src/webroot
└─templates
├─control
├─layout
└─screen
然后在templates/screen目录下,创建一个hello.vm如下:
html>
head>
title>
Hello!
/title>
/head>
body>
p>
你好,世界!
/p>
现在时间:
$date<
/body>
/html>
3.1.6.布署、运行
至此,所有的文件和目录都已经创建好了。
我们可以对它打包和发布,请在workshop-2目录下执行下列命令:
antx
antxexpandtarget\workshop-webapp-2.war\tomcat\webapps\workshop
其中\tomcat为你安装tomcat的目录。
启动tomcat,打开浏览器看一下效果:
这个页面是不是有问题?
是的,这里显示的当前时间为$date。
先别急,我们会稍后解决这个问题。
3.2.审视Webx应用的结构
这是一个简单的应用。
由于它是基于标准的JavaEEWeb应用规范,因此它的目录结构也没有什么特殊的地方:
├─templates
│├─control
│├─layout
│└─screen
│hello.vm
└─WEB-INF
│log4j.xml
│pipeline.xml
│webx.xml
├─classes
└─lib
*.jar
通常我们会把所有配置文件都放在WEB-INF目录下。
除了标准的web.xml以外,我们增加了webx.xml、pipeline.xml和log4j.xml等几个文件。
随着应用变得复杂,我们后面还会创建少量新的配置文件。
通常我们总是把模板放在templates目录下,不过只要你喜欢,你完全可以改成其它的目录名。
Vm后缀的为Velocity的模板,jsp后缀的为JSP模板,ftl后缀的为Freemarker模板。
3.3.Webx执行的流程
当你在浏览器里敲入http:
//localhost:
8080/workshop/hello.htm时,在Webx中发生了哪些事呢?
很简单,首先,根据web.xml中的映射,*.htm被映射到WebxControllerServlet。
因此WebxControllerServlet会被激活来处理这个请求。
而WebxControllerServlet只做了一件事,就是:
执行pipeline。
所谓pipeline,即管道,它是由一个或多个“阀门Valve”构成的。
我们可以想象,水从管道的一头流入,从管道另一头流出,其中经过很多个阀门。
事实上,阀门可以控制水流的方向、甚至改变水分子的组成结构。
这真是一个不寻常的管道。
管道是由PipelineService来创建并管理的。
在上面的例子中,PipelineService读取/WEB-INF/pipeline.xml来创建管道。
在请求被处理的过程中,这个管道做了哪些事呢?
让我们逐个简介一下。
3.3.1.TryCatchFinallyValve
……<
这个阀门类似于Java中的try-catch-finally结构。
它将整个管道分成了三个分支:
try分支、catch分支、finally分支。
1.首先,try分支会被执行。
2.在执行过程中,如果发生异常,就会转入到catch分支。
通常可以在这里做错误处理的工作。
3.无论发生异常与否,finally分支都会被执行。
通常可以在这里做一些扫尾工作。
3.3.2.SetLoggingContextValve
tr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 创建 简单 WEBX 应用