jsp mysql图片轮播,通过jsp向mysql插入图片并显示到页面的有关问题

通过jsp向mysql插入图片并显示到页面的问题

向mysql插入图片是通过二进制输入流的形式实现的,就是pstmt.setBinaryStream(2,str,str.available());存储在数据库longblob数据类型里面。以上这些已经实现。

接着我想从数据库里面取出数据,并在页面显示图片,以下是部分代码:

public class DBResult {

public static InputStream outImage(Connection conn,String picid) {

int id=Integer.parseInt(picid);

String sql="select pic from p where picid="+id;

PreparedStatement pstmt = null;

ResultSet rs=null;

InputStream is = null;

try{

pstmt = (PreparedStatement) conn.prepareStatement(sql);

rs = pstmt.executeQuery();

while(rs.next()){

is = rs.getBlob("pic").getBinaryStream();

}

is.close();

rs.close();

pstmt.close();

}catch (Exception e) {

e.printStackTrace();// TODO: handle exception

}

return is;

}

}

然后我调用这个类到servlet里面,以便输出图片到页面imageout.jsp,以下是部分servlet代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("utf8");

response.setCharacterEncoding("utf8");

String page=null;

String picid = request.getParameter("txtpicid");

if(picid!=null){

response.setContentType("image/jpeg");

Connection conn = dataBase.getConnection();

InputStream is=DBResult.outImage(conn, picid);

if(is!=null){

try{

is=new BufferedInputStream(is);

BufferedImage bi=ImageIO.read(is);

OutputStream os=response.getOutputStream();

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);

encoder.encode(bi);

is.close();

os.close();

}catch (IOException e) {

System.err.println(e.getMessage());

}

}

}

request.setAttribute("picid", picid);

page="imageout.jsp";

response.sendRedirect(page);

}

以下是imageout.jsp页面的路径设置:

 

然后问题是,当程序运行到ImageOutServlet时,可以显示图片,但在控制台有以下错误提示:

十一月 16, 2012 5:17:13 下午 org.apache.catalina.core.StandardWrapperValve invoke

严重: Servlet.service() for servlet [ImageOutServlet] in context with path [/send-app] threw exception

java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed

at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:483)

at dbconn.servlet.ImageOutServlet.doPost(ImageOutServlet.java:58)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值