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

50 jsp jspx

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

Pet*_*ton 51

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

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

<script type="text/javascript">
   if (number &lt; 0) {
Run Code Online (Sandbox Code Playgroud)

XML语法也可能更冗长.

  • 我想你可以使用像<![CDATA [<]]>`这样的CDATA来逃避`<`.无论哪种方式,是的,**是丑陋的**. (13认同)
  • 无论如何,你的页面中不应该有JS. (9认同)
  • 根据我的个人经验,JSPX强制执行控制器视图分离,因为您无法在JSPX中执行Java代码,但XML语法有时会令人难以理解 (4认同)
  • 为什么?如果某些脚本片段仅适用于仅一页IMHO中的某些有限标记,则"<script>"标记写入速度非常快,并且不会使项目文件结构混乱. (2认同)

ale*_*lex 22

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

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

另一方面:

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


kro*_*old 11

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

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

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


Mat*_*ton 6

您好JDeveloper开发人员!

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

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


A. *_*son 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而不是<%...%>来设置scriplet)