수업/정리

220318 답글 게시판2_답글

jumphare 2022. 3. 18. 22:50

2. 답글

content.jsp에 답글 버튼 ---> replyForm.jsp (writeForm.jsp 형식 그대로) -> replyPro.jsp

 

replyForm.jsp
- num!=null인 경우(컨텐츠의 primary key 값이 넘어올 경우)

  num, ref, re_level, re_step 값을 가져와 hidden으로 폼 안에 지정해둠

<input type="hidden" name="num" value="<%=num%>">
<input type="hidden" name="ref" value="<%=ref%>">
<input type="hidden" name="re_step" value="<%=re_step%>">
<input type="hidden" name="re_level" value="<%=re_level%>">
<input type="hidden" name="page" value="<%=nowpage%>">

 

- ref!=0인 경우 (원글의 경우 ref=num, 답글의 경우 ref=부모의 ref  ---> 즉 답글의 ref는 0이 될 수 없음)

   제목에 Re:가 붙도록 조치

 <%if(ref==0){%> <!--  원문 -->
       <input type="text" size="40" maxlength="50" id="subject" name="subject"></td>
<%}else{ %> <!-- 답글 -->
   <input type="text" size="40" maxlength="50" id="subject" name="subject" value="RE: <%=board.getSubject()%>"></td>
<%}%>

 - 내용에 부모글의 내용이 출력되도록 함

 

 

replyPro.jsp

- 자바빈으로 폼에서 받아온 값을 DTO에 저장하고, IP는 따로 받은 게 없으므로 따로 setter를 이용해 세팅

   board.setIp(request.getRemoteAddr());

 

- dao.reply(board)로 넘어감
sql문 첫번째 : 기존에 답글이 존재하는 글에 대해 답글을 작성한 경우

   update board set re_step=re_step+1 where ref=? and re_step>?

  ---> ref=부모글의 ref   :   즉 같은 부모글을 공유하는 답글에 대한 조건

  ---> re_step=부모글의 re_step=0   :   즉 부모글보다 큰 re_step -> 기존에 존재하던 부모글에 대한 답글들의 step 값을 하나씩 증가

      = 새로 등록하는 답글이 가장 위로 올라가고 나머지의 순서가 하나씩 아래로 내려가게 하기 위해서.
처음으로 다는 답글일 경우 : 조건에 만족하는 답글이 없어 적용되지 않을 것 - 두번째 sql문만 적용되고 끝남
이미 답글에 존재하는 글에 대한 답글일 경우 : 기존 답글들에 대해 re_step+1 + 두번째 sql문으로 새로 답글 작성되고 끝남
    ----> 이 시점에서 가장 최근에 쓰인 답글이 1번 -> 맨 위로 가고 나머지 답글은 하나씩 뒤로 밀림 (오름차순)

sql문 두번째 : 답글을 등록하는 sql문

   insert into board values(board_seq.nextval,?,?,?,?,sysdate,0,?,?,?,?,?)
pstmt.setInt(5, board.getRef()); //받아온 ref값으로 집어넣어야 함 부모글 따라가야하니까
pstmt.setInt(6, board.getRe_step()+1); -> 답글 작성하면 이순간 얘가 가장 위로 가야 하니까 무조건 1이 됨
pstmt.setInt(7, board.getRe_level()+1);  -> 답글 깊이가 하나 증가 -- 만약 답글에 대한 답글이라면 1+1=2가 되겠지...

model2에서 배울것
Model, View, Controller ---> MVC pattern
EL, JSTL, java servlet(controller)