一、webx的特色:
1.
页面驱动
•
先建模板、再建程序
•
模板中“按需”取得工具对象(
pull tools
)
2.
约定胜于配置
•
基于规则展示页面
•
screen/layout/control
二、基本目录结构
二、基本目录结构
三、页面布局
四、Turbine风格的目录结构
1、分为四种类型 Module : control 、 layout 、 screen 和 action2、实际 应用 中,大部分的页面都是由两部分构成: 模板 和 Java 模块:
五、一个简单的页面、
5.1、
1. 用户输入 URL :
http:// localhost:8081/index.htm2. 分析 URL 取得 target :
/index.vm3. 根据 target 查找 screen 模板:
/ screen/index.vm4. 根据 target 查找 screen 模块的类:
xxx.module.screen.Index (如果没有找到该类)xxx.module.screen.Default(如果没有找到该类)
-- 如果还是没有找到就按默认类渲染页面
5. 执行 screen 类,并渲染 screen 模板6. 根据 target 查找 layout 模板:
/ layout/index.vm (找不到)
/layout/default.vm (找到)7. 渲染 layout 模板8. 渲染在 layout 模板中引用 的一个 control :
menu.vm à 查找并渲染 /control/menu.vm ( control 可以有对应的类)
§ Modules 是基本编程模块:• Screen —— 用来处理页面显示逻辑的 module• Control —— 和 screen 类似,但可以被别的 screen 或 layout 引用 ,• Action —— 处理用户提交表单的 module§ 所有 module 都是一些普通的类:public class Module {
publicvoid execute(Context context);
}
需要有一个public void execute()方法
5.2、如何找到这些类的?
webx-sample.xml
<!-- 装载模块。 -->
<services:module-loader>
<ml-factories:class-modules>
<ml-factories:search-packagestype="$1"
packages="org.dueam.sample.sample.module.*" />
</ml-factories:class-modules>
</services:module-loader>
5.3、访问无 模板的screen
假设有下面的 URL (注意后缀):• http:// localhost:8080/index .do那么 WebX 将不会 查找 index.vm 这个模板,而是直接执行 screen :• xxx.module.screen.Index什么时候要使用这种 URL 呢?• 不使用模板的情形 —— 模板只是一种文本生成技术,除此之外,还有其它技术。在某些情形下,使用模板不一定是最好的方法。• 不需要返回可见的页面的情形 —— 例如一个被机器回调的 URL 。• 重定向到另一个页面的情形 —— 有时一个页面自身不显示内容,而是重定向(内部 / 外部)到另一个页面。例如:支付宝的商家工具。
TTasdasdhasdjhsadrbine风格的目录结构urTTurbine风格的目录结构urbine风格的目录结构TTurbine风格的目录