728x90
728x90
# 관련 포스팅
- 파일 업로드 : https://young0105.tistory.com/178
오늘 배운 파일 업로드 방법을 복습할 겸 전자 도서관 프로젝트에 이미지 리뷰 기능을 추가했다.
# 이미지를 포함한 리뷰 작성
더보기
Controller
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | // 리뷰 작성 } else if ("writeReview".equals(action)) { int bookId = Integer.parseInt(request.getParameter("bookId")); int star = Integer.parseInt(request.getParameter("star")); String title = request.getParameter("title"); String content = request.getParameter("content"); Part filePart = request.getPart("file"); int responseType = 0; // 도서명을 선택하지 않았다면 (-1) if (bookId == -1) { responseType = 2; } else { ReviewDTO reviewDto = new ReviewDTO(userId, bookId, star, title, content); responseType = reviewService.writeReview(reviewDto); // 이미지가 있다면 if (filePart.getSubmittedFileName().equals("") == false) { InputStream fileContent = filePart.getInputStream(); OutputStream outputStream = null; try { UUID uuid = UUID.randomUUID(); String uuidImage = uuid + "_" + filePart.getSubmittedFileName(); String imgDir = getServletContext().getInitParameter("imgDir"); File file = new File(imgDir, uuidImage); outputStream = new FileOutputStream(file); byte[] buffer = new byte[1024]; int length; while ((length = fileContent.read(buffer)) != -1) { outputStream.write(buffer, 0, length); } // DB에 저장 ReviewDTO dto = reviewService.selectReviewByUserAndBook(userId, bookId); int reviewId = dto.getId(); String originImage = filePart.getSubmittedFileName(); // uuidImage ReviewImageDTO reviewImageDTO = new ReviewImageDTO(reviewId, originImage, uuidImage); reviewService.insertReviewImage(reviewImageDTO); } catch (Exception e) { System.out.println("파일 이상"); } finally { fileContent.close(); outputStream.flush(); if (outputStream != null) { outputStream.close(); } } } } request.setAttribute("responseReview", responseType); // main.jsp로 | cs |
DAO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | @Override public int insert(ReviewImageDTO reviewImageDTO) { int resultCount = 0; String sql = " INSERT INTO review_image VALUES (?, ?, ?) "; PreparedStatement pstmt = null; try { pstmt = conn.prepareStatement(sql); pstmt.setInt(1, reviewImageDTO.getReviewId()); pstmt.setString(2, reviewImageDTO.getOriginImage()); pstmt.setString(3, reviewImageDTO.getUuidImage()); resultCount = pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } return resultCount; } | cs |
# 이미지 리뷰 조회
더보기
리뷰 조회 (이미지 포함 리뷰, 미포함 리뷰 구분)
1 2 3 4 5 6 7 8 9 | <c:choose> <c:when test="${imageName != null}"> <textarea cols="56" rows="10" readonly="readonly" class="content">${review.content}</textarea> <img alt="리뷰 이미지" src="/library/images/uploadImages/${imageName}" style="width: 212px; height: 262px; margin-left: 30px; border:1px solid gray"> </c:when> <c:otherwise> <textarea cols="83" rows="10" readonly="readonly" class="content">${review.content}</textarea> </c:otherwise> </c:choose> | cs |
DAO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | @Override public ReviewImageDTO select(int reviewId) { ReviewImageDTO reviewImageDTO = null; String sql = " SELECT * FROM review_image WHERE review_id = ? "; PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = conn.prepareStatement(sql); pstmt.setInt(1, reviewId); rs = pstmt.executeQuery(); while (rs.next()) { reviewImageDTO = new ReviewImageDTO(); reviewImageDTO.setReviewId(rs.getInt("review_id")); reviewImageDTO.setOriginImage(rs.getString("origin_image")); reviewImageDTO.setUuidImage(rs.getString("uuid_image")); } } catch (Exception e) { e.printStackTrace(); } finally { try { rs.close(); pstmt.close(); } catch (Exception e) { e.printStackTrace(); } } return reviewImageDTO; } | cs |
ReviewImage 테이블을 따로 만들어서, review_id를 외래키로 받아 기본키로 사용하고
기존 파일명과 UUID가 포함된 파일명을 각각 테이블에 저장했다.
320x100
반응형
'Java > JSP' 카테고리의 다른 글
[JSP] 웹 컨테이너 (Web Container) (0) | 2023.06.18 |
---|---|
[JSP] 외부 라이브러리 없이 파일 업로드하기 (0) | 2023.04.06 |
[JSP] 필터 (Filter) (0) | 2023.04.06 |
[JSP] 쿼리 파라미터 방식 (쿼리 스트링) (0) | 2023.04.05 |
[JSP] Java web으로 SQL CRUD 구현하기 (0) | 2023.03.28 |