【问题标题】:Show images from inputsstream in xhtml page在 xhtml 页面中显示来自 inputstream 的图像
【发布时间】:2012-08-15 12:10:00
【问题描述】:

我需要显示一些查询表单数据库并放入输入流的图像。我的框架是 JSF,我知道通过使用 servlet,我可以显示它们。但问题是我的页面中有很多图像放入数据库,现在如果我想从数据库中选择每个图像并显示在我的 xhtml 页面中,需要很多查询。在一个托管bean中,所有图像都放入输入流列表中,我想将每个元素显示为页面中的图像。事实上,我的要求是从输入流中读取图像并显示在 xhtml 页面中。任何人都可以指导我吗?

【问题讨论】:

    标签: database image jsf servlets inputstream


    【解决方案1】:

    如果您使用的是 Richfaces,您可以使用 <ui:repeat> 来迭代您的图像列表并使用 <a4j:mediaoutput> 在您的 xhtml 上显示您的图像,example,另请参阅 How to use a4j:mediaOutput correctly 还有一个example

    【讨论】:

    • 我不使用richfaces。没有其他解决办法吗?
    【解决方案2】:

    现在,如果我想从数据库中选择每个图像并显示在我的 xhtml 页面中,则需要大量查询

    这究竟是如何形成问题的?你测量过性能吗? “大量查询”中的瓶颈真的吗?我真的不明白为什么会形成瓶颈。使用适当设计的数据模型应该会很快,一个自尊的 SQL 数据库就是为此目的而设计的。

    实际上你的瓶颈不是建立数据库连接的步骤吗?每一个查询都这样做,因为你没有使用连接池?如果是这样,那么是的,它的执行速度非常慢是可以理解的。建立一个数据库连接可能慢到 100~500 毫秒。这正是很久以前发明连接池的原因。然后,连接只会在“空闲时间”期间被初始化和清理,并以线程安全的方式共享/重用,因此从中获得连接的时间应该不超过 10 毫秒。

    如果您修复数据层以利用合适的连接池,那么您可以继续使用 已经适合特定工作的 servlet。

    【讨论】:

    • 你猜对了。我的应用程序中没有连接池,这是数据库瓶颈的原因。感谢您的关注。因此,如果我理解,没有办法为所有图像使用一个连接。对吗?
    • 连接池透明地处理。它会尽可能长时间地为不同的查询/事务重用一个连接。
    • 谢谢亲爱的 BalusC,我会修改与 DB 的连接
    猜你喜欢
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2019-09-22
    • 2019-05-23
    • 2012-07-10
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    相关资源
    最近更新 更多