我应该使用JSPX而不是JSP吗?

时间:2008-08-26 14:41:56

标签: jsp jspx

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

8 个答案:

答案 0 :(得分:51)

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

然而,也有缺点。例如,格式良好的XML必须转义为少于符号的内容,因此您的文件最终可能包含以下内容:

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

XML语法也可能更详细。

答案 1 :(得分:22)

JSPX有一些不便之处,最重要的是:

  1. 很难生成某种动态内容; ESP。生成具有可选属性的HTML标签(即或取决于条件)。在我开始使用JSPX的那天,应该解决这个问题的标准JSP标记无法正常工作。
  2. 没有更多&amp; NBSP; :-P
  3. 您真的想将所有Javascript放在单独的文件中(或使用CDATA部分等)。恕我直言,你应该使用jQuery,所以你真的不需要onclick等属性......
  4. 工具可能无法正常工作;也许你的IDE不支持普通JSP以上的任何东西。
  5. 在Tomcat 6.x上,至少我试过的版本/配置,生成的输出没有任何格式;只是一个小烦恼,但
  6. 另一方面:

    1. 它强制您编写正确的XML,这可以比JSP
    2. 更容易地操作
    3. 工具可能会执行即时验证,更快地发现错误
    4. 简单的语法,我的拙见

答案 2 :(得分:11)

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

JSPX和EL使得包含javascript和嵌入式java代码比使用jsp更加困难和自然。 EL是专为表示逻辑量身定制的语言。

所有这些都促使您更清晰地分离UI渲染和其他逻辑。 JSP(X)页​​面中许多嵌入式代码的缺点是几乎不可能轻松测试,而实现这种关注点分离会使您的大部分逻辑完全 单元测试的。

答案 3 :(得分:6)

你好JDeveloper开发人员!

我已经使用JSPX页面超过两年了,我从来没有遇到任何与JSP相反的JSPX问题。由于我使用JHeadstart自动生成ADF Faces页面,因此选择使用JSPX是有点强制的,默认情况下,JHeadstart会在JSPX中生成所有内容。

JSPX指定文档必须是格式良好的XML文档。这允许东西正确有效地解析它。我听过开发人员说这可以帮助你的页面更加“面向未来”而不是JSP。

答案 4 :(得分:6)

如Spring 3.1官方文档中所述

  

“Spring为JSP和JSTL提供了一些开箱即用的解决方案   意见“。

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

在我们的一个cie项目中,我们使用JSP和JSPX制作了POC并制作了PROS和CONS,我个人的建议是使用JSP,因为我们发现以非XML方式生成HTML5的限制性和自然性要小得多限制性更强,语法更紧凑。我们更喜欢选择限制性较小的东西,并在jsp文件中添加“不要把java scriptlets”等“最佳实践”建议。 (BTW JSPX还允许您使用jsp:scriplet而不是&lt;%...%&gt;来放置scriplets)

答案 5 :(得分:2)

@ Matthew-
ADF!我目前正在处理的应用程序有90%的表示层由mod PL / SQL生成。我开始研究一些新的屏幕,并希望调查可能适合我们的架构的其他选项,而不会给同事开发人员造成很大的学习负担(增加系统的复杂性/崩溃开发人员的系统心理模型)球队。所以ADF也是我遇到JSPX的方式。

我也看到了“未来证据”的观察......但不知道那是多么有根据。

答案 6 :(得分:2)

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

答案 7 :(得分:0)

另外,我在JSPX中发现的另一个问题是你想要使用scriptlet。我同意干净的代码通常是好的,JSP中的Java逻辑通常很糟糕但是在某些情况下你想使用实用程序函数来返回一个字符串值或TagLib或模型(请求属性)过度的东西

每个人对JSP中scriptlet的想法是什么?