【问题标题】:Why do we need JSP files when we have .java files available?当我们有可用的 .java 文件时,为什么我们需要 JSP 文件?
【发布时间】:2011-07-16 08:31:11
【问题描述】:

我是 JSP 和 Servlet Web 开发的绝对初学者,因此我在一些概念性的事情上有些挣扎。

1) 我真的不明白为什么我们需要有我们编译的纯 Java 代码文件但也有单独的 JSP 文件...难道他们都最终实现了逻辑/功能在 Java 中?

2) 您如何确定应该在 java 文件中包含哪些函数/操作以及应该在 JSP 文件中包含哪些函数/操作...?

3) 最后,在Java 和JSP 文件both 中都有HTML 代码(虽然在Java 文件中我们是动态打印HTML 代码。但这不会导致重复的HTML 代码吗?

【问题讨论】:

  • 此链接也可能有助于更好地理解“常规做法”:stackoverflow.com/questions/3177733/… 简而言之:HTML 代码属于 JSP 文件。 Java 代码属于 Java 类。就这么简单。

标签: html jsp servlets


【解决方案1】:

1) 我真的不明白为什么我们需要纯 Java 代码文件 我们编译但也有单独的 JSP 文件......他们不是都 最终用 Java 实现逻辑/功能?

我认为你说的纯Java代码文件是Servlet。实际上,你可以只使用Servlet编写整个Web应用程序,但是你会发现你的应用程序有以下缺点:

  • HTML是使用println()生成的,也就是说如果要对HTML做一些修改,就得修改java代码,重新编译,然后重新部署,导致维护问题。

  • 网页设计者难以理解java代码。

  • 内容和表示之间的分离很弱,因为每件事都在 Java 代码中表达。

JSP 旨在解决这些缺点:

  • 您不必重新编译 JSP 以反映更改。只需更新并保存 JSP,当下次请求检索到 JSP 时,Web 容器会自动重新编译代码。

  • JSP 页面看起来与 HTML 页面非常相似,Web 页面设计人员使用 JSP 页面而不是 Servlet 更容易。

  • JSP 有助于分离表示和业务逻辑代码,其中表示可以在 JSP 中表示,而业务逻辑可以以 Java Bean 或自定义标签的形式实现。这种分离将导致更好的可维护性。

2) 您如何确定应包含哪些功能/操作 在 java 文件中,您应该在 JSP 文件中包含哪些内容...?

JSP 的优势在于显示 HTML。您应该使用 JSP 定义视图以将数据呈现给用户。

Servlet的强项在于控制和调度方面。例如,如果你想根据一些输入参数或一些业务逻辑处理显示不同的内容,你应该做这个调度工作,并选择在哪个JSP中显示结果Servlet。

如果请求的输出不包含 HTML,例如生成图形或下载文件,则应在 Servlet 中进行。

所以,从MVC模式来看,Servlet扮演Controller的角色,JSP扮演View的角色。

您可以在此处找到使用 Servlet 和 JSP 的最佳实践: http://www.oracle.com/technetwork/articles/javase/servlets-jsp-140445.html

【讨论】:

    【解决方案2】:

    可以在此处找到有关 java servlet 与 JSP 的说明:

    http://www.oxxus.net/tutorials/jsp/why-jsp

    最重要的是

    JSP 实现了业务逻辑与表示的清晰分离。 JSP 使用 Java 作为脚本语言,不受特定供应商平台的限制。 JSP 作为 J2EE 架构的一个组成部分,可以完全访问服务器端资源。

    2:如果该函数仅由该 JSP 调用,则继续将其放入其中。一般来说,您应该只是从 JSP 中调用 java,而不是在其中留下太多代码。将函数构建到 .java 中并从 JSP 中调用它们将促进代码重用,并使您更仔细地考虑如何实现这些函数。

    3:尽量避免将演示文稿(HTML 等)与业务逻辑(Java)混合。

    这不会导致重复 html 代码吗?

    确实如此,不要那样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 2017-08-24
      相关资源
      最近更新 更多