create table image( content varchar(10) , image varchar(50) );
testimage.jsp
<%@ page contentType= "text/html;charset=gb2312"%>
<%@ page import= "java.sql.* " %>
<%@ page import= "java.util.* "%>
<%@ page import= "java.text.* "%>
<%@ page import= "java.io.* "%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<html>
<body>
<%Class.forName( "com.mysql.jdbc.Driver");
String url= "jdbc:mysql://localhost:3306/school";
Connection conn= DriverManager.getConnection(url,"root","root");
String sql = "select image from image where content='1.jpg'";
Statement stmt=null;
ResultSet rs=null;
response.setContentType("application/jpg");
response.setHeader("Content-disposition","attachment;filename=sample.jpg");
out.clearBuffer();
out = pageContext.pushBody();
ServletOutputStream sout = response.getOutputStream();
BufferedInputStream buf=null;
FileInputStream in=null;
File file=null;
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
String path=rs.getString("image");
file=new File(path);
in=new FileInputStream(file);
buf=new BufferedInputStream(in);
int bytes=0;
while((bytes=in.read())!=-1){
sout.write(bytes);
}
}
conn.close();
stmt.close();
}catch(SQLException e){
System.out.println(e);
}
catch(IOException e){
System.out.println("Ing!");
}finally{
if(sout!=null)
sout.close();
if(buf!=null)
buf.close();
}
%>
</body>
</html>
testimage.html:
<HTML> <HEAD>
<TITLE>Image File</TITLE>
<meta http-equiv= "Content-Type" content= "text/html;charset=gb2312">
</HEAD>
<BODY>
<img src="http://localhost:8080/ServletTest/testimage.jsp" />
</BODY>
</HTML>
本人亲测,可行!结果如上:
当然要完成一次插入多个图片也就好办了:(如下 ,完成插入4张图片)
数据库image内容:
------------------------------------
content image
------------------------------------
1.jpg C:\images\1.jpg
2.jpg C:\images\2.jpg
3.jpg C:\images\3.jpg
4.jpg C:\images\4.jpg
------------------------------------
<%@ page language="java" pageEncoding="gb2312" %>
<%@ page contentType="text/html;charset=gb2312" %>
<%request.setCharacterEncoding("gb2312");%>
<%@ page import="java.util.*,java.lang.*,java.sql.*" %>
<%@ page errorPage="error.html" %>
<html>
<head><meta http-equiv=Content-Type content="text/html;charset=gb2312"></head>
<body>
<%int i=1;
while(i<5){
String srcstring="http://localhost:8080"+request.getContextPath()+"/testimageout.jsp?id="+Integer.toString(i); %>
<img border="1" src="<%=srcstring %>" alt="ok" >
<%i++; }%>
</body></html>
这时只要在testimageout.jsp页面中获取一个参数即可:
String id=request.getParameter("id");
String sql = "select image from image where content like '"+id+"%'";
效果如下:

本文介绍了一个使用JSP从数据库检索并显示图片的示例。通过连接数据库并执行SQL查询,可以将图片路径提取出来,并利用Java IO操作读取图片文件,最终将其作为响应发送给客户端进行展示。
913

被折叠的 条评论
为什么被折叠?



