JSTL有哪些替代方案?

时间:2008-12-04 17:37:14

标签: java model-view-controller jsp jstl

JSTL还有其他选择吗?我在3年前工作过的一家公司使用JSTL和自定义标记库将表示与逻辑分开。前端开发人员使用EL来执行复杂的表示逻辑,在JSP页面中生成布局,并且效果很好。也许新技术已经问世。这些天好不好?

6 个答案:

答案 0 :(得分:18)

JSTL和EL是两个截然不同的概念。

JSTL只是一个标记库。大多数框架都提供了自己的taglib,大致复制了JSTL的功能。我大致说,因为这些经常滥用或忽略JSP和Servlet API的关键原则。

JSTL的优势在于它是由JSP的作者设计的,对JSP和servlet有深刻的理解。第三方标签库通常由一些不想使用RTFM的人创建,并决定“从头开始”并提出“更简单的东西”。但是,JSTL并不打算做任何事情。它可以非常成功地与其他标记库一起使用,包括您自己的自定义标记。

表达式语言是JSP的基础。它由容器解释,并且可以在许多上下文中使用。它在很大程度上也没有副作用,并且具有简单,易于理解的语法,不允许将大量逻辑填充到表示层中。作为Java EE规范的一部分,它还享有广泛的工具支持。例如,当您重命名属性时,许多IDE可以重构依赖的EL表达式。

Struts2向更广泛的受众介绍了OGNL。 OGNL是对小恶魔的邪恶时代的回归。它更强大,因此开发人员乐于滥用它来调用表示层和其他暴行中的任意方法。攻击者也乐意利用它;它是vulnerabilities in Struts2-based applications.

的常见来源

我熟悉OGNL多年以前的WebWork经验,而我对Struts2的最大失望是未能抛弃这个残骸。甚至WebWork的创始人,Patrick Lightbody,acknowledges that adoption was a mistake.*幸运的是,它只能在有限的环境中使用,比如OGNL感知标签(以及其他一些令人惊讶的地方),不像EL,它由容器本身支持并且可以使用页面中的任何位置。

如果你想远离JSP,但不是像JSF这样的基于组件的方法,你可以查看Terrence Parr的StringTemplate项目。重点是无副作用,这为安全性和可扩展性提供了有价值的改进。

* QFT:在成功攻击基于Struts2的Apple开发者网站后,Patrick Lightbody说:“可悲的是,我对这个非常重要的安全漏洞负有责任。有一些像这样的人,他们都扎根于事实上,差不多9年前,我做出了(坏)决定使用OGNL作为WebWork的表达语言。我这样做是因为它“强大”但却开辟了我从未想过的各种额外绑定技巧。“

答案 1 :(得分:6)

我使用velocity取得了巨大的成功,它作为一种将业务逻辑与表示逻辑分离的简单方法非常有用。而且它很简单,您的普通Web开发人员可以理解它。 Freemarker是许多人喜欢的另一种模板替代品。

答案 2 :(得分:3)

JSTL是一个包含逻辑函数的标记库,可以在JSP页面中使用。其他类似的库也存在,但很可能你想看看整个jsp / jstl解决方案的修订方法。

最值得注意的是我建议看看:

Apache Wicket

JSF with facelets

Google Web Toolkit(GWT)

答案 3 :(得分:3)

JSTL鼓励您在UI中添加逻辑。尝试Apache Wicket而不是在java中完成逻辑。

答案 4 :(得分:1)

假设您正在寻找使用MVC开发应用程序的更简单方法,我强烈建议您查看Spring Framework。 Spring有自己的标记库,它提供了JSP中你需要的大部分内容。我使用Spring webflow以及Spring表单标记库取得了巨大的成功。我喜欢将应用程序划分为持久层(使用Spring对Hibernate的ORM支持),服务层(业务逻辑)和视图层。视图层包括用于验证和操作的Web流,JSP和POJO。我还在视图层中使用DWR进行AJAX调用。

答案 5 :(得分:0)

我不会说他们是替代或替代,但我认为Java-Server-Faces在逻辑分离演示中更进一步......