如何在jsp页面上显示mysql数据库中的图像和文本

时间:2014-05-06 05:06:34

标签: java jsp

我正在做一个Java Web应用程序,我需要同时从MySQL数据库显示图像和文本。请帮我在数据库的同一个“JSP”页面上显示图像和文本。我的图像在MySQL中存储为blob

2 个答案:

答案 0 :(得分:1)

您可以定义可以将图像发送给用户的servlet http://www.javatpoint.com/example-to-display-image-using-servlet

然后定义从blob检索图像 http://codeglobe.blogspot.com/2009/03/readwrite-blob-fromto-mysql-in-java_21.html

在您的jsp页面中,只需添加图片链接

即可
<img src="http://example.com/getImage?imageId=1234">

因此,当用户点击链接时,将调用您的servlet。 servlet从BLOB读取图像并将其发送给响应。

更新:

您还可以尝试http://www.roseindia.net/tutorial/java/jsp/jspdisplayblob.html

答案 1 :(得分:0)

这不是HTML的工作原理。

浏览器首先请求服务器为其提供所有文本内容。然后浏览器单独向服务器请求图像内容,js内容,css内容等。所以你不能写&#34;使用jsp在页面上显示图像,以及如何编写文本,表格等。图像需要有一个src&#34; URL&#34;。

如果图像内容来自数据库,那么URL需要是一个servlet。这基本上从DB获取图像,将其转换为流并发送回浏览器。

如果你绝对希望文本和图像来自同一个servlet,那么也许你可以使用请求参数......

这是一个示例servlet和html。看看你是否可以在项目中使用类似的风格

Servlet(从磁盘加载图像。更改代码以从DB加载)

@WebServlet("/Servlet2")
public class Servlet2 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String id = request.getParameter("id");
        if(id!=null && "1".equalsIgnoreCase(id)){
             response.setContentType("image/jpeg");
             response.getOutputStream().write( Files.readAllBytes(new File(getServletContext().getRealPath("****.jpg")).toPath()));
             response.getOutputStream().close();
        }else {
             response.getWriter().println("Sample text");
             response.getWriter().close();
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
            IOException {

    }
}

HTML(文本通过AJAX加载。如果需要,可以使用AJAX加载文本和图像)

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script>
function load()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("textDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","Servlet2?id=2",true);
xmlhttp.send();
}
</script>

</head>
<body onload="load()">
<div id="textDiv"></div>
<br/>
<input type="image" src="http://localhost:8080/ImageCanvas/Servlet2?id=1"/>
</body>
</html>