2012-09-24 6 views
2

mysql에서 데이터를 가져 와서 배열을 만들려고합니다. 배열에는 텍스트와 그림이 포함됩니다. 지금까지 모든 것이 잘되었지만 JSP 페이지의 메모리스트에서이 그림을 어떻게 표시할지 모르겠습니다. 내가 볼 수있는 것은 단지 바이트 묶음입니다. 보자 :mysql에서 일련의 이미지를 가져 와서 JSP로 표시하는 방법

내 DBQueries은 다음과 같습니다

public static ArrayList<Memo> selectAllMemoList() 
{ 
    DBConnectionPool pool = DBConnectionPool.getInstance(); 
    Connection connection = pool.getConnection(); 
    PreparedStatement ps = null; 
    ResultSet rs = null; 

    String query = "SELECT Users.picture, Users.username, Messages.subject, Messages.date, Messages.msg_id " + 
      "FROM Messages, Users " + 
      "WHERE Messages.uid_fk = Users.uid " + 
      "ORDER BY date DESC"; 
    try 
    { 
     ps = connection.prepareStatement(query); 
     rs = ps.executeQuery(); 

     ArrayList<Memo> memolist = new ArrayList<Memo>(); 

     String dbSqlTimestamp = ""; 

     while (rs.next()) { 
     m.setUserpicture(rs.getString("picture")); 
     m.setUsername(rs.getString("username")); 
     m.setSubject(rs.getString("subject")); 
     m.setDate(dbSqlTimestamp = new SimpleDateFormat("dd-MM-yy HH:mm").format(rs.getTimestamp("date"))); 
     m.setMessageid(rs.getInt("msg_id")); 
     memolist.add(m); 
     } 

     return memolist; 
    } 
    catch (SQLException e){ 
     e.printStackTrace(); 
     return null; 
    }   
    finally 
    { 
     DBUtil.closeResultSet(rs); 
     DBUtil.closePreparedStatement(ps); 
     pool.freeConnection(connection); 
    } 
} 

내 MemoShowAll은 다음과 같습니다

@Override 
protected void doPost(HttpServletRequest request, 
      HttpServletResponse response) 
      throws ServletException, IOException 
{ 

    HttpSession session = request.getSession(); 

    ArrayList<Memo> memolist = DBQueries.selectAllMemoList(); 

    request.setAttribute("listmemo", memolist); 

    String url = "/restricted/MemoList.jsp"; 

    // forward the request and response to the view 
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url); 
    dispatcher.forward(request, response); 

} 

MemoList.jsp

<z:rows> 
    <core:forEach var="each" items="${listmemo}"> 
    <z:row> 
     <img src="${each.userpicture}" border=0 > 
     <z:label value="${each.username}"/> 
     <z:label value="${each.subject}"/> 
     <z:label value="${each.date}"/> 
    </z:row> 
    </core:forEach> 
</z:rows> 

건배, BB

+0

필드 userpicture에 저장되는 내용은 무엇입니까? 이미지 경로? 이미지가 저장된 위치는? –

답변

1

이 문제를 우회하는 방법은 서블릿을 사용하여 이미지를 클라이언트에 노출시키는 것입니다. 이 작업을 수행하려면 데이터베이스에서 검색 한 이미지 바이트를 사용자의 session 오브젝트에 저장해야합니다. html로에서

는 내가 브라우저가 이미지를 렌더링하려고 할 때 내 서블릿에 수신 곳에 따라서, /imageRender에 전화를 할 것입니다

< img src="/imageRender?id=someimageid"/ > 있습니다. 서블릿은 입력 매개 변수를 읽고 매개 변수를 기반으로 세션 객체의 이미지를 렌더링합니다.

일부 유용한 링크는 다음과 같습니다

1) Display servlet as img src using session attribute

2) Writing image to servlet response with best performance

그것은 귀하의 경우에는 In the ImageDAO#find() you can use ResultSet#getBinaryStream() to get the image as an InputStream from the database.

을 말한다 곳으로 링크 2 @BalusC 응답에 특별한주의를 기울이 db의 각 행을 나타내는 DAO 오브젝트 목록을 작성할 수 있습니다.

관련 문제