通过JSP显示BLOB(图像)

2024-06-25

我有一个代码来显示员工图表。

数据(姓名、电话、照片等)存储在SQLServer中并通过JSP显示。 显示数据正常,但图像 .jpg(存储在 IMAGE=BLOB 列中)除外。

顺便说一句,我已经显示了图像(请参见下面的代码),但我不知道如何将其放在 .css 中定义的区域中(也请参见下面的代码),因为图像通过了resultSet 被加载到浏览器的整个页面中。

有谁知道如何“框定”图像?

<%
Connection con = FactoryConnection_SQL_SERVER.getConnection("empCHART");
Statement stSuper = con.createStatement();
Statement stSetor = con.createStatement();

Blob image = null;
byte[] imgData = null;

ResultSet rsSuper = stSuper.executeQuery("SELECT * FROM funChart WHERE dept = 'myDept'");

if (rsSuper.next()) {
image = rsSuper.getBlob(12);
imgData = image.getBytes(1, (int) image.length());
response.setContentType("image/gif");
OutputStream o = response.getOutputStream();
//o.write(imgData); // even here we got the same as below.
//o.flush();
//o.close();

--[...]

<table style="margin: 0px; margin-top: 15px;">
<tr>
<td id="photo">
<img title="<%=rsSuper.getString("empName").trim()%>" src="<%= o.wite(imageData); o.flush(); o.close(); %>" />
</td>
</td>

<td id="empData">
<h3><%=rsSuper.getString("empName")%></h3>
<p><%=rsSuper.getString("Position")%></p>
<p>Id:<br/><%=rsSuper.getString("id")%></p>
<p>Phone:<br/><%=rsSuper.getString("Phone")%></p>
<p>E-Mail:<br/><%=rsSuper.getString("Email")%></p>
</td>
</table>

这是应该构成图像的片段:

#photo
{
    padding: 0px;
    vertical-align: middle;
    text-align: center;
    width: 170px;
    height: 220px;
}

提前致谢 !


你在这里犯了一些根本性的错误。这<img src>必须指向 URL,不包含图像的二进制内容。 JSP 页面本身的内容类型不应设置为image/gif。应保留默认值text/html。网络服务器并不应该像您所期望的那样在 HTML 结果中包含具体图像。网络浏览器根据在中找到的 URL 单独下载图像src属性,然后相应地呈现它们。

最简单的方法是创建一个单独的 servlet,将图像从数据库流式传输到响应正文。您可以通过请求参数或路径信息来唯一标识图像。这是一个使用请求参数的示例:

<img src="imageServlet?id=<%=rsSuper.getString("id")%>" />

The doGet()那么方法应该基本上执行这项工作:

String id = request.getParameter("id");

// ...

InputStream input = resultSet.getBinaryStream("imageColumnName");
OutputStream output = response.getOutputStream();
response.setContentType("image/gif");
// Now write input to output the usual way.

无关针对具体问题,使用小脚本十年来官方强烈反对这种方式。也许您正在阅读完全过时的书籍/教程,或者正在维护一个古老的 JSP Web 应用程序。对于一些见解,另请参阅以下问题的答案以获得一些提示:

  • 如何避免JSP文件中出现Java代码? https://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files
  • 使用 MVC 和 DAO 模式在 JSP 页面中的 HTML 中显示 JDBC 结果集 https://stackoverflow.com/questions/5003142/jsp-using-mvc-and-jdbc
  • 如何在 JSP 页面中检索并显示数据库中的图像? https://stackoverflow.com/questions/2340406/how-to-retrieve-and-display-images-from-a-database-in-a-jsp-page
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过JSP显示BLOB(图像) 的相关文章

随机推荐

  • Simpson 的 Thrust 集成代码在两台使用 NVC++ 的机器上输出不同的结果

    我写了一个数值积分代码 include
  • 如何为Android编译C++14代码?

    是否可以使用 ndk10d 为 Android 编译 C 14 源代码 我尝试过 g 和 clang 编译器 但似乎 std c 14 std c 1y标志不起作用 如果我使用c static作为我的 APP STL 我收到以下错误 Use
  • 在 Go 中传递任意函数作为参数

    我正在尝试扩展我对 Go 函数指针的了解 并且我有一个问题 在 Go 中将函数作为参数传递可以做什么 不可以做什么 假设我想写一个decorator 可以包装任何现有函数的函数 为简单起见 我们将其限制为仅接受一个参数并仅返回一个值的函数
  • 函数指针有什么意义?

    我很难看出函数指针的实用性 我想它在某些情况下可能有用 毕竟它们存在 但我想不出使用函数指针更好或不可避免的情况 您能否举一些函数指针 在 C 或 C 中 的良好使用示例 大多数例子归结为回调 你调用一个函数f 传递另一个函数的地址g an
  • 如何最好地开发网络爬虫

    我习惯于创建一些爬虫来编译信息 当我访问一个网站时 我需要这些信息 我会启动一个专门针对该网站的新爬虫 大部分时间使用 shell 脚本 有时使用 PHP 我做的方法是用一个简单的for要迭代页面列表 awget下载它并sed tr awk
  • TypeORM 不创建表、列等

    我已经建立了一个带有 typeorm 的系统 https github com typeorm typeorm https github com typeorm typeorm 和 NestJs https github com nestj
  • 使用 Firebase Hosting 如何关闭捆绑和缩小?

    我很高兴能够如此快速地将我的 AngularJS 和 Firebase 应用程序部署到 Firebase 托管 但似乎本地 CSS 和 JavaScript 文件在执行 firebase 部署过程中被捆绑和缩小 我想在部署后调试 JavaS
  • 如何在Java中裁剪图像的某些区域?

    我正在尝试执行以下代码 private void crop HttpServletRequest request HttpServletResponse response int x 100 int y 100 int w 3264 int
  • 设置不可调整大小的 GridViewColumn

    我在 C WPF 应用程序中使用 ListView 和 GridViewColumn 对于某些列 我使用可见性管理器 this one https stackoverflow com a 9634769 6479770 但是 当第 1 列和
  • 在不使用PrepareForSegue的情况下在segue之间传递数据

    我正在使用情节提要创建一个用户设置帐户 分 5 个步骤 每个步骤都有一个 ViewController 1 输入姓名 联系人等 2 导入照片 3 输入等 4 更多输入 5 确认页面 如果用户单击 确认 gt 获取所有输入并上传到解析 当我在
  • 未调用[super方法]时发出警告

    不使用 ARC 时 如果未在 dealloc 方法中调用 super dealloc 您会收到警告 我正在尝试实现与经常被子类化的类类似的东西 以在实现子类的人不调用 super 时警告他们 有任何想法吗 llvm的最新版本添加了一个属性
  • JavaFX:使用 PathTransition 作为绘图笔的动画

    示例代码 node Rectangle rect new Rectangle 0 0 20 20 path Text text TextBuilder create text J a v a F X R o c k s font new F
  • 在Python中扁平化复杂的目录结构

    我想将文件从复杂的目录结构移动到一个地方 例如我有这么深的层次结构 foo foo2 1 jpg 2 jpg 我希望它是 1 jpg 2 jpg 我当前的解决方案 def move destination for removal os pa
  • JAX-B - 如何将模式元素映射到现有的 Java 类 [重复]

    这个问题在这里已经有答案了 可能的重复 jaxb xjc 映射到现有域对象 https stackoverflow com questions 10420137 jaxb xjc mapping to existing domain obj
  • 如何让 gulp-typescript 输出到与源文件相同的目录?

    我有以下管道 function typescripts return gulp src paths watchedFiles ts pipe cached typescripts pipe plumber pipe addsrc paths
  • 您使用 Attach() 或按名称或切片调用变量吗?

    许多介绍 R 的书籍和指南都是从附加一个 R 语言的实践开始的 data frame这样您就可以通过名称调用变量 我一直发现用以下方式调用变量是有利的 符号或方括号切片 2 这样我就可以使用多个data frames 而不混淆它们和 或使用
  • StringPiece/StringRef 习惯用法没有更流行有什么原因吗?

    从文档中Chromium源代码中的StringPiece类 http src chromium org viewvc chrome trunk src base string piece h view markup A string lik
  • 强/弱/保留/__unsafe_unretained/分配

    合成属性的属性 保留 分配 保留 它被保留 旧值被释放并被分配 分配 仅分配 所有权财产 iOS5 强 弱 IOS4 保留 unsafe unretained 强 iOS4 保留 我是所有者 你不能释放它 在瞄准之前 保留 弱 iOS 4
  • Selenium 2.0b3 和 IE9/Firefox 4

    在看到 Selenium 2 0b3 现在可以与 Firefox 4 和 IE9 配合使用的公告后 我购买了 Selenium 2 0b3 不幸的是 我在 2 0b3 之前遇到了同样的问题 我在 IE 中找不到元素 完全相同的测试在 IE8
  • 通过JSP显示BLOB(图像)

    我有一个代码来显示员工图表 数据 姓名 电话 照片等 存储在SQLServer中并通过JSP显示 显示数据正常 但图像 jpg 存储在 IMAGE BLOB 列中 除外 顺便说一句 我已经显示了图像 请参见下面的代码 但我不知道如何将其放在