댓글테이블은 게시글테이블의 글번호를 외래키로 가지고 있다.
URI 메서드에서 CRUD를 사용할 때 사용
- insert==add
- selectAll==all
update, delete는 동일
<input type="hidden" id="replyBno" value="${vo.bno }">
<input type="text" id="replyId">
<input type="text" id="replyContent">
<button type="button" id="btn_add">작성</button>
type=hidden
으로 담는다. id=데이터 형식을 위해서input태그를 사용하지 않고
${vo.bno }
를 바로 script에서 값을 가져오면 되지않을까?
el표기법을 jquery에서 사용하면 실행은 문제없지만 가독성, 시점문제 등등 문제가 생길 수도 있기 때문에 사용하지 않는게 좋다.
var replyBno=$('#replyBno').val(); //게시판 번호값
getAllReplies(); //댓글 가져오기
$('#btn_add').click(function(){
var replyId=$('#replyId').val();
var replyContent=$('#replyContent').val();
var obj={
'replyBno':replyBno,
'replyContent':replyContent,
'replyId':replyId
};
$.ajax({
type:'post',
url:'replies/add',
data:obj,
success:function(result){
if(result=='success'){
alert('댓글 입력 성공');
getAllReplies(); //댓글 새로고침
}
}
}); //end ajax()
}); //end btn_add.click()
등록버튼 클릭 시 글번호, 댓글 내용, 작성자 정보를 json으로 저장해서 ajax방식으로 전송
ajax 응답 성공적일 시 댓글 목록만 새로고침
int replyBno=Integer.parseInt(request.getParameter("replyBno"));
String replyContent=request.getParameter("replyContent");
String replyId=request.getParameter("replyId");
ReplyVO vo=new ReplyVO(0, replyBno, replyContent, replyId, "");
System.out.println(vo);
int result=dao.insert(vo);
System.out.println(result);
if(result==1) {
response.getWriter().append("success");
}
success
응답 돌려주기int replyBno=Integer.parseInt(request.getParameter("replyBno"));
List<ReplyVO> list=dao.select(replyBno);
JSONArray jsonArray=new JSONArray();
for(int i=0;i<list.size();i++) {
JSONObject jsonObject=new JSONObject();
jsonObject.put("replyNo", list.get(i).getReplyNo());
jsonObject.put("replyBno", list.get(i).getReplyBno());
jsonObject.put("replyContent", list.get(i).getReplyContent());
jsonObject.put("replyId", list.get(i).getReplyId());
jsonObject.put("replyDate", list.get(i).getReplyDate());
jsonArray.add(jsonObject);
}
System.out.println(jsonArray.toString());
response.getWriter().append(jsonArray.toString());
function getAllReplies() {
var url='replies/all?replyBno='+replyBno;
$.getJSON(
url,
function(jsonData) {
console.log(jsonData);
var list='';
$(jsonData).each(function(){
console.log(this); //this : 반복되는 컬렉션의 현재 데이터
var replyDate=new Date(this.replyDate);
list += '<div class="reply_item">'+'<pre>'
+'<input type="hidden" id="replyNo" value="'+this.replyNo+'" />'
+'<input type="hidden" id="replyId" value="'+this.replyId+'" />'
+this.replyId+' '
+'<input type="text" id="replyContent" value="'+this.replyContent+'" readOnly />'
+' '+replyDate+' '
+'<button class="btn_update" type="button">수정</button>'
+'<button class="btn_delete" type="button">삭제</button>'
+'</pre></div>';
}); //end each()
$('#replies').html(list);
}
); //end getJSON()
}//end getAllReplies()
jsonData
는 서버에서 온 json 데이터가 저장되는데 $.getJSON()
을 사용했기 때문에 Object 타입이다.$(컬렉션).each() : 컬렉션 데이터를 반복문으로 꺼내는 함수
spring을 아직 사용하진 않았지만 spring의 구조처럼 만들어보고 있다. 몰라도 spring을 사용할 순 있지만 그 구조를 직접 느껴보기 위해서~