struts 中jsp 页面从数据库中取得图片的问题
我用了struts标签库
<html:img height="98%" alt="BookCover" src="photoAction.do" paramId="bookName" paramName="bookForm" paramProperty="bookName" width="98%" border="0" align="center" />
但是却取不到图片到页面
我的photoAction是:
package book;
import oracle.sql.*;
import book.*;
import org.apache.cocoon.components.language.markup.xsp.EsqlQuery;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import javax.servlet.jsp.jstl.sql.Result;
import oracle.jdbc.driver.*;
import java.sql.*;
import java.io.*;
import oracle.jdbc.driver.*;
import org.apache.struts.action.ActionForm;
import javax.servlet.ServletRequest;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class photoAction extends Action {
private static final String connTENT_TYPE = "image/gif";
private Result rs;
// private Connection conn =null;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
bookForm myForm = (bookForm) form;
response.setContentType(connTENT_TYPE);
//GET PARAM employeeId
ServletOutputStream out = response.getOutputStream();
BufferedInputStream in = null;
AccessImgByDB.insertImg(myForm);
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@192.168.0.3:1521:EGOV4JS";
Connection conn= DriverManager.getConnection(url, "BOOKMAN", "BOOKMAN");
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
/* 查询BLOB对象 */
Statement stmt = conn.createStatement();
String sql = "SELECT BOOKIMG FROM BOOK WHERE BOOKNAME='";
sql += myForm.getBookName();
sql += "'";
ResultSet rs = stmt.executeQuery(sql);
rs.next();
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BOOKIMG");
in = new BufferedInputStream(blob.getBinaryStream());
System.out.println(in + " get end");
}
catch (Exception ex)
{
ex.printStackTrace();
}
if (in!=null){
try {
int len;
byte buf[] = new byte[4096];
while ( (len = in.read(buf, 0, 4096)) != -1) {
out.write(buf, 0, len);
}
}
catch (IOException ioe) {
ioe.printStackTrace();
}
}
return null;
}
}
请问这样才能显示出来