访问JSP,Servlet中的(Global)变量以减少数据库调用

时间:2012-01-22 15:04:06

标签: database jsp servlets global-variables blob

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

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

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

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

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

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

例如:

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

我有2个选项

  1. 创建一个全局变量,并在jsp和servlet中访问该变量。
  2. 不是创建全局变量,而是将数据库对象传递给会话变量。
  3. 但对我来说两个都不好。 请建议一些事情。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

而不是多次点击数据库。 只需编写一个查询,您将获得所需的所有行或所需的图像。 并使用ArrayList显示所有图像行 这将是一个更容易的方法:)