diff --git a/jspblog/src/main/java/com/example/jspblog/domain/reply/ReplyDao.java b/jspblog/src/main/java/com/example/jspblog/domain/reply/ReplyDao.java index 6952e517..7729a11c 100644 --- a/jspblog/src/main/java/com/example/jspblog/domain/reply/ReplyDao.java +++ b/jspblog/src/main/java/com/example/jspblog/domain/reply/ReplyDao.java @@ -1,25 +1,34 @@ package com.example.jspblog.domain.reply; import com.example.jspblog.config.DB; +import com.example.jspblog.domain.board.dto.DetailResDto; import com.example.jspblog.domain.reply.dto.SaveReqDto; import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.Statement; public class ReplyDao { public int save(SaveReqDto dto) { + System.out.println(dto); String sql = "insert into reply(userId, boardId, content, createDate) values(?, ?, ?, now())"; Connection conn = DB.getConnection(); PreparedStatement pstmt = null; - + ResultSet rs = null; + int generatedKey; if (conn != null) { try { - pstmt = conn.prepareStatement(sql); + pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setInt(1, dto.getUserId()); pstmt.setInt(2, dto.getBoardId()); pstmt.setString(3, dto.getContent()); int result = pstmt.executeUpdate(); - return result; + rs = pstmt.getGeneratedKeys(); + if(rs.next()) { + generatedKey = rs.getInt(1); + if (result == 1 ) return generatedKey; + } } catch (Exception e) { e.printStackTrace(); } finally { @@ -28,4 +37,33 @@ public class ReplyDao { } return -1; } + + public Reply findById(int id) { + String sql = "select * from reply where 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()) { + Reply reply = Reply.builder() + .id(rs.getInt("id")) + .userId(rs.getInt("userId")) + .boardId(rs.getInt("boardId")) + .content(rs.getString("content")) + .build(); + return reply; + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DB.close(conn, pstmt, rs); + } + } + return null; + } } diff --git a/jspblog/src/main/java/com/example/jspblog/service/ReplyService.java b/jspblog/src/main/java/com/example/jspblog/service/ReplyService.java index 5c2c3cf8..dc871d30 100644 --- a/jspblog/src/main/java/com/example/jspblog/service/ReplyService.java +++ b/jspblog/src/main/java/com/example/jspblog/service/ReplyService.java @@ -1,5 +1,6 @@ package com.example.jspblog.service; +import com.example.jspblog.domain.reply.Reply; import com.example.jspblog.domain.reply.ReplyDao; import com.example.jspblog.domain.reply.dto.SaveReqDto; @@ -14,4 +15,8 @@ public class ReplyService { public int 댓글쓰기(SaveReqDto dto) { return replyDao.save(dto); } + + public Reply 댓글찾기(int id) { + return replyDao.findById(id); + } } diff --git a/jspblog/src/main/java/com/example/jspblog/util/Script.java b/jspblog/src/main/java/com/example/jspblog/util/Script.java index c02912c0..03ff1ceb 100644 --- a/jspblog/src/main/java/com/example/jspblog/util/Script.java +++ b/jspblog/src/main/java/com/example/jspblog/util/Script.java @@ -1,10 +1,22 @@ package com.example.jspblog.util; +import com.example.jspblog.domain.board.dto.CommonRespDto; + import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class Script { + public static void responseData(HttpServletResponse response, String jsonData) { + PrintWriter out; + try { + out = response.getWriter(); + out.print(jsonData); + out.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } public static void back(HttpServletResponse response, String msg) { PrintWriter out; diff --git a/jspblog/src/main/java/com/example/jspblog/web/ReplyController.java b/jspblog/src/main/java/com/example/jspblog/web/ReplyController.java index 50f73fc9..361ada51 100644 --- a/jspblog/src/main/java/com/example/jspblog/web/ReplyController.java +++ b/jspblog/src/main/java/com/example/jspblog/web/ReplyController.java @@ -1,9 +1,12 @@ package com.example.jspblog.web; +import com.example.jspblog.domain.board.dto.CommonRespDto; +import com.example.jspblog.domain.reply.Reply; import com.example.jspblog.domain.reply.dto.SaveReqDto; import com.example.jspblog.service.BoardService; import com.example.jspblog.service.ReplyService; import com.example.jspblog.util.Script; +import com.google.gson.Gson; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; @@ -11,7 +14,9 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import java.io.BufferedReader; import java.io.IOException; +import java.io.PrintWriter; @WebServlet("/reply") public class ReplyController extends HttpServlet { @@ -30,22 +35,25 @@ public class ReplyController extends HttpServlet { switch (cmd) { case "save": { - int userId = Integer.parseInt(request.getParameter("userId")); - int boardId = Integer.parseInt(request.getParameter("boardId")); - String content = request.getParameter("content"); - - SaveReqDto dto = SaveReqDto.builder() - .userId(userId) - .boardId(boardId) - .content(content) - .build(); + BufferedReader br = request.getReader(); + String reqData = br.readLine(); + Gson gson = new Gson(); + SaveReqDto dto = gson.fromJson(reqData, SaveReqDto.class); + System.out.println(dto); + CommonRespDto commonRespDto = new CommonRespDto<>(); + Reply reply = null; int result = replyService.댓글쓰기(dto); - if (result == 1) { - response.sendRedirect("/jspblog/board?cmd=detail&id=" + boardId); + if (result != -1) { + reply = replyService.댓글찾기(result); + commonRespDto.setStatusCode(1); + commonRespDto.setData(reply); } else { - Script.back(response, "댓글쓰기 실패"); + commonRespDto.setStatusCode(-1); } + + String responseData = gson.toJson(commonRespDto); + Script.responseData(response, responseData); break; } } diff --git a/jspblog/src/main/webapp/board/detail.jsp b/jspblog/src/main/webapp/board/detail.jsp index fb99e03c..96bf802e 100644 --- a/jspblog/src/main/webapp/board/detail.jsp +++ b/jspblog/src/main/webapp/board/detail.jsp @@ -31,35 +31,15 @@
Comment
-
- - - -
- -
+ +
+

    - -
  • - profile-image -
    - 홍길동 -

    - 댓글입니다. -

    -
    -
    - - delete - -
    -
  • -
@@ -76,26 +56,7 @@ $('#content').append(content[0].data) }) - - $.ajax({ - type: "post", - url: "/jspblog/board?cmd=delete", - data: JSON.stringify(data), - contentType: "application/json; charset=utf-8", - dataType: "json" - }).done(function(result){ - if (result.statusCode === 1) { - location.href = "index.jsp"; - } else { - alert("삭제 실패"); - } - }); - } - \ No newline at end of file diff --git a/jspblog/src/main/webapp/js/boardDetail.js b/jspblog/src/main/webapp/js/boardDetail.js new file mode 100644 index 00000000..023ad0d7 --- /dev/null +++ b/jspblog/src/main/webapp/js/boardDetail.js @@ -0,0 +1,56 @@ +function addReply(data) { + let replyItem = `
  • + profile-image +
    + ${data.userId} +

    ${data.content}

    +
    + delete
  • ` + $('#reply__list').prepend(replyItem); +} + +function deleteReply(id) { + console.log(id); +} + +function replySave(userId, boardId) { + console.log(userId) + let data = { + userId: userId, + boardId: boardId, + content: $("#reply__write__form").val(), + } + + $.ajax({ + type: "post", + url: "/jspblog/reply?cmd=save", + data: JSON.stringify(data), + contentType: "application/json; charset=utf-8", + dataType: "json", + }).done(function (result){ + if (result.statusCode === 1){ + addReply(result.data); + } + }) +} + +function deleteById(boardId) { + let data = { + boardId : boardId + } + + $.ajax({ + type: "post", + url: "/jspblog/board?cmd=delete", + data: JSON.stringify(data), + contentType: "application/json; charset=utf-8", + dataType: "json" + }).done(function(result){ + if (result.statusCode === 1) { + location.href = "index.jsp"; + } else { + alert("삭제 실패"); + } + }); +} \ No newline at end of file