Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在HTML和JSP代码中显示图像_Java_Jsp_Jdbc - Fatal编程技术网

Java 在HTML和JSP代码中显示图像

Java 在HTML和JSP代码中显示图像,java,jsp,jdbc,Java,Jsp,Jdbc,如何以HTML和JSP代码显示数据库中的图像?我用JSP编写了这段代码 <?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page language="java" %> <%@ page import="java.sql.*" %> &l

如何以HTML和JSP代码显示数据库中的图像?我用JSP编写了这段代码

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>MindDotEditor posted Data</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="robots" content="noindex, nofollow" />
        <link href="../sample.css" rel="stylesheet" type="text/css" />
        <link rel="shortcut icon" href="../fckeditor.gif" type="image/x-icon" />
    </head>
    <body>

<%
    String url = "jdbc:mysql://localhost:3306/sample";
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;
    String id = (String) session.getAttribute("id");
    int j = Integer.parseInt(id);

    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        con = DriverManager.getConnection(url,"root","root");
        stmt = con.createStatement();
        rs = stmt.executeQuery("SELECT Image_File FROM Images WHERE Image_id = '3' ");
        int i = 1;
        if(rs.next()) {
            Blob len1 = rs.getBlob("Image_File");
            int len = (int)len1.length();
            byte[] b = new byte[len];
            InputStream readImg = rs.getBinaryStream(1);
            int index = readImg.read(b, 0, len);
            System.out.println("index" +index);
            stmt.close();
            response.reset();
            response.setContentType("image/jpg");
            response.getOutputStream().write(b,0,len);
            response.getOutputStream().flush();
        }
    } catch(Exception ex) {
        out.println(ex);
    } finally {
        rs.close();
        stmt.close();
        con.close();
    }
%>

        <br>
        <center><input type="button" value="Print" onclick="window.print();return false;" /></center>
    </body>
</html> 

MindDotEditor发布数据


您必须使用另一种方法:

数据:[;base64],

确保对其进行base64编码。它不适用于ie6或ie7,但适用于所有其他浏览器

您必须使用另一种方法:

数据:[;base64],

确保对其进行base64编码。它不适用于ie6或ie7,但适用于所有其他浏览器。

HTML中的图像将使用
属性表示,该属性应指向返回图像的URL。在这种特殊情况下,该URL可以指向一个
Servlet
,该Servlet从某个数据源(例如,使用
FileInputStream
从本地磁盘文件系统,或使用
ResultSet#getBinaryStream()
从数据库获取图像的
InputStream
)并以通常的方式将其写入响应的
OutputStream

因此,您基本上需要更改HTML以包含以下内容:

<img src="images?id=1">
应该是这样

当然,我假设数据库中的
image
表已经有了(自描述性)列
content\u type
content\u length
file\u name
,否则您需要将第一列替换为
“image”
,将第二列保留(或替换为
Blob#length()
如果有问题的数据库支持它),并硬编码第三个数据库的(随机)名称


此类
ImageServlet
的另一个示例(略有不同,包括错误处理)可以在中找到。

HTML中的图像将使用
属性表示,该属性应指向返回图像的URL。在这种特殊情况下,该URL可以指向一个
Servlet
,该Servlet从某个数据源(例如,使用
FileInputStream
从本地磁盘文件系统,或使用
ResultSet#getBinaryStream()
从数据库获取图像的
InputStream
)并以通常的方式将其写入响应的
OutputStream

因此,您基本上需要更改HTML以包含以下内容:

<img src="images?id=1">
应该是这样

当然,我假设数据库中的
image
表已经有了(自描述性)列
content\u type
content\u length
file\u name
,否则您需要将第一列替换为
“image”
,将第二列保留(或替换为
Blob#length()
如果有问题的数据库支持它),并硬编码第三个数据库的(随机)名称

类似的
ImageServlet
的另一个示例(略有不同,包括错误处理)可以在中找到

Image image = imageDAO.find(Long.valueOf(request.getParameter("id")));

response.setContentType(image.getContentType());
response.setContentLength(image.getContentLength());
response.setHeader("Content-Disposition", "inline; filename=\"" + image.getFileName() + "\"");

BufferedInputStream input = null;
BufferedOutputStream output = null;

try {
    input = new BufferedInputStream(image.getInputStream());
    output = new BufferedOutputStream(response.getOutputStream());
    byte[] buffer = new byte[8192];
    int length;
    while ((length = input.read(buffer)) > 0) {
        output.write(buffer, 0, length);
    }
} finally {
    if (output != null) try { output.close(); } catch (IOException logOrIgnore) {}
    if (input != null) try { input.close(); } catch (IOException logOrIgnore) {}
}