【问题标题】:Programmatically Display a web page from a Servlet class以编程方式显示来自 Servlet 类的网页
【发布时间】:2014-08-29 18:16:10
【问题描述】:

我对 JSP 和 Servlet 以及所有那些爵士乐非常陌生,我对如何处理它感到困惑。

现在我的主要困惑如下:

在 Java EE/JSP 项目中,似乎有两种方法可以让网页在屏幕上显示:

  1. 创建一个扩展名为 .jsp 的 HTML 页面,并在 web.xml 文件中将其映射到一个 url 模式(假设只是 /
  2. 创建一个扩展 Servlet 的 Java 类,重写 doGET() 方法以返回 HTML 代码字符串并映射到 web.xml 中的这个 Java 类。

我的 JSP 项目需要大量的 Java 代码来执行逻辑和登录/注销操作。我读过在 JSP 页面中包含 Java 代码是一种不好的做法,因为它变得无法重用、难以跟踪、混乱等。我想在 Java 中包含很多代码,这对我来说会更自然。

我应该如何构建我的项目(假设它是一个简单的初学者项目,我想在其中采用组织、测试等方面的最佳实践来为构建更大的项目做准备)?如何从 Java 类内部干净地部署网页,而不是让许多 JSP 页面包含一些 Java 代码?

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    我过去使用的模式是:

    1) 编写 servlet 以执行任何必要的逻辑,并构造合理数量的可序列化 Java 对象来保存您希望通过 HTML 呈现的所有数据。

    2) servlet 将这些对象存储到 HTTP 请求中,并将请求和响应对象转发到 JSP:

    request.getRequestDispatcher("/some.jsp").forward(request, response);
    

    3) JSP可以访问请求中的java对象,并将数据与静态HTML合并,完成请求。

    【讨论】:

    • 这就是我的答案。如果您使用模板系统(如 Java Server Faces),它的效果会更好。将一些结果文本放入请求属性中,然后分派到通用模板。
    【解决方案2】:

    这正是MVC 模式解决的问题。

    您在 Controller(简单的 Java 类或 Servlet)中执行所有复杂逻辑,然后将数据传递给 View(JSP、Velocity、Freemarker,任何可以处理数据并制作 HTML 的东西)。

    有几种 MVC for Java 最流行的实现是 Spring MVCStruts。或者,您可以将 servlet 用于所有逻辑,然后手动将请求转发到 JSP 进行处理:

    request.getRequestDispatcher("/index.jsp").forward(request,response);
    

    【讨论】:

      【解决方案3】:

      如果您正在寻找将 java 代码与演示文稿完全分离的最佳实践,您不妨使用 MVC 框架(Spring MVC 或 Struts 是众所周知的示例),它可以帮助您彻底分离:

      • 视图层 (JSP)
      • 控制器层
      • 服务层
      • 域对象
      • 持久层

      可能很难开始,但你会通过官方网站和谷歌找到很好的教程。

      如果您只想使用 servlet 和 JSP,一般规则是在 servlet 中包含所有逻辑和 Java 代码,并且这些 servlet 只需转发到将执行视图部分的 JSP 页面。然后通过请求属性(当然还有会话和应用程序上下文属性)进行通信。

      祝你好运……

      【讨论】:

        【解决方案4】:

        要管理一些java代码,你可以使用Scriptlet

        在其他答案中也提到,可以使用jsp:forwardresponse.sendRedirect 调用网页。

        另见What is the difference between jsp:forward and response.sendRedirect

        【讨论】:

          【解决方案5】:

          我不确定您在哪里听说在 HTML(JSP) 文件中包含 Java 代码是不好的做法,但为了拥有一个动态数据驱动的网站,您将在 HTML(JSP) 中使用 Java。请记住,您的所有前端设计都将使用 JSP 在 HTML 中进行,您处理请求和重定向器以及传递数据的所有逻辑都将使用 Java 在 servlet 中进行管理。

          您的 servlet 可以将数据(无论是来自数据库还是其他数据源)传递到前端,而您的 JSP 只会帮助显示该数据。它被称为 JSP 是有原因的。你可以在里面写Java。

          用 Java 设计网站的最佳方法是使用 MVC 模式,因为它有助于分离网站的所有核心功能,并且可以轻松扩展和管理。

          你有任何代码可以显示你到目前为止所做的事情吗?

          【讨论】:

            猜你喜欢
            • 2010-09-15
            • 2017-07-06
            • 2014-12-26
            • 2013-03-11
            • 2010-09-28
            • 2014-01-25
            • 1970-01-01
            • 2016-07-26
            • 1970-01-01
            相关资源
            最近更新 更多