220318 답글 게시판2_답글
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)