Websharp 5 - Websharp编程

Websharp原理

Websharp开发的过程是先设计页面模板,然后编写java代码,即模板设计好了,接下来的任务就是编程来调用它,把模板变量换成动态的内容。从模板设计一章中,我们知道了三种基本的模板元素:静态HTML、模板变量和模板块。我们也知道通过ValueNode来存储动态的内容。由于静态的HTML你不用关心,所以实际上Template DOM和ValueNode DOM之间的对应关系就是:

模板块元素  《=====》ValueNode对象

一个模板块元素通过名称和一个ValueNode对象关联起来 —— 如果一个模板块元素和一个ValueNode对象在DOM中属于同一级而且名称一样,则它们就是关联的。模板变量总是包含在模板块元素中的,可以认为它就是模板块元素的属性,Websharp编程的核心也就是把这些模板变量换成动态的内容,也就是通过关联的ValueNode来对这些模板变量赋值。

为了方便编程和避免路径的查找,我们一般都采用JSP来写代码,即如果模板叫test.htm,则代码文件就是同目录的test.jsp。当然,你也可以把代码写成Servlet;另外Websharp中也带有了一个轻量级的框架,允许你直接把代码写在Java Class中,这在后面会有介绍。

模板常用元素

在模板设计中,最常用的就是下面三个元素了

{%VarName%}    模板变量

<!-- begin block : blockname-->、<!-- end block :blockname -->   普通模板块元素

<!—begin loop :loopname-->、<!-- end loop : loopname-->      循环模板块元素

模板块元素用HTML注释<!-- -->包围起来的目的就是在用可视化页面设计工具设计页面的时候,这些模板块元素由于是"注释",不会影响到设计页面的显示效果.

其实loop元素只循环1次的情况下和block元素是一致的,就是说loop元素可以代替block元素,但为了代码的含义更清楚(一般输出还是循环输出),我们建议还是两种元素一起用.

 

Websharp代码结构

Websharp的代码结构大体是这样的:

<%@ page import="websharp.core.*,websharp.web.*,websharp.util.*"%>

<%

Websharp ws = new Websharp("xxxx.htm", charset, request, response);

ws.setValue(name,value);

……

ValueNode block=ws.addBlock("block");

......

ValueNode loop=ws.addLoop("loop");

....

ws.render( null);

%>

程序开始创建了一个Websharp对象,其构造函数第一个参数表示模板文件名;第二参数指模板文件的编码,建议统一采用UTF-8编码,第三、四两个参数就是Http请求和响应的两个对象了。

创建好Websharp对象后,就可以开始了赋值操作。操作模板变量、普通模板块元素、循环模板块元素相对应的方法就是setValue()、addBlock()、addLoop()了。

最后通过Websharp的render函数把结果输出到客户端。render函数包含了一个参数,表示资源文件的名称;如果没有用到资源文件,可以为null

代码举例与说明

有模板文件test.htm:

<html>

<body>

<H1> {%Var1%}</H1>

<!-- begin block: block1 -->

{%Var2%}

<!-- end block :block1-->

<!-- begin loop:number-->

{%i%}

<!-- end loop:number-->

</body>

</html>

对应的代码文件test.jsp:

<%@ page import="websharp.core.*,websharp.web.*,websharp.util.*"%>

<%

WebSharp ws = new WebSharp("test.htm", "", request, response);

ws.setValue(“Var1”,”This is Var1”);

//show block block1

if(2>1)

{

ValueNode block1=ws.addBlock("block1");

block1.setValue("Var2","This is Var2 from block1");

}

//show loop number

for(int i=1;i<=100;i++)  ws.addLoop("number").setValue("i",i);

ws.render( null);

%>

1) WebSharp ws = new WebSharp()创建了WebSharp对象,并使它和一个模板文件关联起来,WebSharp对象会自动解析模板文件,并生成Template DOM。这些对我们来说是不透明的,而我们也不关心它的实现细节。

2) 为了使ValueNode DOM和Template DOM关联起来,我们必须先有ValueNOde DOM 的根节点,而Websharp对象其实就是根节点(继承于ValueNode)。它对应着Template DOM的根3) ws.setValue(“Var1”,”This is Var1”),给模板变量Var1赋值.

4)创建ValueNode block1,其对应与模板块元素block1,并给block1下面的Var2赋值。如果在程序里面不创建ValueNode block1,则模板块元素block1是隐藏的,即<!-- begin block: block1 --><!-- end block :block1-->之间的代码不会输出到浏览器端。所以说,模板块元素的一个作用就是控制内容在需要显示的时候才显示。

5)创建ValueNode 对应于循环块元素number,并循环100次,从1到100给其下面的模板变量“i”赋值。

6) 当所有的ValueNode都赋值后,就可以用ws.render()来输出最终的结果了。

小结

本文主要介绍了Websharp的模板定义以及如何使用,其实你要记住{%%}、<!-- begin block -->、<!-- end block -->、<!—begin loop -->、<!-- end loop -->这几项内容就可以了,而模板的使用会在开发的过程中慢慢熟悉起来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值