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