【问题标题】:Should I be doing JSPX instead of JSP? [closed]我应该做 JSPX 而不是 JSP 吗? [关闭]
【发布时间】:2010-09-06 21:26:46
【问题描述】:

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

【问题讨论】:

    标签: jsp jspx


    【解决方案1】:

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

    但是,也有缺点。例如,格式良好的 XML 必须转义诸如小于号之类的内容,因此您的文件最终可能包含以下内容:

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

    XML 语法也可能更冗长。

    【讨论】:

    • 我猜你可以使用 &lt;![CDATA[ &lt; ]]&gt; 这样的 CDATA 来转义 &lt;。不管怎样,是的,很丑
    • 根据我的个人经验,JSPX 强制执行控制器视图分离,因为您不能在 JSPX 中执行 java 代码,但 XML 语法有时会让人不知所措
    • 你的页面中不应该有 JS。
    • 为什么?如果某些脚本 sn-p 仅适用于仅一页中的某些有限标记,恕我直言,&lt;script&gt; 标记的编写速度非常快,并且不会弄乱项目文件结构。
    • @JaimeHablutzel 有很多原因。例如,您不能再使用Content Security Policy 保护自己免受 XSS 攻击。
    【解决方案2】:

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

    1. 有些动态内容很难生成;尤其是生成具有可选属性的 HTML 标记(即或取决于条件)。在我开始做 JSPX 的那一天,应该解决这个问题的标准 JSP 标签并不能正常工作。
    2. 没有了:-p
    3. 您确实希望将所有 Javascript 放在单独的文件中(或使用 CDATA 部分等)。恕我直言,无论如何你都应该使用 jQuery,所以你真的不需要 onclick 等属性......
    4. 工具可能无法正常工作;也许您的 IDE 不支持普通 JSP 之上的任何内容。
    5. 在 Tomcat 6.x 上,至少我尝试过的版本/配置,生成的输出没有任何格式;不过,这只是一个小烦恼

    另一方面:

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

    【讨论】:

      【解决方案3】:

      为什么应该使用 jspx 而不是 jsp 的完全不同的推理方式:

      JSPX 和 EL 使得包含 javascript 和嵌入的 java 代码比 jsp 更难做,也更不自然。 EL 是一种专门为表示逻辑量身定制的语言。

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

      【讨论】:

        【解决方案4】:

        您好 JDeveloper 开发人员!

        我已经使用 JSPX 页面两年多了,我从来没有遇到过他们是 JSPX 反对 JSP 的问题。我选择使用 JSPX 有点勉强,因为我使用 JHeadstart 自动生成 ADF Faces 页面,并且默认情况下,JHeadstart 会在 JSPX 中生成所有内容。

        JSPX 指定文档必须是格式良好的 XML 文档。这允许东西正确有效地解析它。我听说开发人员说,与 JSP 相比,这有助于您的页面更加“面向未来”。

        【讨论】:

          【解决方案5】:

          如 Spring 3.1 官方文档所述

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

          您还必须考虑 JSPX 旨在生成纯 XML 兼容输出这一事实。因此,如果您的目标是 HTML5(可以兼容 XML,但会增加复杂性,请参阅我的下一个 cmets),如果您使用 Eclipse IDE,那么实现目标会有些困难……如果您的目标是生成 XHTML,那么选择 JSPX 和 JDeveloper会支持你...

          在我们的一个 cie 项目中,我们使用 JSP 和 JSPX 制作了 POC,并制作了 PROS 和 CONS,我个人的建议是使用 JSP,因为我们发现以非 XML 方式生成 HTML5 的限制性和自然性要小得多,即也更少限制和更紧凑的语法。我们更喜欢选择限制较少的内容,并在 jsp 文件中添加“最佳实践”建议,例如“不要将 java scriptlet”。 (顺便说一句,JSPX 还允许您使用 jsp:scriplet 而不是 放置 scriplets)

          【讨论】:

            【解决方案6】:

            @马修-
            国防军!我目前正在处理的应用程序有 90% 的表示层由 mod PL/SQL 生成。我开始在几个新屏幕上工作,并想研究可能适合我们架构的其他选项,而不会给其他开发人员带来太多的学习负担(增加系统的复杂性/破坏开发人员的系统心理模型)团队。所以 ADF 也是我遇到 JSPX 的方式。

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

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                【解决方案8】:

                另外,我在 JSPX 中发现的另一个问题是当您想要使用 scriptlet 时。我同意干净的代码通常是好的,而 JSP 中的 Java 逻辑通常是不好的,但是在某些情况下,您希望使用实用程序函数返回字符串值或 TagLib 或模型(请求属性)会过大.

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

                【讨论】:

                • 在这里你可以检查为什么脚本是一种不好的做法stackoverflow.com/questions/3177733/…
                • 感谢您的洞察力..我知道脚本不是最佳实践..但有时单行更容易..
                • 我体验过两个企业项目的不同之处,当你使用scriptlet时,bug更难解决,而使用JSTL你有更多线索可以快速解决。
                猜你喜欢
                • 1970-01-01
                • 2019-07-20
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-02-11
                • 2013-08-05
                相关资源
                最近更新 更多