Webx 入门

Webx Turbine处理请求:

当一个HTTP请求到达时,首先由WebxFrameworkFilter接手这个请求,下图是WebxFrameworkFilter处理一个WEB请求的过程:

如图所示,WebxFrameworkFilter接到请求以后,就会调用WebxRootController。从这里开始,进入Spring的世界 —— 此后所有的对象:WebxRootController、WebxController、RequestContext、Pipeline等,全部是通过SpringExt配置在Spring Context中的。

WebxRootController对象存在于root context中,它被所有子应用所共享。它会创建RequestContext实例 —— 从而增强request、response、session的功能。接下来,WebxController对象会被调用。

WebxController对象是由每个子应用独享的,子应用app1和app2可以有不同的WebxController实现。默认的实现,会调用pipeline。

Pipeline也是由各子应用自己来配置的。假如pipeline碰到无法处理的请求,如静态页面、图片等,pipeline应当执行<exit/> valve强制退出。然后WebxRootController就会“放弃控制” —— 这意味着request将被返还给/WEB-INF/web.xml中定义的servlet、filter或者返还给servlet engine本身来处理。

Webx框架会自动搜索/WEB-INF目录下的XML配置文件,并创建下面这种级联的spring容器。

框架会将一个WEB应用分解成至少一个应用模块(子容器),如app1、app2。每个小应用模块独享一个Spring Sub Context子容器,且子容器之间的beans无法互相注入。所有小应用模块共享一个Spring Root Context根容器。根容器中的bean可被注入到子容器的bean中,反之不可以。

假设请求这样一个地址:http://localhost:8081/simple/count.htm?to=10,处理流程如下:

1)找到Context Path(simple)和Servlet Path(count.do),web.xml中配置的Webx Controller Servlet接管了该请求;————

2)Webx Controller Servlet激活pipeline;

3)<analyzeURL />节点:分析URL,webx默认把/*.htm转换成/*.vm,得到取得target(simple/count.vm);

4)<performAction />节点:到webx-*.xml配置的包扫描路径(services:module-loader节点)下查找类xxx.action.Count,处理表单;

5)<performTemplateScreen />节点:根据target查找screen模板类(xxx.screen.simple.Count 或 xxx.screen.simple.Default),并执行对应的的execute方法;

6)<renderTemplate>节点:根据target查找screen模板(/templates/screen/simple/count.vm)后渲染,然后试着查找layout模板(/templates/layout/simple/count.vm 或 /templates/layout/simple/default.vm 或 /templates/layout/default.vm),找不到就直接渲染screen模板,否则Layout模块会调用适当的Screen模块,并自动从Screen模块返回的代码替换进$screen_placeholder里。

ps:Layout模板和screen模板中,都可以调用control。每个页面只有一个screen,但是可以有任意多个controls。

 

创建webx测试工程:

1、Eclipse创建maven工程,选择maven-archetype-webapp这个artifactId;

2、修改web.xml;

3、修改pom.xml;

3、创建一个子应用:

1)在src/main/java目录下创建com.webx.test.module包,module用来接受页面数据和渲染页面;

2)创建webapp/webx_test/templates文件夹,用来存放页面的模板vm文件;

3)创建文件子应用test的webx配置: webapp/WEB-INF/webx-test.xml,;

4)创建表单验证的配置文件:webapp/WEB-INF/webx_test/form.xml;

5)在webapp/webx_test/templates文件夹下创建三个目录:control(主要存放页面上的公共按钮模板)、layout(主要存放页面的布局模板)、screen(主要存放页面的主体内容模板)

 

转载于:https://my.oschina.net/codingDog/blog/757337

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值