昨天和[url=http://huangyh.iteye.com]huangyh[/url]讨论了CommonTemplate([url]http://www.commontemplate.org[/url])与JSP的互操作方案,
他觉得如果能在CommonTemplate中直接调用JSP,可以解决遗留系统的集成问题,
如:
在CommonTemplate中:
$jsp
直接写JSP代码,如:<c:if test="${aaa}">xxx</c:if>或者<%if(aaa){%>xxx<%}%>
$end
$include{jsp: "xxx.jsp"}
等等,
如果从头写JSP解析引擎会很耗时,
最好是利用各种开源服务器中已有的JSP引擎,如Tomcat里用的Jasper等,
将JSP相关内容传过去,让其返回结果。
但这些JSP引擎在脱离容器后,不一定能很好的运作,
而JSP是先生成Java,再编译成class,然后调用的,
调用起来可能很不方便,
为了方便切换JSP引擎,中间最好提取一个通用接口,
待看完Jasper, JXP等项目的源代码后再决定实现方案。
另外,
之前已经实现了在JSP中使用CommonTemplate,
如:
在JSP中:
<ctl:template>
直接写CommonTemplate模板,如:$if{?users}, $for{user : users} ...
</ctl:template>
再者,另一个方案:(借鉴于FreeMarker)
将JSP的第三方TagLIb适配成指令的功能,也已实现部分,
只要将相应的tld导入引擎,
就可以在CommonTemplate中使用:
$tag{attribute1="value1", attribute2="value2"}
...
$end
如:已有的displaytag,
$table{name="test", class="mars"}
...
$end
他觉得如果能在CommonTemplate中直接调用JSP,可以解决遗留系统的集成问题,
如:
在CommonTemplate中:
$jsp
直接写JSP代码,如:<c:if test="${aaa}">xxx</c:if>或者<%if(aaa){%>xxx<%}%>
$end
$include{jsp: "xxx.jsp"}
等等,
如果从头写JSP解析引擎会很耗时,
最好是利用各种开源服务器中已有的JSP引擎,如Tomcat里用的Jasper等,
将JSP相关内容传过去,让其返回结果。
但这些JSP引擎在脱离容器后,不一定能很好的运作,
而JSP是先生成Java,再编译成class,然后调用的,
调用起来可能很不方便,
为了方便切换JSP引擎,中间最好提取一个通用接口,
待看完Jasper, JXP等项目的源代码后再决定实现方案。
另外,
之前已经实现了在JSP中使用CommonTemplate,
如:
在JSP中:
<ctl:template>
直接写CommonTemplate模板,如:$if{?users}, $for{user : users} ...
</ctl:template>
再者,另一个方案:(借鉴于FreeMarker)
将JSP的第三方TagLIb适配成指令的功能,也已实现部分,
只要将相应的tld导入引擎,
就可以在CommonTemplate中使用:
$tag{attribute1="value1", attribute2="value2"}
...
$end
如:已有的displaytag,
$table{name="test", class="mars"}
...
$end