Webx学习小结

webx执行的流程
     首先,根据web.xml文件中的映射,*.htm被映射到Webx Controller Servlet,因此Webx Controller Servlet会被激活来处理这个请求,而Webx Controller Servlet制作了一件事,就是执行pipeline.所谓pipeline即管道,它是由一个或多个“阀门valve”构成的。管道是由PipelineService来创建并管理的。

$screen_placeholder--这个标记将被screen的内容所取代。
$control.setTemplate("")--这个标记竟被control的内容所取代,control是一种可重用的页面片段。

查找布局的规则:
     刚才我们创建了default.vm布局。需要强调的是,这个布局不仅仅对hello.vm有效,而且对所有页面都有效。不信的话,你可以在templates/screen目录下创建一个新的screen试试看。不需要重启机器,你就可以看到效果!所有的页面现在都被“框”在这个布局里面了。
     加入我的大部分页面的布局是相同的,但是有一两个页面例外,我该怎么办呢?Wbx的布局规则很灵活,足够应付大部分的场景。假如我的screen模板名字为/xxx/yyy/hello.vm,那么webx将依次查找下面的layout模板:
 1. /xxx/yyy/hello.vm  (如果找不到,尝试下一个)
 2. /xxx/yyy/default.vm  (如果找不到,尝试下一个)
 3. /xxx/default.vm   (如果找不到,尝试下一个)
 4. /default.vm   (如果找不到,尝试下一个)
 5. (如果上面所有都找不到,就显示不带layout的screen)
如果你希望对/hello.vm指定layout,你可以在templates\layout目录下,为其特别创建一个和screen同名的layout模板就可以了。Webx假设同一目录下的模板,在功能上是相关的,因此布局也是相似的。因此你不仅可以在layout根目录下设置default.vm,也可以在各级子目录下设置default.vm。

页面驱动:
 和其他大所属的Web框架不同,Webx是以页面为驱动的。和普通HTML页面不同的是,WebX页面是真正的动态页面。在Velocity中有许多内置的工具,下面是页面中可用的工具:

工具名                         类名                        作用域                                     说明
$arrayUtil                 ArrayUtil                  全局                              静态工具类,参见相应类的API文档。
                                                                                         其中最常用的当属$stringUtil和$stringEscapeUtil。

                                                                                          例如:## 判断字符串为空串
                                                                                          #if ($stringUtil.isEmpty($var)) … #end

                                                                                           ## 进行HTML编码
                                                                                          <input type=”hidden” name=”myField”

                                                                                        value=”$stringEscapeUtil.escapeHtml             

                                                                                        ($var)”/> ## 进行JavaScript编
                                                                                        <script language=”JavaScript”>
                                                                   var myvar="$stringEscapeUtil.escapeJavaScript     ($var)";
                                                                                          </script>
$classLoaderUtil   ClassLoaderUtil           全局 
$classUtil              ClassUtil                      全局 
$enumUtil             EnumUtil                      全局 
$exceptionUtil      ExceptionUtil                全局 
$fileUtil                 FileUtil                          全局 
$localeUtil            LocaleUtil                      全局 
$mathUtil             MathUtil                        全局 
$messageUtil       MessageUtil                  全局 
$objectUtil           ObjectUtil                      全局 
$streamUtil          StreamUtil                     全局 
$stringEscapeUtil StringEscapeUtil           全局 
$stringUtil            StringUtil                       全局 
$systemUtil          SystemUtil                    全局 
$control              ControlTool                   Request                                   创建control,例如:
                                                                                           $control.setTemplate(“header.vm”)
                                                                                           $control.setModule(“myControl”)
$form                  FormTool                      Request              处理表单

$page                 HtmlPageAttributeTool Request              设置页面属性
$rundata            RunData                        Request             取得request、response相关的数据,例如:
                                                                                     $rundata.parameters.id 取得?id=123参数的值
$uri                     URIBrokerTool              Request          生成URL,后文会讲到
所谓全局作用域,意思是这种工具仅当系统启动时被初始化,随后被所有页面重复使用,这种工具必须是无状态的,与全局作用域相对的,是Request作用域。这种作用域的工具会在每次请求时创建和初始化,因此它可以保存与当前请求相关的数据,但这种工具不能被多个请求共享。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值