Java JSTL的替代方案是什么?

Java JSTL的替代方案是什么?,java,model-view-controller,jsp,jstl,Java,Model View Controller,Jsp,Jstl,除了JSTL还有其他选择吗?我3年前工作过的一家公司使用JSTL和自定义标记库将表示与逻辑分离。前端开发人员使用EL进行复杂的表示逻辑,在JSP页面中生成布局,结果非常好。也许新技术已经出现了。最近有更好的吗?我已经非常成功地使用了它,它作为一种将业务逻辑与表示逻辑分离的简单方法非常有效。它非常简单,一般的web开发人员都能理解。JSTL是另一个模板替代方案,很多人也喜欢它。JSTL是一个包含可在JSP页面中使用的逻辑函数的标记库。其他类似的库也存在,但您很可能希望了解整个jsp/jstl解决方

除了JSTL还有其他选择吗?我3年前工作过的一家公司使用JSTL和自定义标记库将表示与逻辑分离。前端开发人员使用EL进行复杂的表示逻辑,在JSP页面中生成布局,结果非常好。也许新技术已经出现了。最近有更好的吗?

我已经非常成功地使用了它,它作为一种将业务逻辑与表示逻辑分离的简单方法非常有效。它非常简单,一般的web开发人员都能理解。JSTL是另一个模板替代方案,很多人也喜欢它。

JSTL是一个包含可在JSP页面中使用的逻辑函数的标记库。其他类似的库也存在,但您很可能希望了解整个jsp/jstl解决方案的改进方法

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

阿帕奇边门

带facelet的JSF


Google Web Toolkit(GWT)

我不会说它们是替代品或替代品,但我认为在将表示与逻辑分离方面更进一步…

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

JSTL和EL是两个不同的概念

JSTL只是一个标记库。大多数框架都提供了自己的taglib,它几乎复制了JSTL的功能。我说的大概是,因为它们经常误用或忽略JSP和ServletAPI的关键原则

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

表达式语言是JSP的基础。它由容器解释,可以在许多上下文中使用。它基本上没有副作用,语法简单易懂,不允许将大量逻辑塞进表示层。作为JavaEE规范的一部分,它还享有广泛的工具支持。例如,许多IDE可以在重命名属性时重构依赖的EL表达式

Struts2向更广泛的受众介绍了OGNL。OGNL是对Scriptlet邪恶时代的回归。它更强大,因此开发人员乐于滥用它来调用表示层中的任意方法和其他暴行。攻击者也乐于利用它;这是一个共同的资源

从多年的网络工作经验中,我对OGNL很熟悉,而Struts2中我最大的失望就是没能抛弃这个dreck。幸运的是,即使是WebWork创始人Patrick Lightbody,它也只能在有限的上下文中使用,比如OGNL感知标记(以及其他一些令人惊讶的地方),而EL则不同,它由容器本身支持,可以在页面中的任何位置使用

如果您不想使用JSP,但不想使用JSF这样的基于组件的方法,那么您可以查看terrenceparr的项目。这里的重点是无副作用,这为安全性和可扩展性提供了有价值的改进


*QFT:在成功攻击了基于Struts2的苹果开发者网站后,Patrick Lightbody说:“很遗憾,我觉得这是一个相当大的安全漏洞。有一些类似的漏洞,它们都源于这样一个事实,几乎9年前我犯了(坏的)错误决定使用OGNL作为WebWork的表达式语言。我这样做是因为它“强大”,但它带来了我从未想过的各种额外绑定技巧。”

JSTL鼓励您在UI中加入逻辑。试试ApacheWicket,在java中完成逻辑。

同意,关注点分离并没有比Wicket更干净。