【问题标题】:Access the (Global) variable in JSP, Servlet for reducing database calls访问 JSP、Servlet 中的(全局)变量以减少数据库调用
【发布时间】:2012-02-16 05:36:43
【问题描述】:

当我在 J2EE 中开发 Web 应用程序时,我必须非常小心数据库调用。

我将图像存储在数据库(BLOB)中。

为了访问这些图像,我创建了一个 servlet 文件。

我将 id 作为GET 方法传递给该文件。

为了显示图像,我需要调用那个 servlet 文件。

但是当那个 servlet 文件进行另一个数据库调用时,我最关心的是。

例如:

如果在那个特定的 jsp 文件中,我想显示 3 行,我将进行 1 次调用以显示这些行,然后再进行 3 次调用以显示这些图像。

我有两个选择

  1. 创建一个全局变量并在 jsp 和 servlet 中访问该变量。
  2. 不创建全局变量,而是将数据库对象传递给会话变量。

但对我来说,两者都不好。 请提出一些建议。

【问题讨论】:

  • 我的问题是什么是解决问题的更好方法。意味着技术。

标签: database jsp servlets global-variables blob


【解决方案1】:

如果您担心数据库的负载,您应该避免在其中存储图像。相反,将图像存储在磁盘上,并将它们的路径存储在数据库中。

这样,当您需要在单个页面中显示三个图像时,您执行单个查询以获取三个图像的路径,并生成包含 3 个路径的 HTML 页面。

如果除了将图像作为 blob 存储在数据库中之外别无选择,并且如果您已经对应用程序进行了负载测试,并且表明从数据库中获取它们会导致严重的性能问题,那么请考虑使用一些应用程序缓存 (像 EHCache),从数据库中删除负载。您也可以一次从数据库中获取三张图像并将它们存储在会话中,但您必须找到一种方法来清理会话,否则您的应用程序的内存会快速攀升。

【讨论】:

  • 是的,我对将图像存储在数据库中也有点小心,我想要那个根目录,因为它很容易进行备份。这是我将图像存储在数据库中的唯一原因。而且我还认为将图像存储到会话中只是一种更好的方法。我只是说我们必须有更好的方法来解决这个问题。!
【解决方案2】:

而不是多次访问数据库。 只需编写一个查询,即可获得所需的所有行或所需的图像。 并使用 ArrayList 显示所有图像行 这将是一个更简单的方法:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-02
    • 2022-11-07
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多