[JSP] - 게시물 상세 DB 출력하기
○ 게시물 상세 DB 출력하기 |
// index.jsp (게시물에서 제목을 클릭하면 상세페이지로...) <!-- 실제 DB에서 최신글 데이터를 뽑아오기 위한 구문 --> <% ArrayList<fileDTO> writeList = new ArrayList<fileDTO>(); writeList = new fileDAO().getWriteCreatedList(); for(int i=0; i<writeList.size(); i++){ fileDTO write = writeList.get(i); %>
<!-- 실제 최신글 데이터를 뽑기 위한 본문 데이터 --> <div class="row"> <div class="col-lg-9"> <div class="card bg-light mt-3"> <div class="card-header bg-light"> <div class="row"> <div class="col-8 text-left"> <img src="./userProfilePicture/<%= write.getUserPropilePicture() %>" class="img-circle" width="32px" height="27px"> <%= write.getUserWriteID() %> <small><%= write.getUserWriteTime() %></small> </div> <div class="col-4 text-right"></div> </div> </div> <div class="card-body"> <div class="row"> <div class="col-3"> <img src="./uploadImage/<%= write.getFileRealName() %>" width="150px" height="100px"> </div> <div class="col-9"> <!-- <h5 class="card-title"><%= write.getTitle() %></h5> --> <a class="card-title" href="userWriteDetailView.jsp?userWriteTitle=<%= write.getTitle() %>"><%= write.getTitle() %></a> <p class="card-text"><%= write.getContent().replaceAll(" ", " ").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\n", "<br>") %></p> <div class="row"> <div class="col-9 text-left"> 금액<span style="color: red;"> <%= write.getUserCoinAmount() %></span> 추천 <span style="color: red;"> <%= write.getUserLikeAmount() %></span> 댓글<span style="color: red;"><%= write.getUserCommentAmount() %></span> 감사<span style="color: red;"> <%= write.getUserReportAmount() %></span> </div> <div class="col-3 text-right"> <a onclick="return confirm('보팅 하시겠습니까?')" href="./likeAction.jsp?evaluationID=">추천</a> <a onclick="return confirm('신고 하시겠습니까?')" href="./likeAction.jsp?evaluationID=">신고</a> </div> </div> </div> </div> </div> </div> </div> </div> <% } %>
// userWriteDetailView.jsp (타이틀로 가져와서 db에서 찾아서 출력) <body> <% request.setCharacterEncoding("UTF-8"); %> <!-- 로그인한 세션 처리 --> <% String userSessionID = null; if (session.getAttribute("userID") != null) { userSessionID = (String) session.getAttribute("userID"); } if (userSessionID != null) { %> 로그인된 사용자 : <%=userSessionID%> <% } %> <% String userWriteTitle = null; if (request.getParameter("userWriteTitle") != null) { userWriteTitle = request.getParameter("userWriteTitle"); } fileDTO file = new fileDAO().getContent(userWriteTitle); %> <!-- Nav --> <nav class="navbar navbar-default bg-primary navbar-fixed-top"> <div class="container-fluid"> <div class="navbar-header"> <a class="navbar-brand text-white" href="index.jsp">사이트 로고</a> </div> <ul class="nav justify-content-center"> <li class="nav-item"><a class="nav-link text-white" href="./trendingIndex.jsp">대세글</a></li> <li class="nav-item"><a class="nav-link text-white" href="./createdIndex.jsp">최신글</a></li> <li class="nav-item"><a class="nav-link text-white" href="./hotIndex.jsp">인기글</a></li> </ul> <ul class="nav justify-content-end"> <!-- 유저 로그인 세션이 존재하지 않으면 로그인으로 존재하면 글쓰기로--> <% if (userSessionID != null) { %> <li class="nav-item"><a class="nav-link text-white" href="./userWrite.jsp">글쓰기</a></li> <% } else if (userSessionID == null) { %> <li class="nav-item"><a class="nav-link text-white" href="./userLogin.jsp">글쓰기</a></li> <% } %> <!-- 유저 로그인 세션이 존재하면 로그아웃으로 바뀌게 --> <% if (userSessionID == null) { %> <li class="nav-item"><a class="nav-link text-white" href="./userLogin.jsp">로그인+회원가입</a></li> <% } else if (userSessionID != null) { %> <li class="nav-item"><a class="nav-link text-white" href="./userLogoutAction.jsp">로그아웃</a></li> <% } %> </ul> </div> </nav> <div class="container-fluid"> <div class="row"> <!-- 빈공간 3칸 --> <div class="col-lg-4 mt-4"></div> <!-- 메인 9칸 게시물 출력--> <div class="col-lg-8 mt-4"> <!-- 컨텐츠 상세 보기 --> <!-- 컨텐츠 타이틀 출력 --> <div class="row"> <div class="col-lg-8"> <%=file.getTitle()%> </div> </div> <!-- 유저프로필사진, 유저아이디, 작성시간 출력 --> <div class="row"> <div class="col-lg-8 mt-2"> <img src="./userProfilePicture/<%=file.getUserPropilePicture()%>" class="img-circle" width="32px" height="27px"> <%=file.getUserWriteID()%> <small><%=file.getUserWriteTime()%></small> </div> </div> <!-- 컨텐츠 사진 출력 --> <div class="row"> <div class="col-lg-8 mt-3"> <img src="./uploadImage/<%=file.getFileRealName()%>" width="640px" height="360px"> </div> </div> <!-- 컨텐츠 본문 출력 --> <div class="row"> <div class="col-lg-8 mt-3"> <%=file.getContent().replaceAll(" ", " ").replaceAll("<", "<").replaceAll(">", ">") .replaceAll("\n", "<br>")%> </div> </div> <!-- 가격, 추천, 댓글, 감사 출력 --> <div class="row"> <div class="col-lg-8 mt-3"> 금액<span style="color: red;"> <%=file.getUserCoinAmount()%></span> 추천 <span style="color: red;"> <%=file.getUserLikeAmount()%></span> 댓글<span style="color: red;"> <%=file.getUserCommentAmount()%></span> 감사<span style="color: red;"> <%=file.getUserReportAmount()%></span> </div> </div> </div> </div> </div> </body> </html> // fileDAO.java (게시물 제목으로 DB 가져오기) // 하나의 게시물 클릭하면 페이지 이동해서 상세히 보여주게 하는 구문 public fileDTO getContent(String title) { String SQL = "SELECT * FROM userwriteTest Where userWriteTitle = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn =DatabaseUtil.getConnection(); pstmt = conn.prepareStatement(SQL); pstmt.setString(1, title); rs = pstmt.executeQuery(); if(rs.next()) { // 결과가 나왔다면 fileDTO file = new fileDTO();
file.setUserPropilePicture(rs.getString("userPropilePicture")); file.setUserWriteID(rs.getString("userWriteID"));
// 시간을 오전 오후로 나누어서 표시를 해주자 int chatTime = Integer.parseInt(rs.getString("userWriteTime").substring(11, 13)); String timeType = "오전"; if(Integer.parseInt(rs.getString("userWriteTime").substring(11, 13)) >= 12) { timeType = "오후"; chatTime -= 12; } file.setUserWriteTime(rs.getString("userWriteTime").substring(0, 11) + " " + timeType + " " + chatTime + "시 " + rs.getString("userWriteTime").substring(14, 16) + "분");
file.setFileName(rs.getString("userFileName")); file.setFileRealName(rs.getString("userFileRealName"));
file.setTitle(rs.getString("userWriteTitle")); file.setContent(rs.getString("userWriteContent"));
file.setUserCoinAmount(rs.getInt("userCoinAmount")); file.setUserLikeAmount(rs.getInt("userLikeAmount")); file.setUserCommentAmount(rs.getInt("userCommentAmount")); file.setUserReportAmount(rs.getInt("userReportAmount"));
return file; } }catch(Exception e) { e.printStackTrace(); } finally { try { if(rs != null) rs.close(); if(pstmt != null) pstmt.close(); } catch(Exception e) { e.printStackTrace(); } } return null; // 글이 존재하지 않는다면 null 반환 } // fileDTO.java package file; public class fileDTO { String userPropilePicture; String userWriteID; String fileName; String fileRealName; String title; String content; int userCoinAmount; int userLikeAmount; int userCommentAmount; int userReportAmount; String userWriteTime;
// 생성자 생성 public fileDTO() {}
public fileDTO(String userPropilePicture, String userWriteID, String userWriteTime, String fileName, String fileRealName, String title, String content, int userCoinAmount, int userLikeAmount, int userCommentAmount, int userReportAmount) { super(); this.userPropilePicture = userPropilePicture; this.userWriteID = userWriteID; this.userWriteTime = userWriteTime; this.fileName = fileName; this.fileRealName = fileRealName; this.title = title; this.content = content; this.userCoinAmount = userCoinAmount; this.userLikeAmount = userLikeAmount; this.userCommentAmount = userCommentAmount; this.userReportAmount = userReportAmount; } public String getUserWriteTime() { return userWriteTime; } public void setUserWriteTime(String userWriteTime) { this.userWriteTime = userWriteTime; } public String getTitle() { return title; } public String getUserPropilePicture() { return userPropilePicture; } public void setUserPropilePicture(String userPropilePicture) { this.userPropilePicture = userPropilePicture; } public String getUserWriteID() { return userWriteID; } public void setUserWriteID(String userWriteID) { this.userWriteID = userWriteID; } public int getUserCoinAmount() { return userCoinAmount; } public void setUserCoinAmount(int userCoinAmount) { this.userCoinAmount = userCoinAmount; } public int getUserLikeAmount() { return userLikeAmount; } public void setUserLikeAmount(int userLikeAmount) { this.userLikeAmount = userLikeAmount; } public int getUserCommentAmount() { return userCommentAmount; } public void setUserCommentAmount(int userCommentAmount) { this.userCommentAmount = userCommentAmount; } public int getUserReportAmount() { return userReportAmount; } public void setUserReportAmount(int userReportAmount) { this.userReportAmount = userReportAmount; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getFileName() { return fileName; }
public void setFileName(String fileName) { this.fileName = fileName; } public String getFileRealName() { return fileRealName; } public void setFileRealName(String fileRealName) { this.fileRealName = fileRealName; } } |
'JSP 개발 참고' 카테고리의 다른 글
[JSP] - 이미지컨텐츠 row 분할하여 출력(nth-child) (0) | 2018.05.14 |
---|---|
[JSP] - 다른 테이블에서 작성자 프로필사진 가져오기 (0) | 2018.05.06 |
[JSP] - 게시물 검색 및 검색된 내용의 DB 출력하기 (0) | 2018.05.05 |
[JSP] - 게시물 작성 및 게시물 DB 출력하기 (0) | 2018.05.04 |
[JSP] - 이미지 파일 올렸을 때 미리보기 (0) | 2018.05.03 |