为什么不建议在JSP中使用JavaScript?

3

为什么不建议在JSP中使用JavaScript? 我能想到的一个理由是,如果浏览器关闭了该功能,则代码将停止执行。还有其他原因吗?


这是一个非常好的想法。希望没有其他原因,除了这个。 - Warrior
1
被踩了 - 这样的问题应该提供对任何这种断言的参考资料 - Alnitak
你可能在考虑一个说法,即 JSP 中不应该使用 Java 。最佳实践是将 Java 业务逻辑保留在 servlets/单独的类中,并仅将显示信息/HTML/JS 放入 jsp 文件中。 - mtruesdell
@Alnitak - 你能具体一点吗? - Omnipotent
5个回答

11
据我所知,在JSP中使用JavaScript没有问题,许多网站都在使用。特别是如果你的网站是一个Web应用程序,你必须同时使用两种技术。它们是完全独立的。你只需要确保你为每个技术选择适当的用途。
至于关闭浏览器中的JavaScript会导致网站无法使用的部分,这对于使用JavaScript无论是否结合JSP都是真实的。

1

我知道这是一个非常老的问题,但我还是想发表一下我的看法。我认为在当前时期应该使用JavaScript,因为它可以提供非常丰富的用户体验,并且随着像jQuery(我个人最喜欢的库)、prototype和mootools这样的js库的出现,将JavaScript集成到您的应用程序中变得非常容易,几乎不需要额外的服务器开销和很少的努力。

如果您正确设计您的应用程序,您可以添加JavaScript来丰富用户的体验(并使他们更容易使用您的站点/应用程序),而不需要额外的服务器开销和很少的努力。

然而,您的网站不应该依赖于JavaScript的功能,因为用户的浏览器可能不支持它。

JavaScript应该是不显眼的,并为那些支持它的用户提供更丰富的体验。

这里有一篇关于UI和优雅升级的好文章,而不是为用户浏览器的失败而设计。 http://realtech.burningbird.net/javascript/accessibility/gracefully-upgrading


1

他的意思一定是“不要使用Java脚本”,这是在<% %>之间的内容。

最大的原因肯定是可维护性和调试性;脚本使得所有事情都变得非常困难。

另一方面,如果您实现标签库,可以将任何逻辑提取到真正的Java类中,这很容易进行调试,并且您仍然可以在可视化的xml/html编辑器中打开它们,因为标签库是有效的xml结构。

现在,在客户端(使用JavaScript)进行验证是一个坏主意。用户可以禁用JavaScript甚至直接访问URL以规避验证,这会使您面临漏洞。


1
现在,在客户端(javascript)进行验证是个不好的主意。但仅仅在客户端进行验证也是不够的。同时进行服务端验证不仅可以提高响应速度(无需等待服务器拒绝请求,减轻服务器负荷),也能保证数据安全性。 - Johannes Schaub - litb
我不会反对这个。 - Clay Mitchell

0

JSP是一种服务器端技术。也就是说,服务器解析/编译所有信息,然后将其发送到客户端(即您的浏览器)。接下来...

如果收到的数据包含任何javascript,则浏览器会在其自己的javascript虚拟机中解释它,而服务器则早已被遗忘,因为HTTP是无状态协议。

考虑到“不建议在Web中使用JS”,我不会过于在意它。大多数网站广泛使用JS,因此在客户端将其关闭将使它们基本上无用。


0
如果你有很多客户端,那么使用JavaScript在客户端上进行计算可能是个好主意。如果你把所有的事情都放在服务器上,你只会浪费客户端浏览器提供的许多处理能力,而且如果太多客户端使服务器繁忙,Java的速度优势也将无济于事。(感谢评论中的@Subtenante指出这一点!)
但另一方面,服务器上运行的Java比客户端上的JavaScript更快,而且它不会因为测试客户端运行的浏览器而遭受冗余代码的困扰。
正如trex所指出的那样,JavaScript也有其用途。由于它在客户端上运行,例如在将表单字段发送到服务器之前,它可以验证表单字段。

1
Java比JS更快,没错,但是你只有一个服务器,可能会有很多客户端。当重型功能留给客户端处理时,性能可能会有所提升,从而减轻服务器的负担。 - glmxndr
感谢您的评论。我同意您的观点,并修改了我的答案。今天我感觉我并不是特别喜欢我的答案。如果可以的话,我会删除我的答案,并告诉提问者从下面选择另一个答案 :) 但我希望您现在同意我的答案 :) - Johannes Schaub - litb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接