package com.lc.dcwork.edoc.handSignPict.cmd;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.loushang.next.dao.DaoFactory;
import org.loushang.next.data.DataSet;
import org.loushang.next.data.ParameterSet;
import org.loushang.next.upload.UploadFile;
import com.lc.dcwork.edoc.handSignPict.dao.IEdocHandSignPictQueryDao;
import com.lc.dcwork.edoc.handSignPict.dao.jdbc.EdocHandSignPictQueryDao;
import com.lc.dcwork.edoc.handSignPict.data.EdocHandSignPict;
public class EdocHandSignService implements Servlet{
public void destroy() {
}
public ServletConfig getServletConfig() {
return null;
}
public String getServletInfo() {
return null;
}
public void init(ServletConfig arg0) throws ServletException {
}
public void service(ServletRequest srq, ServletResponse srp)
throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest)srq;
HttpServletResponse response = (HttpServletResponse)srp;
//操作类型
String organId = request.getParameter("organId");
if(organId == null || "".equals(organId)){
throw new RuntimeException("organId不能为空。此异常在EdocHandSignService的service方法抛出");
}
IEdocHandSignPictQueryDao edocHandSignPictQueryDao = (IEdocHandSignPictQueryDao)DaoFactory.getDao(EdocHandSignPictQueryDao.class.getName());
ParameterSet pset = new ParameterSet();
pset.setParameter("organId", organId);
DataSet ds = edocHandSignPictQueryDao.querySignPictInfo(pset);
if(ds.getCount()>0){
//EdocHandSignPict edocHandSignPict = (EdocHandSignPict)ds.getRecord(0).toBean(EdocHandSignPict.class);
//UploadFile curFile = edocHandSignPict.getContent();
byte[] signPicByte = edocHandSignPictQueryDao.getPictContent(organId);
ServletOutputStream sout = response.getOutputStream();
InputStream in = new ByteArrayInputStream(signPicByte);
BufferedImage img = ImageIO.read(in);
//word文档只支持png类型,不支持jpg,gif
ImageIO.write(img,"png",sout);//可以设置默认下载图片格式
in.close();
}
}
}
得到照片内容:
//得到照片内容
public byte[] getPictContent(String organId){
StringBuffer sqlSb = new StringBuffer("SELECT CONTENT FROM EDOC_HAND_SIGN_PICT WHERE 1=1 AND ORGAN_ID='"+organId+"';
QueryMapper maper = new QueryMapper(getDataSource(), sqlSb.toString());
maper.compile();
List list = maper.execute();
if(list.size()>0){
byte[] content = (byte[]) list.get(0);
return content;
}
throw new RuntimeException("人员organId没有查到对应的图片信息 此异常在EdocHandSignPictQueryDao的querySignPictInfo方法中出;
}
//记录查询内部类
private class QueryMapper extends MappingSqlQuery
{
public QueryMapper(DataSource ds, String querySql)
{
super(ds, querySql);
}
protected Object mapRow(ResultSet resultset, int num)
throws SQLException
{
byte[] temp = resultset.getBytes("CONTENT");
return temp;
}
}