Java从数据库读取图片

之前讲了如何将图片上传到数据库,我们是通过将图片转换为二进制数组再保存进数据库的,数据库字段使用的是LONGBLOB类型。那么今天来说一下怎么将保存进去的图片读取到页面上。
Java从数据库读取图片_第1张图片

由于其他数据与图片返回的类型不同,所以图片信息是不与其他文字信息一起返回给页面的。先在Dao中写查询方法

	public Trends findTrendsById(int trendsid) {
		Trends trends = null;
		try {
			String findTrendsById = "select trends.*,user.username from trends inner join user on trends.userid=user.userid where trendsid=?";
			con=DbUtil.getConnection();
			ps=con.prepareStatement(findTrendsById);
			ps.setInt(1, trendsid);
			rs=ps.executeQuery();
			trends = new Trends();
			trends.setTrendsid(rs.getInt("trendsid"));
			trends.setTrendsname(rs.getString("trendsname"));
			trends.setTrendsdate(rs.getTimestamp("trendsdate"));
			trends.setTrendsimg(rs.getBytes("trendsimg"));//通过rs.getBytes()来接收图片的byte数组
			trends.setUserid(rs.getInt("userid"));
			trends.setUsername(rs.getString("username"));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			DbUtil.close(con, ps, rs);
		}
		return trends;
	}

在servlet中需要添加两个方法,分别是查询其他信息的方法和查询图片信息的方法

	/**
	*查询动态信息
	*/
	public void findTrendsById(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
		int id=Integer.parseInt(request.getParameter("trendsid"));
		Trends trends = userSer.findTrendsById(id);
		//以下略.........................

下面是查询图片的方法

	/**
	*查询图片
	*/
	public void findImgById(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
		response.setHeader("Pragma", "No-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);
		//response.setHeader()  设置响应报头,在这里设置为不可缓存
		byte[] img = null;//通过一个byte[]来接收图片
		int id=Integer.parseInt(request.getParameter("trendsid"));
		Trends trends = new Trends();
		trends = userSer.findTrendsById(id);
		img=trends.getTrendsimg();
		//OutputStream 以流的形式将图片信息返回给页面
		OutputStream outputStream = response.getOutputStream();
		outputStream.write(img);
		outputStream.flush();//排出流中所有数据
		outputStream.close();//关闭流
	}

在jsp页面中,使用一个img标签接收返回值

if((data[i].trendsimg).length!=0){
	//img标签的src中放入请求链接
	$("#trendscon"+ i +" .trendsbody").append('+ data[i].trendsid+ '" />');
}

Java从数据库读取图片_第2张图片

你可能感兴趣的:(专题技术文献)