From 6127b817549517a493d2b8301d351749b8c9d297 Mon Sep 17 00:00:00 2001 From: kim Date: Fri, 22 Jan 2021 00:58:52 +0900 Subject: [PATCH] jspblog : content detail --- .../jspblog/domain/board/BoardDao.java | 31 ++++++++ .../domain/board/dto/DetailResDto.java | 18 +++++ .../example/jspblog/service/BoardService.java | 5 ++ .../example/jspblog/web/BoardController.java | 12 ++- jspblog/src/main/webapp/board/detail.jsp | 71 ++++++++++++++++++ jspblog/src/main/webapp/images/profile.jpg | Bin 0 -> 1270 bytes jspblog/src/main/webapp/layout/header.jsp | 1 + 7 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 jspblog/src/main/java/com/example/jspblog/domain/board/dto/DetailResDto.java create mode 100644 jspblog/src/main/webapp/board/detail.jsp create mode 100644 jspblog/src/main/webapp/images/profile.jpg diff --git a/jspblog/src/main/java/com/example/jspblog/domain/board/BoardDao.java b/jspblog/src/main/java/com/example/jspblog/domain/board/BoardDao.java index f9f18374..fef6e42d 100644 --- a/jspblog/src/main/java/com/example/jspblog/domain/board/BoardDao.java +++ b/jspblog/src/main/java/com/example/jspblog/domain/board/BoardDao.java @@ -1,6 +1,7 @@ package com.example.jspblog.domain.board; import com.example.jspblog.config.DB; +import com.example.jspblog.domain.board.dto.DetailResDto; import com.example.jspblog.domain.board.dto.WriteReqDto; import java.sql.Connection; @@ -87,4 +88,34 @@ public class BoardDao { } return -1; } + + public DetailResDto findById(int id) { + String sql = "select b.*, u.username from board b left outer join user u on b.userId = u.id where b.id = ?"; + Connection conn = DB.getConnection(); + PreparedStatement pstmt = null; + ResultSet rs = null; + + if (conn != null) { + try { + pstmt = conn.prepareStatement(sql); + pstmt.setInt(1, id); + rs = pstmt.executeQuery(); + if (rs.next()) { + DetailResDto dto = DetailResDto.builder() + .id(rs.getInt("b.id")) + .title(rs.getString("b.title")) + .content(rs.getString("b.content")) + .readCount(rs.getInt("b.readCount")) + .username(rs.getString("u.username")) + .build(); + return dto; + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DB.close(conn, pstmt, rs); + } + } + return null; + } } diff --git a/jspblog/src/main/java/com/example/jspblog/domain/board/dto/DetailResDto.java b/jspblog/src/main/java/com/example/jspblog/domain/board/dto/DetailResDto.java new file mode 100644 index 00000000..6701df02 --- /dev/null +++ b/jspblog/src/main/java/com/example/jspblog/domain/board/dto/DetailResDto.java @@ -0,0 +1,18 @@ +package com.example.jspblog.domain.board.dto; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class DetailResDto { + private int id; + private String title; + private String content; + private int readCount; + private String username; + +// public String getContent() { +// return content.replaceAll("<", "<").replaceAll(">", ">"); +// } +} diff --git a/jspblog/src/main/java/com/example/jspblog/service/BoardService.java b/jspblog/src/main/java/com/example/jspblog/service/BoardService.java index 9c1bc45c..b242b01d 100644 --- a/jspblog/src/main/java/com/example/jspblog/service/BoardService.java +++ b/jspblog/src/main/java/com/example/jspblog/service/BoardService.java @@ -2,6 +2,7 @@ package com.example.jspblog.service; import com.example.jspblog.domain.board.Board; import com.example.jspblog.domain.board.BoardDao; +import com.example.jspblog.domain.board.dto.DetailResDto; import com.example.jspblog.domain.board.dto.WriteReqDto; import java.util.List; @@ -25,4 +26,8 @@ public class BoardService { public int 글개수() { return boardDao.count(); } + + public DetailResDto 글상세보기(int id) { + return boardDao.findById(id); + } } diff --git a/jspblog/src/main/java/com/example/jspblog/web/BoardController.java b/jspblog/src/main/java/com/example/jspblog/web/BoardController.java index 37b97b6d..fde862cf 100644 --- a/jspblog/src/main/java/com/example/jspblog/web/BoardController.java +++ b/jspblog/src/main/java/com/example/jspblog/web/BoardController.java @@ -1,6 +1,7 @@ package com.example.jspblog.web; import com.example.jspblog.domain.board.Board; +import com.example.jspblog.domain.board.dto.DetailResDto; import com.example.jspblog.domain.board.dto.WriteReqDto; import com.example.jspblog.domain.user.User; import com.example.jspblog.service.BoardService; @@ -58,16 +59,23 @@ public class BoardController extends HttpServlet { } break; } - case "list" : + case "list" : { int page = Integer.parseInt(request.getParameter("page")); List boards = boardService.글목록보기(page); int boardCount = boardService.글개수(); int lastPage = (boardCount - 1) / 4; - double currentPosition = (double)page/lastPage*100; + double currentPosition = (double) page / lastPage * 100; request.setAttribute("boards", boards); request.setAttribute("lastPage", lastPage); request.setAttribute("currentPosition", currentPosition); request.getRequestDispatcher("board/list.jsp").forward(request, response); + } + case "detail" : { + int id = Integer.parseInt(request.getParameter("id")); + DetailResDto dto = boardService.글상세보기(id); + request.setAttribute("detail", dto); + request.getRequestDispatcher("board/detail.jsp").forward(request, response); + } } } } diff --git a/jspblog/src/main/webapp/board/detail.jsp b/jspblog/src/main/webapp/board/detail.jsp new file mode 100644 index 00000000..8be2de34 --- /dev/null +++ b/jspblog/src/main/webapp/board/detail.jsp @@ -0,0 +1,71 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + +<%@ include file="../layout/header.jsp" %> + +
+
+
+
+ 작성자 : ${detail.username} 조회수 : ${detail.readCount} +
+
+

+ ${detail.title} +

+
+
+
+
+ +
+ + +
+
+
+
+
Comment
+
+ +
+ +
+
+ + +
    + + +
  • + profile-image +
    + 홍길동 +

    + 댓글입니다. +

    +
    +
    + + delete + +
    +
  • + +
+ +
+
+
+ +
+
+ +
+ + + \ No newline at end of file diff --git a/jspblog/src/main/webapp/images/profile.jpg b/jspblog/src/main/webapp/images/profile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e2e350ebb8dd10cdb6a9de8a45153338b0eefba9 GIT binary patch literal 1270 zcmex=CaPG=oGxAj}b z^J8_qtUb08RVJJLCcd^ySh9K2o%R1tcG;$0^>g)c&wFzIkdoK~Ev*wPX1uvGL>iI{q_sC9Quu^#@Pw?a-*z-doQ2_ta*6xPE`5?=O?Rej9()o#HvJyPA97{jC0| zI)(KR7b$>T!JZb`{JMO1{9)Pu44Zpbo&NB#?a*bJl52GdCBZ&{KCXsK+}^j?f;4c< z=vwS~pObOs*@D=hZ(HhFzE}9Gb4T_bKBmqaYJ584!|IkzlcoIr{bwj}0I3%c01|w2 zw%zycTco}_J6_}7)y*?SvitsZe#E+%xHceu z5g<7h79hdAUuAW=!SZ8jwx-`QBmUT)Yx`^J&e{3t$@RdHa35dmN6GODRUp+24C%(N zzHPi!v`G1U&6Z#*w{PC!<;#y;4Y&OA?i>3NkOF~u3W^F04EmdF;_j~PdR|jrarvav z*SsgUb_%<^G_-0?vDoyd)MA%qsO-o0GItv$GN>>xp6okzxq17o`yt=mE!pi#yI-uu|u*VR@}UUTNJ^8ujg3=Ay`SQaWUFt}t}?^~MRc*<;%y7(@8etCoN z#N3#jWma4KHXgI6{E)d}u1eJJYm>v<)vw*%m3w*Vj*foz4M6QRhOz3dw$Z-p#nQ#| zo{HCf72ax--ak9)V^POWzv;>mPZf@H*VOrMUh~lW_`}Cf&juPUdH-tyP$L6#hk}rz zg4(RKRf{xx)5-L!B#@>(ru_lO#rJ+#)sEg~) zdEFkL+^D8-viZa@A6o^=8$W)eQaqT-W3 z_rSYT26NK|*B0JfUi0HTN2birI{DR!nalfToj>!E!GTkN$%O&zrnJp9>S0H+UCOfV z%LyNo3O7q^e{B)9^6`Cn1EWTu%YpH$%3!^zTGq_W^xg8UcIQO@Gu-?gZKk!V;_C7# zOjk7+L2iTqX2UrVFA6s=FO6OCy-cxu>G=7%; z`Tl#;+TK}ZI+tZuc6?#qvQVK>LBWGV2x`n^lf_F8gnxSdGyhxaZ0;*>Z?3YuZ201M J1B3nln*c01%vb;b literal 0 HcmV?d00001 diff --git a/jspblog/src/main/webapp/layout/header.jsp b/jspblog/src/main/webapp/layout/header.jsp index bcb28e83..2c5fc919 100644 --- a/jspblog/src/main/webapp/layout/header.jsp +++ b/jspblog/src/main/webapp/layout/header.jsp @@ -13,6 +13,7 @@ +