$().find(A) → 해당 태그에서 A를 찾아라
A.val(B) → A의 값을 B로 넣어라
실제 총 데이터 구하기
검색처리
검색처리 mybatis 처리를 편리하게 하기 위해서는 우선 mybatis에서 제공하는 <trim></trim>이라는 녀석을 알면 좋다.
mybatis의 가장 강력한 기능 중 하나는 동적 SQL을 처리하는 방법이다.
그처리를 trim이 처리해준다.
<trim>태그
<trim prefix=”AND (“ suffix=”)” prefixOverrides=”OR”><trim></trim> 안에 쿼리가 존재한다면 AND( 와 ) 가 자동으로 만들어지게됩니다.
prefixOverrides=”OR”은 맨앞에 OR연산자가 존재한다면 OR 연산자를 지워버리게 됩니다.
*주의 사항*
MyBatis의 기본 동작은 엄격한 자바빈처럼 setter/getter가 아니라.. setter/getter이름을 기준으로 해서 동작합니다.
따라서 typeArr이라고 하면 getTypeArr( ) 혹은 setTypeArr( )과 같이 이름만 맞으면 동작합니다.
해당 xml 에서 trim collection 값을 변수명과 맞춰야하는데
해당 getter의 이름값이 getTypeArr임으로 TypeArr로 지정하여 사용 한다.
고 생각할수 있지만 get을 지우고 앞에 글자는 소문자로 변경하여 사용하낟.
REST방식
-REST방식에서 가장 기억해야할 점은 서버에 전송하는 것이 순수한 데이터라는 점
-스프링4이후 부터는 @Controller 외에 @RestController 라는 어노테이션이 있다.
@RestController 는 순수한데이터를 반환하는 형태이므로 다양한
포맷의 데이터를 전송할수 있다.
collection 형태로도 전송가능
rest방식은 데이터 자체를 전송하기 떄문에 데이터에 대한 정상데이터 인지
원하는 데이터 값인지 확인해 주어야한다. ResponseEntity를 이용하여 확인
가능
ajax로 댓글 기능 만들기
실질적인 AJAX처리를 통한 댓글 생성 및 조회
reply.js를 따로 구현 해 놓고 get.jsp에서 댓글을 사용할거기 때문에
해당 get.jsp 에 reply.js 를 불러온다.
var replyService = (function(){function add(reply,callback,error){$.ajax({type : 'post',url : '/replies/new',data : JSON.stringify(reply),contentType : "application/json; charset=utf-8",success : function(result,status, xhr){if(callback){callback(result);}},error : function(xhr,status,er){if(error){error(er);}}})}//댓글처리function getList(param,callback,error){var bno =param.bno;var page =param.page || 1;$.getJSON("/replies/pages/"+bno+"/"+page+".json",function(data){if(callback){callback(data);}}).fail(function(xhr,status,err){if(error){error(err);}});}return {add:add,getList :getList};})();
get.jsp에서 자바스크립트 부분
<script type="text/javascript" src="/resources/js/reply.js"></script><script type="text/javascript">$(document).ready(function(){var bnoValue = '<c:out value="${board.bno}"/>'; //현재 페이지에서 bno의 값을 가져온다. 즉, 게시판 번호를 가져온다.var replyUR =$(".chat");showList(1);function showList(page){console.log("댓글 처리 리스트 ");replyService.getList({bno:bnoValue,page: page|| 1},function(list){var str="";if(list ==null || list.lenght==0){
// 댓글이 없으면 해당 화면에 아무것도 안보여준다.replyUR.html("");return;}//댓글이 있을때for(var i=0, len =list.length || 0; i< len; i++){str += "<li class='left clearfix' data-rno='"+list[i].rno+"'>";str +=" <div><div class='header'><strong class='primary-font'>"+list[i].replyer+"</strong></div>";str+=" <p>"+list[i].reply+"</p></div></li>";}replyUR.html(str);});}//show list 끝//모달 처리var modal = $(".modal");var modalInputReply = modal.find("input[name='reply']");var modalInputReplyer = modal.find("input[name='replyer']");var modalModBtn =$("#modalModBtn");var modalRemoveBtn =$("#modalRemoveBtn");var modalRegisterBtn =$("#modalRegisterBtn");$('#addReplyBtn').on("click",function(){ // 맨처음 화면에서 newRegister누르면 모달 창 생성//modal.find("input").val("");modalRegisterBtn.show();$(".modal").modal("show");});// 모달 처리 끝//댓글 등록 처리modalRegisterBtn.on("click",function(){var reply ={reply : modalInputReply.val(),replyer : modalInputReplyer.val(),bno : bnoValue};replyService.add(reply,function(result){modal.find("input").val("");modal.modal("hide");});});//댓글등록 처리 끝});</script>
사용되는 모달 부분
<!-- 댓글에 대한 모달 창 (수정 삭제 등록) --><div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h4 class="modal-title" id="myModalLalbel">REPLY MODAL</h4></div><div class="modal-body"><div class="form-group"> <!-- 원하는 내용 --><label>Reply</label><input class="form-control" name='reply' value='New Rely!!!'></div><div class="form-group"> <!-- 작성자 --><label>Replyer</label><input class="form-control" name='replyer' value='replyer'></div></div><div class="modal-footer"><button id='modalModBtn' type="button" class="btn btn-warning">수정</button><button id='modalRemoveBtn' type="button" class="btn btn-danger">제거</button><button id='modalRegisterBtn' type="button" class="btn btn-primary">댓글등록</button><button id='modalCloseBtn' type="button" class="btn btn-default">Close</button></div></div></div></div><!-- 모달 끝 -->
결과 모습
정리 :
reply.js 부분에 자바스크립트로 replyservice 변수를 만들고 그 변수 안에
add 와 getList 함수를 구현한다 . 구현하며 그 안에 ajax 형식으로 url을 넘기는데 그 url을 댓글 controller에 맞게 url을 설정한다.
그후, 해당되는 화면(여기서는 get.jsp)에서 자바스크립트를 통해서 replyservice를 사용하고 replyservice.add 와 같이 사용하여 해당 부분을 구현하게 된다.
ajax에서 success 에대한 API 문서 (값, 상태값, 로그를 위한 변수값)