⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0125.htm

📁 JspServlet教程专栏 对javaservlet讲述的非常详细
💻 HTM
字号:
<html>

<head>
<title>新时代软件教程:操作系统 主页制作 服务器 设计软件 网络技术 编程语言 文字编辑</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋体}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1  {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
    <p align="center"><big><strong>从数据库中读取并生成图片的Servlet</strong></big></p>

<div align="right">(文/邵望)</div>

<pre>
大体思路 
1)创建ServletOutputStream对象out,用于以字节流的方式输出图像 
2)查询数据库,用getBinaryStream方法返回InputStream对象in 
3)创建byte数组用作缓冲,将in读入buf[],再由out输出 
  
注:下面的例程中数据库连接用了ConnectionPool,以及参数的获得进行了预处理 
  
package net.seasky.music; 
  
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*; 
import java.sql.*; 
import net.seasky.util.*; 
import net.seasky.database.DbConnectionManager; 
  
public class CoverServlet extends HttpServlet { 
  private static final String CONTENT_TYPE = "image/gif"; 
  public void init(ServletConfig config) throws ServletException { 
    super.init(config); 
  } 
  
  public void doGet(HttpServletRequest request, HttpServletResponse response 
) throws ServletException, IOException { 
    response.setContentType(CONTENT_TYPE); 
    int albumID; 
    ServletOutputStream out = response.getOutputStream(); 
    try { 
      albumID = ParamManager.getIntParameter(request,"albumID",0); 
    } 
    catch (Exception e) { 
      response.sendRedirect("../ErroePage.jsp"); 
      return; 
    } 
    try { 
      InputStream in=this.getCover(albumID); 
      int len; 
      byte buf[]=new byte[1024]; 
      while ((len=in.read(buf,0,1024))!=-1) { 
        out.write(buf,0,len); 
      } 
    } 
    catch (IOException ioe) { 
      ioe.printStackTrace() ; 
    } 
  } 
  
  private InputStream getCover(int albumID) { 
    InputStream in=null; 
    Connection cn = null; 
    PreparedStatement pst = null; 
    try { 
      cn=DbConnectionManager.getConnection(); 
      cn.setCatalog("music"); 
      pst=cn.prepareStatement("SELECT img FROM cover where ID =?"); 
      pst.setInt(1,albumID); 
      ResultSet rs=pst.executeQuery(); 
      rs.next() ; 
      in=rs.getBinaryStream("img"); 
    } 
    catch (SQLException sqle) { 
      System.err.println("Error in CoverServlet : getCover()-" + sqle); 
      sqle.printStackTrace() ; 
    } 
    finally { 
      try { 
        pst.close() ; 
        cn.close() ; 
      } 
      catch (Exception e) { 
        e.printStackTrace(); 
      } 
    } 
    return in; 
  } 
  
  public void destroy() { 
  } 
} 
</pre>

  </table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -