`
zhangfan822
  • 浏览: 254091 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

从数据库中读出图片并显示的示例代码

    博客分类:
  • java
阅读更多

从数据库中读出图片并显示的示例代码

<!--------servlet---------->

package Photo;
import javax.servlet. * ;
import javax.servlet.http. * ;
import java.io. * ;
import java.util. * ;
import java.lang. * ;
import java.sql. * ;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2002</p>
 * <p>Company: </p>
 * @author zhangfan
 * @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 = ""; //定义查询语句\\r
 public String M_EorrMenage = ""; //定义错误信息变量
 private InputStream in = null; //定义输入流\\r
 private int len = 10 * 1024 * 1024; //定义字符数组长度

 //Initialize global variables
 public void init()throws ServletException {
  /**
   * 连接数据库\\r
   */
  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("<html>");
   out.println("<head><title>id</title></head>");
   out.println("<body>");
   out.println("<p>" + M_EorrMenage + "</p>");
   out.println("</body></html>");

  }
  /*****************************************************
   * 执行查询语句\\r
   *****************************************************/
  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("<html>");
   out.println("<head><title>no_database</title></head>");
   out.println("<body>");
   out.println("<p>" + M_EorrMenage + "</p>");
   out.println("</body></html>");

  }
  /*********************************************
   * 将图片流读入字符数组中,并显示到客户端
   ********************************************/
  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(); //强制清出缓冲区\\r
    toClient.close();
   } else {
    M_EorrMenage = "无此图片!";
    M_EorrMenage =
     new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK");
    response.setContentType("text/html; charset=gb2312");
    out.println("<html>");
    out.println(
     "<head><title>this photo isn\'t have</title></head>");
    out.println("<body>");
    out.println("<p>" + M_EorrMenage + "</p>");
    out.println("</body></html>");
   }
   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("<html>");
   out.println("<head><title>no photo</title></head>");
   out.println("<body>");
   out.println("<p>" + M_EorrMenage + "</p>");
   out.println("</body></html>");
  }
 }

 //Clean up resources
 public void destroy() {
  try {
   conn.close();
  } catch (SQLException e) {
   System.err.println("aq.executeUpdate:" + e.getMessage());
   M_EorrMenage = "对不起,数据库无法完成此操作!";
  }
 }
}

 显示代码:

<!---------------------------显示---------------------------------------------->

<html>
	<head>
		<title>Untitled Document</title>
	</head>
	<body bgcolor="#FFFFFF" text="#000000">
		<table>
		<%
		int i=1;
		while(i<3){
		%>
		<tr> 
			<td colspan="3">
				<img border="1" alt=从数据库中读出图片并显示的示例代码 src="http://192.168.1.50:8100/ShowImage?photoid=<%=i%>">
			</td>
		</tr>
		<%
		i++;
		}
		%>
		</table>
	</body>
</html>

 

分享到:
评论
2 楼 ljh1060144965 2017-04-20  
[url]
引用
:P
[/url]
1 楼 海马欢动 2017-04-19  
  

相关推荐

    ASPAjax不刷新网页加载新闻列表示例代码

    Ajax无刷新加载新闻列表,新闻列表由ASP从Access数据库中读出,当前页面中,当鼠标滑向某链接时,会激活Ajax动作,读取对应的文章列表,本示例是学习Ajax技术的基础 ,对于Asp编程者应用ajax技术很有帮助作用。

    用C#操作Oracle数据库的连接

    证明能够从数据库读出对应的数据 private void buttonCheck_Click(object sender, EventArgs e) { OracleConnection connection = new OracleConnection(); connection.ConnectionString = "Data Source =

    WPF后台动态绑定ListView数据源

    WPF的ListView简易操作示例,如何在代码中按需设置数据源、追加行或列。一个简单的示例说明,便于了解基本应用,供有需要的进行学习。

    C# 读写二进制文件的一个示例

    C# 读写二进制文件的一个示例,演示如何以二进制方式写入文件,以二进制方式读出文件,下方框主要用来显示读取出来的二进制文件。C#新手朋友朋友们可拿去研究文件操作,应该有用哦。

    Tag Cloud jQuery标签云显示插件

    内容索引:脚本资源,Ajax/JavaScript,标签云,Tag jQuery标签云显示插件,Tag Cloud不能就是大家常说的标签云,它能将你网页上从数据库中读出的标签按字典排序,或者按照热门确定字体的大小和颜色。或是按你指定的...

    php中的字符编码转换函数用法示例

    一般来说,在网页程序中,尤其是涉及到数据库的读出过程中,往往最恼火的就是字符编码的问题,php4.0.6以上的版本提供了mb_convert_encoding 可以方便的转换编码。 具体如下: 复制代码 代码如下:&lt;?php /* ...

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    4-05.aspx 读取传递的Session值并显示。 4-06.aspx 使用Response对象的Write()方法。 4-07.aspx 使用Response对象的End()方法。 4-08.html 以post方式提交数据到4-08.aspx的表单。 ...

    PowerTalkBox即时通讯源码和应用

    在打上中文语言包,就可以帮您读出聊天中文内容。 客户端交互是使用WebService技术,WebService文件在源代码-&gt;Chat-&gt;PowerTalk-FetionInterFace.asmx,所以才配置PowerTalkClient.exe.config 本示例项目是单客服与多...

    PowerTalkBox即时通讯源码(改进版)

    在打上中文语言包,就可以帮您读出聊天中文内容。 客户端交互是使用WebService技术,WebService文件在源代码-&gt;Chat-&gt;PowerTalk-FetionInterFace.asmx,所以才配置PowerTalkClient.exe.config 本示例项目是单客服与多...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    在这里我要说明两点:1、我的示例文件总是有A和B分别是用C#和VB写的,演示的图片就用C#那一种的,都一样嘛,教程里面代码也是写两种用分割开,大家可以比较一下。2、我写教程的时候用的都是记事本来编写APS.NET大家...

    PowerTalkBox即时通讯源码(改进版).rar

    在打上中文语言包,就可以帮您读出聊天中文内容。 客户端交互是使用WebService技术,WebService文件在源代码-&gt;Chat-&gt;PowerTalk-FetionInterFace.asmx,所以才配置PowerTalkClient.exe.config 本示例项目是单客服与...

    Mysql子查询IN中使用LIMIT应用示例

    需求是这样的,我有3张表,infor信息表,mconfig物料配置表,maaply物料申请表,要求是读出申请表中哪些人申请哪些物料 于是我先是这样写的: 代码如下: SELECT infor.name,infor.phone,infor.add, mconfig.mname,...

    零基础学ASP.NET 2.0&源代码绝对完整版1

    4-05.aspx 读取传递的Session值并显示。 4-06.aspx 使用Response对象的Write()方法。 4-07.aspx 使用Response对象的End()方法。 4-08.html 以post方式提交数据到4-08.aspx的表单。 4-08.aspx ...

    PowerTalkBox即时通讯源码(改进版)下载

    在打上中文语言包,就可以帮您读出聊天中文内容。 客户端交互是使用WebService技术,WebService文件在源代码-&gt;Chat-&gt;PowerTalk-FetionInterFace.asmx,所以才配置PowerTalkClient.exe.config 本示例项目是单客服与多...

Global site tag (gtag.js) - Google Analytics