java把SQLServer中image类型16进制的图⽚显⽰到JSP页⾯
数据库中使⽤image类型,Java实体类中要是有bytep[]字节数组的类型来进⾏封装
Bean层
public class Mark {
private String MARKID;
private String MARKTYPE;
private String DESCR;
private byte[] PIC;
接下来就可以对数据库进⾏查询,得到数据
DAO层
public Mark getImgByWonum(String wonum) {
try {
con = Connection();
String sql = "select MARK.PIC from WOPARENT,MARK,WO2DTL,PRODUCT WHERE WO2DTL.PRONUM=PRODUCT.PRONUM and MARK.MARKID=W O2DTL.PRONUM and WOPARENT.WONUM=WO2DTL.WONUM and WOPARENT.WONUM=?";
ps = con.prepareStatement(sql);
ps.setString(1, wonum);
rs = ps.executeQuery();
try {
()){
byte[] pic = rs.getBytes("PIC");
Mark mark = new Mark();
mark.setPIC(pic);  //保存数据
//System.out.println("图⽚是:"+pic);
return mark;  //返回这个对象
}
} catch (Exception e) {
// TODO: handle exception
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
DBUtil.closeConnection(con, ps, rs);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
jsp创建}
}
return null;
}
得到数据后,如何显⽰在JSP页⾯上呢?别急,往下看~!
servlet
protected void showPic(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//PrintWriter out1 = Writer();
HttpSession session = Session();
String wonum = (Attribute("wonum");
IMarkService ims = new MarkServiceImpl();
Mark mm = ImgByWonum(wonum);  //调⽤service层得到数据
if(mm!=null){  //先要给得到的对象进⾏判空处理
byte[] pic = mm.getPIC();  //获得图⽚
ByteArrayInputStream bais = new ByteArrayInputStream(pic); //⽤来存储byte[]字节数组中的数据
try {
BufferedImage bi1 =ad(bais); //将图⽚加载到内存中,并可得到图⽚的详细信息
File w2 = new File("E:\\img\\00000000003.jpg");  //得到的·图⽚需要指定⼀个存储位置
if(!w2.exists()){//如果⽂件夹不存在
w2.mkdir();//创建⽂件夹
}
ImageIO.write(bi1, "jpg", w2);//把得到的图⽚转为JPG格式,并写⼊到w2这个位置上
ists()){
FileInputStream is = new FileInputStream(w2);
int i = is.available();
byte data[] = new byte[i];
is.close();
response.setContentType("image/*"); // 设置返回的⽂件类型
OutputStream toClient = OutputStream(); // 得到向客户端输出⼆进制数据的对象
toClient.write(data); // 输出数据
toClient.close();
}
w2.delete(); //为了防⽌图⽚过多占⽤内存,当流程执⾏完之后会删除⽂件夹下⾯的图⽚,单img⽂件夹不会删除
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(mm==null || mm.equals("")){
response.ContextPath()+"/watchBoard.jsp");
}
读取本地⽂件,接着把得到的数据转为image格式,输出数据,然后在l配置⼀下servlet名称地址,这样servlet就完成了警告:1.使⽤了OutPutStream就不能再使⽤PrintWriter out1 = Writer();
2.需要先在硬盘上指定的位置创建img这个⽂件夹
JSP
这样整个流程就搞定了~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。