jsp/jstl引擎1.0.1.2发布

萧宏峻
2023-12-01

github下载地址: https://github.com/xuesong123

oschina: http://git.oschina.net/xuesong123/jsp-jstl-engine


# 修改功能

1. 增加预编译功能

2. el表达式和jsp表达式增加#前缀指令,使用#前缀的表达式将不进行html编码

3. 完善文档

4. 增加格式控制,去除因为标签导致的多余的空格和换行


Ayada是一个jsp/jstl的模板引擎,基本支持jsp/jstl的全部功能,使用jsp/jstl编写的页面基本不需修改就可以使用Ayada执行。

为什么不直接使用jsp,而是要再造一个轮子呢?

  • 统一实现,不同的jsp/servlet容器对jstl并不完全兼容。某些容器对标签属性和el的支持很不友好。这对于那些需要在不同的jsp/servlet容器中运行的应用程序来说很坑。

  • 某些功能的实现很麻烦,例如pageContext.include方法是在不同的pageContext中执行,父页面和被include的页面的pageContext是互相隔离的,传递参数只能通过其他方式。Ayada对pageContext.include做了扩展,可以直接传递参数。

  • 在非web环境中使用jstl。jstl本身专为web设计,API中直接跟web绑定死了,很难在其他环境中使用。Ayada中移除了web相关的对象,通过约定支持一些web中定义的对象。

  • 在jsp中页面和web环境绑定,同样的页面如果想生成静态文件必须修改jsp代码重定向输出到本地文件非常麻烦。使用模版引擎就可以很方便的执行已经编写好的jsp页面输出到指定文件。

  • jsp中的jstl定义很繁琐,Ayada简化了标签定义。Ayada还提供了action,invoke标签来调用其他模版,将其他模版当成宏使用,实现上仅仅相当于一个方法调用。

  • Ayada基本兼容jstl全部功能,原来使用jsp编写的代码基本上不需要修改就可以直接使用Ayada运行。

  • Ayada自带的默认标签库扩展了大量常用标签,可以很方便的对代码隔离,避免大量的代码堆砌到一个页面,提高了代码可重用性。

  • Ayada可以禁用java脚本,只使用标签编写,强制展现层和逻辑层分离,一定程度上也使web程序避免被人上传jsp木马。

  • Ayada的el引擎可以任意替换,如果你喜欢其他的表达式语言,你可以把默认的el引擎替换为其他实现。

  • 在jsp中所有的jsp表达式和el输出都需要人工编码加上html转码,否则可能被xss注入。Ayada在引擎层默认对所有的jsp表达式和el表达式进行html编码,同时支持自定义转码函数。






 类似资料: