java – 通过JSP显示BLOB(image)
我有一个代码来显示雇员的图表.
数据(名称,电话,照片等)存储在SQLServer中并通过JSP显示. 顺便说一下,我已经显示了图像(见下面的代码),但是我不知道如何将它放在.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结果中是不正确的.这是webbrowser根据src属性中找到的URL单独下载图像,然后相应地呈现.
最简单的是创建一个单独的servlet,将图像从数据库流传输到响应体.您可以通过请求参数或路径信息唯一标识图像.这是一个使用request参数的例子: <img src="imageServlet?id=<%=rsSuper.getString("id")%>" /> 那么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. 与具体问题无关,十年来,以这种方式使用scriptlet正式强烈地不鼓励.也许你正在阅读完全陈旧的书籍/教程,或者正在维护一个古老的JSP Web应用程序.对于一些见解,请参阅以下问题的答案有一些提示: > How to avoid Java code in JSP files? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |