通过Java向JSP页面生成图片
public class ShowImage extends HttpServlet {
private static final Logger log = Logger.getLogger(ShowImage.class);
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
Connection con=null;
ResultSet rs=null;
Statement st=null;
try {
ApplicationContext ctx =WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
DataSource ds = (DataSource) ctx.getBean("dataSource");
con = ds.getConnection();
st= con.createStatement();
String sql = "";
if(null!=req.getParameter("tableName")&&req.getParameter("tableName").equals("ecc_oc.tuan_pic")){
sql ="select PIC_ID,PIC_ID,DATA from ecc_oc.tuan_pic where PIC_ID="+ Integer.parseInt((req.getParameter("pic_id")==null)?"-1":req.getParameter("pic_id"));
}//当是图案代码 要显示图形而来
else if(null != req.getParameter("fromTuan") && !req.getParameter("fromTuan").equals("") && req.getParameter("fromTuan").equals("design")){
sql = "select PIC_ID,DATA_SOURCE,DATA from ecc_oc.tuan_pic where PIC_ID = "+ Integer.parseInt(req.getParameter("pic_id")==null?"0":req.getParameter("pic_id"));
}
else {
sql ="select pic_data_id, pic_id, data from ecc_oc.picture_data where pic_id="+ Integer.parseInt(req.getParameter("pic_id"));
}
// System.err.println("show img: " + sql);
rs= st.executeQuery(sql);
Blob bl = null;
InputStream ins = null;
while (rs.next())
{
bl = rs.getBlob(3);
ins = bl.getBinaryStream();
}
if (ins != null)
{
OutputStream out = res.getOutputStream();
byte buffer[] = new byte[512];
int len = 0;
while ((len = ins.read(buffer)) != -1)
{
out.write(buffer, 0, len);
}
ins.close();
out.close();
}
res.setContentType("image/*;charset=GB2312");
rs.close();
st.close();
con.close();
} catch (Exception ex)
{
log.error("",ex);
}finally
{
try
{
if(rs!=null)rs.close();
if(st!=null)st.close();
if(!con.isClosed())con.close();
} catch (SQLException e)
{
log.error("",e);
}
}
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
doGet(req, res);
}
}
页面上显示图片的方法
<img src="<%=request.getContextPath()%>/ShowPic?pic_id=???此处是图片在数据库中存储的ID??? />