法拉利458什么时候停产:从数据库中读出图片并显示的示例代码
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 04:42:26
CODE:
< !-- -- -- -- -- -- -- -- -- -- -- -- -- --servlet-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -->
package Photo;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.sql.*;
/**
*Title:
*Description:
*Copyright: Copyright (c) 2002
*Company:
* @author unascribed
* @version 1.0
*/
public class ShowImage extends HttpServlet {
private static final String CONTENT_TYPE = "image/*";
/**
* 定义数据库连接字符串,jdbc.odbc桥
*/
private String driver_class = "oracle.jdbc.driver.OracleDriver";
private String connect_string =
"jdbc:oracle:thin:xxw/xxw@192.168.1.50:1521:ORCL";
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
/********************************************
* 定义应用变量
******************************************/
private String SQLString = ""; //定义查询语句
public String M_EorrMenage = ""; //定义错误信息变量
private InputStream in = null; //定义输入流
private int len = 10 * 1024 * 1024; //定义字符数组长度
//Initialize global variables
public void init() throws ServletException {
/**
* 连接数据库
*/
try {
Class.forName(driver_class);
} catch (java.lang.ClassNotFoundException e) {
//异常
System.err.println("databean():" + e.getMessage());
}
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
//在数据库中的照片的ID
int PHOTOID = 0;
/*********************************************
* 接受上文传递的图片ID号
* 上文传输文件名称为photoid
*********************************************/
try {
PHOTOID = Integer.parseInt(request.getParameter("photoid"));
SQLString = "select * from xxw_photo where p_id=" + PHOTOID;
} catch (Exception e) {
e.printStackTrace();
response.setContentType("text/html; charset=gb2312");
M_EorrMenage = "请输入图片ID号";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
out.println("<%@ page contentType=‘text/html; charset=gb2312‘ %>");
out.println("");
out.println("id ");
out.println("");
out.println("" + M_EorrMenage + "
");
out.println("");
}
/*****************************************************
* 执行查询语句
*****************************************************/
try {
conn = DriverManager.getConnection(connect_string);
stmt = conn.createStatement();
rs = stmt.executeQuery(SQLString);
} //try
catch (SQLException ex) {
System.err.println("aq.executeUpdate:" + ex.getMessage());
M_EorrMenage = "对不起,数据库无法完成此操作!";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
response.setContentType("text/html; charset=gb2312");
out.println("");
out.println("no_database ");
out.println("");
out.println("" + M_EorrMenage + "
");
out.println("");
}
/*********************************************
* 将图片流读入字符数组中,并显示到客户端
********************************************/
try {
if (rs.next()) {
in = rs.getBinaryStream("photo");
response.reset(); //返回在流中被标记过的位置
response.setContentType("image/jpg"); //或gif等
// int len=in.available();//得到文件大小
OutputStream toClient = response.getOutputStream();
byte[] P_Buf = new byte[len];
int i;
while ((i = in.read(P_Buf)) != -1) {
toClient.write(P_Buf, 0, i);
}
in.close();
toClient.flush(); //强制清出缓冲区
toClient.close();
} else {
M_EorrMenage = "无此图片!";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
response.setContentType("text/html; charset=gb2312");
out.println("");
out.println(
"this photo isn‘t have ");
out.println("");
out.println("" + M_EorrMenage + "
");
out.println("");
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
M_EorrMenage = "无法读取图片!";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
response.setContentType("text/html; charset=gb2312");
out.println("<%@ page contentType=‘text/html; charset=gb2312‘ %>");
out.println("");
out.println("no photo ");
out.println("");
out.println("" + M_EorrMenage + "
");
out.println("");
}
}
//Clean up resources
public void destroy() {
try {
conn.close();
} catch (SQLException e) {
System.err.println("aq.executeUpdate:" + e.getMessage());
M_EorrMenage = "对不起,数据库无法完成此操作!";
}
}
}
"> |
注:此程序对于从数据库读取图片后写入文件请参考代码者留意 整理发布:独孤求胜 umbrella
文章回复:
Re:从数据库中读出图片并显示的示例代码作者:Cable Fan 发表于:2005-10-11 20:33 通过Email跟作者联系
谢谢作者,作者只是想讲解一个技术,并不是论方法好坏.
Re:从数据库中读出图片并显示的示例代码
作者:青菜虫 发表于:2005-05-24 08:40 通过Email跟作者联系
我想如果是存入地址的话,是不是不是在本地上传的图片会访问不到啊。还有,我怎么没有看明白怎么样从网页中显示出来的啊。
Re:从数据库中读出图片并显示的示例代码
作者:tony 发表于:2005-02-16 16:00 通过Email跟作者联系
我和Demon 有同样的疑问----为什么把图片直接放到数据库中?为什么不存入地址,然后从数据库读出图片地址就好啊!
Re:从数据库中读出图片并显示的示例代码
作者:David 发表于:2004-12-16 19:59 通过Email跟作者联系
发自内说一句 THANK YOU VERY MUCH!!
感谢您的帮助!!
Re:从数据库中读出图片并显示的示例代码
作者:Demon 发表于:2004-08-14 16:14 通过Email跟作者联系
为什么把图片直接放到数据库中?为什么不存入地址,然后从数据库读出图片地址就好啊!
CODE:
< !-- -- -- -- -- -- -- -- -- -- -- -- -- --servlet-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -->
package Photo;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.sql.*;
/**
*Title:
*Description:
*Copyright: Copyright (c) 2002
*Company:
* @author unascribed
* @version 1.0
*/
public class ShowImage extends HttpServlet {
private static final String CONTENT_TYPE = "image/*";
/**
* 定义数据库连接字符串,jdbc.odbc桥
*/
private String driver_class = "oracle.jdbc.driver.OracleDriver";
private String connect_string =
"jdbc:oracle:thin:xxw/xxw@192.168.1.50:1521:ORCL";
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
/********************************************
* 定义应用变量
******************************************/
private String SQLString = ""; //定义查询语句
public String M_EorrMenage = ""; //定义错误信息变量
private InputStream in = null; //定义输入流
private int len = 10 * 1024 * 1024; //定义字符数组长度
//Initialize global variables
public void init() throws ServletException {
/**
* 连接数据库
*/
try {
Class.forName(driver_class);
} catch (java.lang.ClassNotFoundException e) {
//异常
System.err.println("databean():" + e.getMessage());
}
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
//在数据库中的照片的ID
int PHOTOID = 0;
/*********************************************
* 接受上文传递的图片ID号
* 上文传输文件名称为photoid
*********************************************/
try {
PHOTOID = Integer.parseInt(request.getParameter("photoid"));
SQLString = "select * from xxw_photo where p_id=" + PHOTOID;
} catch (Exception e) {
e.printStackTrace();
response.setContentType("text/html; charset=gb2312");
M_EorrMenage = "请输入图片ID号";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
out.println("<%@ page contentType=‘text/html; charset=gb2312‘ %>");
out.println("");
out.println("");
out.println("");
out.println("" + M_EorrMenage + "
");
out.println("");
}
/*****************************************************
* 执行查询语句
*****************************************************/
try {
conn = DriverManager.getConnection(connect_string);
stmt = conn.createStatement();
rs = stmt.executeQuery(SQLString);
} //try
catch (SQLException ex) {
System.err.println("aq.executeUpdate:" + ex.getMessage());
M_EorrMenage = "对不起,数据库无法完成此操作!";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
response.setContentType("text/html; charset=gb2312");
out.println("");
out.println("");
out.println("");
out.println("" + M_EorrMenage + "
");
out.println("");
}
/*********************************************
* 将图片流读入字符数组中,并显示到客户端
********************************************/
try {
if (rs.next()) {
in = rs.getBinaryStream("photo");
response.reset(); //返回在流中被标记过的位置
response.setContentType("image/jpg"); //或gif等
// int len=in.available();//得到文件大小
OutputStream toClient = response.getOutputStream();
byte[] P_Buf = new byte[len];
int i;
while ((i = in.read(P_Buf)) != -1) {
toClient.write(P_Buf, 0, i);
}
in.close();
toClient.flush(); //强制清出缓冲区
toClient.close();
} else {
M_EorrMenage = "无此图片!";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
response.setContentType("text/html; charset=gb2312");
out.println("");
out.println(
"");
out.println("");
out.println("" + M_EorrMenage + "
");
out.println("");
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
M_EorrMenage = "无法读取图片!";
M_EorrMenage =
new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
response.setContentType("text/html; charset=gb2312");
out.println("<%@ page contentType=‘text/html; charset=gb2312‘ %>");
out.println("");
out.println("");
out.println("");
out.println("" + M_EorrMenage + "
");
out.println("");
}
}
//Clean up resources
public void destroy() {
try {
conn.close();
} catch (SQLException e) {
System.err.println("aq.executeUpdate:" + e.getMessage());
M_EorrMenage = "对不起,数据库无法完成此操作!";
}
}
}
<%
int i=1;
while(i<3){
%>
<%
i++;
}
%>
注:此程序对于从数据库读取图片后写入文件请参考代码者留意
showimage?photoid="">
<%
i++;
}
%>
注:此程序对于从数据库读取图片后写入文件请参考代码者留意