【问题标题】:JSP - connecting to a databaseJSP - 连接到数据库
【发布时间】:2013-08-05 07:57:25
【问题描述】:

我正在学习如何用 Java 编写网站,我的问题是连接数据库的正确方法是什么?

在我看来,从 JSP 级别连接到数据库(正如网络上的许多教程所建议的那样)是一个非常糟糕的主意,因为 JSP 应该只用于视图,而不是逻辑。

我应该创建一个类来从数据库中获取数据吗?并使用“useBean”标签以某种方式初始化它?如果数据库连接失败,我应该如何处理异常?我很了解 Java SE,但在 Java EE 方面我是一个完整的初学者,所以任何建议和示例代码都会非常有帮助。

【问题讨论】:

    标签: java jsp jdbc web


    【解决方案1】:

    你的直觉是对的。如果可能的话,您不应该从 JSP 直接连接到数据库。大多数程序由几个层组成。例如:

    您拥有 DAO(数据访问对象),它有一个职责:从数据库中获取数据。它不关心这些数据会发生什么,但它会检索它。

    然后你就有了服务层,它负责业务逻辑、计算等。它不关心数据来自哪里,它只是假设数据在那里(但它来自 dao)

    然后你有一个用户界面层,它准备要在 JSP 中使用的信息,进行 JSP 不能做的转换,过滤掉不需要的信息,等等。再一次,它不知道在哪里数据来自哪里,它只是从服务层获取。

    我建议您像这样构建您的应用程序。它也使测试变得更容易,因为您只需要测试 DB 而无需关心 UI,或者只测试 UI 而无需关心 DB。大多数严肃的应用程序都是这样的结构,尽管通常涉及更多的层。

    请注意,实际构建 DAO 层并不是必需的,JPA 或 Hibernate 或 Spring Data 等系统可以生成大部分。

    【讨论】:

    • 非常感谢您的评论。它解释了我很多。我会像这样建立我的网站。我只有两个问题:首先是关于数据库连接异常处理。 DAO 方法应该抛出异常(以便可以从业务级别处理它们)还是捕获它们?第二个问题:在 servlet 中执行业务逻辑然后从它重定向到正确的 JSP 页面是一种好习惯吗?
    • 好吧,无论如何,我删除了我的帖子,对于初学者来说,开始学习 Spring/DAO/Hibernate 是一个很好的挑战。这种技术适用于具有高数据交换的“大”站点。祝你好运
    • 您不必担心 DAO 异常。如果您的数据库已关闭或不可用,则您的应用程序可能将不再执行任何操作,并且异常类型并不真正相关。您可以捕获异常以便能够向用户显示“网站已关闭”消息,但除此之外,您几乎无能为力。
    【解决方案2】:

    thesaurier_rex 说的都是对的。

    但我只是提供了更多的层次

    UI(你的 jsp/html)

    1. 控制器层()
    2. 服务层(实际操作)
    3. Dao 层(将与数据库对话)
    4. 表示层(模型数据)

    您可以获取更多信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-07
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多