我应该做JSPX而不是JSP?

使用JDeveloper ,我开始为工作中的项目开发一组网页。 由于我当时对JDev的了解不多,所以我跑到甲骨文去学习一些教程。 JDev教程推荐使用JSPX而不是JSP ,但是并没有真正解释为什么。 你在开发JSPX页面吗? 你为什么决定这样做? 去JSPX路线的优点/缺点是什么?

主要区别在于,JSPX文件(官方称为“JSP文档”)可能更易于使用,因为对格式良好的XML的要求可能允许编辑器在键入时识别更多拼写错误和语法错误。

但是,也有缺点。 例如,格式良好的XML必须转义成小于号的forms,所以你的文件最终可能会包含如下内容:

<script type="text/javascript"> if (number &lt; 0) { 

XML语法也可能更为冗长。

JSPX有一些不便之处,在我头上:

  1. 很难生成某种dynamic内容; ESP。 生成具有可选属性的HTML标签(即根据条件)。 应该解决这个问题的标准JSP标记在我开始做JSPX的那一天没有正常工作。
  2. 没有更多的&nbsp; 😛
  3. 你真的想把所有的Javascript放在单独的文件中(或使用CDATA部分等)。 恕我直言,你应该使用jQuery无论如何,所以你真的不需要有onclick等属性… … –
  4. 工具可能无法正常工作; 也许你的IDE不支持普通JSP以上的东西。
  5. 在Tomcat 6.x上,至less我试过的版本/configuration,生成的输出没有任何格式; 虽然只是一个小小的烦恼

另一方面:

  1. 它迫使你编写正确的XML,比JSP更易于操作
  2. 工具可以执行即时validation,更快地捕捉错误
  3. 简单的语法,在我的愚见

一个完全不同的理由,为什么你应该使用jspx而不是jsp:

JSPX和EL使得包含javascript和embedded式java代码比jsp更加自然。 EL是专门为演示逻辑量身定制的语言。

所有这一切都促使你将UI渲染和其他逻辑分离开来。 JSP(X)页​​面中大量embedded代码的缺点是实际上不可能容易地进行testing,而实践这种关注的分离使得大部分逻辑可以完全进行unit testing。

Hello JDeveloper开发人员!

我一直在使用JSPX页面已经两年多了,从来没有任何与JSPX相对的问题。 因为我使用JHeadstart自动生成ADF Faces页面,所以我select使用JSPX是有点迫使,默认情况下,JHeadstart在JSPX中生成所有内容。

JSPX指定文档必须是格式良好的XML文档。 这可以让东西正确,高效地parsing它。 我听说开发人员说,这有助于您的网页更加“面向未来”,而不是JSP。

正如Spring 3.1官方文档中所述

“Spring为JSP和JSTL视图提供了一些开箱即用的解决scheme。”

另外,您还必须考虑JSPX旨在生成纯XML兼容输出的事实。 所以,如果您的目标是HTML5(可以符合XML,但增加复杂性,请参阅我的下一个评论),如果您使用Eclipse IDE,则实现目标会有一些痛苦…如果您的目标是生成XHTML,那么请使用JSPX和JDeveloper会支持你…

在我们的一个cie项目中,我们用JSP和JSPX制作了一个POC,并制作了PROS和CONS,而我个人的build议是使用JSP,因为我们发现用非XML的方式制作HTML5的限制性和自然性要低很多和更紧凑的语法。 我们更愿意select一些限制较less的东西,并在“jsp文件”中添加“不要把java脚本”等“最佳实践”的build议。 (顺便说一句,JSPX还允许你使用jsp:scriplet来代替<%…%>)

@马修-
ADF! 我目前正在使用的应用程序有90%的由PL / SQL生成的表示层。 我开始研究一些新的屏幕,并且想研究可能适合我们的架构的其他选项,而没有太多的学习负担(增加系统的复杂性/使开发者的系统的心理模型崩溃)球队。 所以ADF也是我如何碰到JSPX的。

我也看到了一个“未来certificate”的观察结果……但是不知道那是多么有根据。

JSPX也是Spring MVC / Spring Web Flow推荐的视图技术。

另外,我在JSPX中发现的另一个问题是当你想使用scriptlet时。 我同意,干净的代码通常是好的,JSP中的Java逻辑通常是不好的,但是有些情况下你想用一个实用程序函数来返回一个string值,或者一个TagLib或模型(请求属性)会过度。

大家对JSP中的scriptlet有什么想法?