Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP-连接到数据库_Java_Jsp_Jdbc_Web - Fatal编程技术网

Java JSP-连接到数据库

Java JSP-连接到数据库,java,jsp,jdbc,web,Java,Jsp,Jdbc,Web,我正在学习如何用Java编写网站,我的问题是连接数据库的正确方式是什么 在我看来,从JSP级别连接到数据库(正如web上的许多教程所建议的那样)是一个非常糟糕的主意,因为JSP应该只用于视图,而不用于逻辑 我应该创建一个类来从数据库中获取数据吗?然后用“useBean”标记初始化它?如果数据库连接失败,我应该如何处理异常?我很了解JavaSE,但在JavaEE中我是一个完全的初学者,所以任何建议和示例代码都会非常有用。你的直觉是正确的。如果可能的话,您不应该直接从JSP连接到数据库。大多数程序由

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

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


我应该创建一个类来从数据库中获取数据吗?然后用“useBean”标记初始化它?如果数据库连接失败,我应该如何处理异常?我很了解JavaSE,但在JavaEE中我是一个完全的初学者,所以任何建议和示例代码都会非常有用。

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

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

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

然后是用户界面层,它准备JSP中使用的信息,进行JSP无法完成的转换,过滤掉不需要的信息,等等。再一次,它不知道数据来自何处,它只是从服务层获取数据

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


请注意,实际上并不需要构建DAO层,像JPA、Hibernate或Spring Data这样的系统可以生成大部分DAO层。

无论同义词表_rex说什么都是正确的

但我只是多给一些层次

用户界面(您的jsp/html)

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

  • 您可以获得更多信息

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