JSP - 脚本片段有什么问题,应该使用什么替代方案?

22

我很多年前在一本书中读到了JSP,最近决定自学。现在我知道如何使用JSP脚本片段、表达式和声明。

    <%! String str = "Hello World" %>
    <%= str.length() %>
    <% str=str.substring(0,5) %>

但是我在很多地方(包括这个网站和其他地方)看到过,不应该使用脚本片段。这是一个这样的问题:Eclipse using Classes in JSP

我的问题是:

  1. 使用脚本片段有什么问题?
  2. 那我应该使用什么代替脚本片段?

非常感谢您提供的任何帮助!

编辑:

我没有使用Servlets,而是将我的JSP代码嵌入到HTML页面中。没有Java知识的UI设计师可以轻松修改我的页面。 基本上,我使用JSP作为前端来显示数据库中的内容并进行更新,例如当用户下订单时。


2
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Jan B.
3个回答

17

这只是我的个人意见。我认为Scriptlets:

  1. 这是一个已经过时的1998年技术,需要消失;它是对Microsoft ASP的失败回应。
  2. 丑陋
  3. 难以阅读
  4. 难以维护
  5. 不鼓励重用和封装
  6. 鼓励将复杂的逻辑放在页面中

那么该使用什么呢?

  1. 世界正朝着HTML5、CSS3、JavaScript、jQuery、Bootstrap和与REST Web服务交互的Web技术方向发展。这是一个好的方向。
  2. 如果您必须坚持使用JSP,请从JSP标准模板库开始。保持您的HTML页面看起来像HTML——这将使UI开发人员更容易地维护它们。
  3. 尝试更现代的模板解决方案,如Thymeleaf,从服务器端生成您的HTML。

我同意你说的很多内容,但这个回答太糟糕了。"HTML5"并不能回答“如何在服务器上创建动态生成的网页?”的问题。正确的回答应该是像“JSTL或Thymeleaf”这样的东西。下次可以先从这方面入手。此外,问题的一部分是“为什么不使用scriptlet”,而你没有回答这个问题。 - Christopher Schultz
可怕?这与“我同意你说的很多内容”不一致。有两个部分:(1)脚本片段有什么问题,(2)我还能用什么?您没有阅读第二个列表中的第3项吗? - duffymo

11

这是我的观点。

  1. 虽然使用Java代码很简单,但我认为脚本片段难以阅读,使得代码看起来有些混乱。
  2. 像duffymo和大多数人推荐的那样,在JSP中使用JSTL比脚本片段是一个更好的选择。

曾经有过一段时间,我只会使用脚本片段在JSP中使用一些Java代码,但学习了JSTL后,我发现它非常方便。它可以很好地与HTML标签融合,使得代码更易于阅读。


我希望我现在可以选择两个答案。 - vikarjramun
没问题,duffymo实际上提供了一些很好的替代JSP的选择。如果你想在JSP中保持HTML代码的整洁,可以尝试使用CSS、jQuery和JS等相关技术。 - Noir Antares
4
对于一个声望值为“227k”的用户来说,增加15个声望点并不太重要;但对于一个声望值为“1”的用户来说,增加15个声望点意义重大,可以激励他们。如果这篇回答有帮助的话,请至少点赞支持一下。 - rupinderjeet

6

在视图逻辑中混合代码并不是一个清晰的设计。

这就是为什么JSP不是理想的解决方案。

相反,你应该使用像Velocity/Freemarker这样的模板,它完全不允许混合Java代码。

额外的好处是,非Java UI专家设计师可以为UI做出贡献,而无需学习Java。


有几件事情:我的JSP代码易于非Java设计师理解-它基本上是具有值的HTML;我仅需要Java代码来连接数据库并读取/写入对象。如果不通过动态服务器端语言(如JSP),我还能以其他方式实现这一点吗? - vikarjramun
1
@vikarjramun 只需使用JSF。 - 0x6C38
@vikarjramun的回答与我的不矛盾,JSF可以在HTML5、JS、Bootstrap等上运行。 - 0x6C38
4
当你提到需要在JSP中嵌入数据库连接代码时,似乎你并没有理解将显示逻辑和代码分离的概念。数据库可能会发生变化,这样你就不得不修改JSP文件。 - Amit Mahajan
FYI,四年后的今天,我现在完全使用Freemarker而不是JSP,正确地将我的UI代码与业务逻辑分离。 - vikarjramun
显示剩余3条评论

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