http://www.code-labs.com/project/projectinfo.php?id=44
http://www.yesky.com/20000927/118356.shtml
http://www.yesky.com/20000927/118356.shtml
解决方案 »
- 请教一个struts2中struts.xml的配置问题,谢谢
- jsf找不到页面,出404错误
- 在jdk1.6中能不能自定义的javascript对像转换成java对像
- spring中定时任务的问题
- EJB3.0有什么动人的地方?!
- 新人求助,如何给指定的<bean />添加自定义的aop?
- 关于strutstest的问题?
- struts问题,真不知道哪里出错了
- J2EE客户端如何运行?
- ScheduledExecutor定时调度的疑问
- .jar 文件 能不能解压呀?
- 大伙救命阿,我用j2ee的Application deployment打包javabean以及打包客户程序,老是不出现在右边树中的?
(文/邵望)
大体思路
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() {
}
}