MoChiwakiブログ

女性エンジニアがゆる~く書く備忘録ブログ 〜だいたいいつもつまづいている〜

ImageServlet

画像はバイナリデータでsetもgetもしています。

(レシピサイトの例)

**********************************************************************************************

jsp

src="imageServlet"

で飛ばします。

**********************************************************************************************

ImageServlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 //レシピIDを取得
 String recipeId = request.getParameter("recipeId");

  //レシピの情報を検索

 RecipeDto recipeDto = new RecipeDto();

 recipeDto = RecipeDao.findImage(recipeId);

 response.setContentType("image/jpeg");

 //レシピの画像データをレスポンスに書き込む
 OutputStream os = response.getOutputStream();
 os.write(recipeDto.getImage());
}

**********************************************************************************************

Dao  DBからimageなどをもらう

public static RecipeDto findImage(String recipeId) {
 Connection conn = ConnectionManager.getConnection();


 StringBuffer sb = new StringBuffer();
 sb.append("SELECT");
 sb.append("        image");
 sb.append("        ,mimetype");
 sb.append("        ,imagename");
 sb.append("    FROM");
 sb.append("        recipe");
 sb.append("    WHERE");
 sb.append("        recipeno = ?;");

 PreparedStatement ps = null;
 RecipeDto recipeDto = new RecipeDto();

 try {
  ps = conn.prepareStatement(sb.toString());

  ps.setString(1, recipeId);
  ResultSet rs = ps.executeQuery();

  while(rs.next()){
   recipeDto.setImage(rs.getBytes("IMAGE"));
   recipeDto.setImageName(rs.getString("IMAGENAME"));
   recipeDto.setMimetype(rs.getString("MIMETYPE"));
  }
  } catch (SQLException e) {
   e.printStackTrace();
  }
 return recipeDto;
}

**********************************************************************************************