1. DAO层
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
* @Title: getAlfterImgById
* @deprecated: 根据图像id查找二进制图像
* @param imageId
* 图像id
* @return byte[]
* @throws Exception
* @author
* @date 2014-11-5
*/
@Override
public Blob getAlfterImgById(String imageId) throws Exception {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// TODO 获取java.sql.Connection
conn = ...;
// ALFTER_IMG 在数据库中的类型为 BLOB, IMAGE_ID 为主键
String sql = "SELECT ALFTER_IMG FROM HW_IMAGE WHERE IMAGE_ID = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, imageId);
rs = ps.executeQuery();
if (rs.next()) {// 根据主键查询,只会返回一个结果
return rs.getBlob("ALFTER_IMG");
}
} catch (Exception e) {
log.error("get alfterImg by imageId fail:" + e.getMessage(), e);
throw e;
} finally {
// TODO close ResultSet
// TODO close PreparedStatement
// TODO close/release Connection
}
return null;
}
2. service 层
service方法省略,无非调用dao层方法。
3. controller/action 层
本例使用的是 spring 3.2.4.RELEASE,同样也适用于 Struts2、Servlet。
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
/**
* @Title: displayAlfterImg
* @deprecated: 显示分析后的二进制图片
* @return String
* @author
* @date 2014-11-5
*/
@RequestMapping("/displayAlfterImg")
public String displayAlfterImg(@RequestParam("imageId") String imageId,
HttpServletResponse resp) {
InputStream is = null;
OutputStream os = null;
try {
// 调用service层方法
Blob blob = hwImageService.getAlfterImgById(imageId);
log.info("get alfterImgBy Id,the result is:" + blob);
if (null != blob) {
is = blob.getBinaryStream();
resp.setContentType("image/jpeg");
os = resp.getOutputStream();
int num = (int) blob.length();
byte buf[] = new byte[num];
while ((num = is.read(buf)) != -1) {
os.write(buf);
}
}
} catch (Exception e) {
log.error("display alfterImg fail:" + e.getMessage(), e);
} finally {
IOUtils.closeStream(is, os);
}
return null;
}
4. jsp
jsp上直接使用 <img>标签
<img width="333" height="249"
src="${ctx}/hw/image/displayAlfterImg?imageId=${reportVO.imageId }"/>