|
|||||||||||
Spring MVC 패턴에서 ajax를 활용한 실시간 댓글달기 소스컨트롤러 - ReCmtController @Controller public class ReCmtController { @Autowired private ReboardDao dao;
@RequestMapping(value="/re/listCmt", method={RequestMethod.GET, RequestMethod.POST}) public String listCmt(String no, ModelMap map) { List listCmt = dao.getListCmt(no); map.put("listCmt", listCmt); return "reboard/listCmt"; }
@RequestMapping(value="/re/createCmt", method={RequestMethod.GET, RequestMethod.POST}) public void createCmt(ReboardDto dto, Writer writer) throws IOException { dao.createCmt(dto); writer.write("end"); } @RequestMapping(value="/re/deleteCmt", method={RequestMethod.GET, RequestMethod.POST}) public void deleteCmt(ReboardDto dto, Writer writer) throws IOException { dao.deleteCmt(dto); writer.write("end"); } } View - read.jsp <script type="text/javascript">
// 한줄댓글 입력 메소드 function doCreateCmt() { // 한줄댓글 내용이 필수이므로 검사 if($('#cmt').val() == '') { alert("한줄 댓글의 내용은 필수 입력입니다."); $('#cmt').focus(); return; } // 버튼 중복 클릭 방지 $('#createbt').attr('disabled', 'disabled'); $.post('<%=cp%>/re/createCmt', {cwriter:$('#cwriter').val(), cmt:$('#cmt').val(), no:${item.no}}, function(data){ $('#cmt').val(''); // 내용 비우기 // 다시 클릭이 가능하게끔 $('#createbt').attr("disabled", false); // 입력이 완료가 됐으므로 다시 리스트 불러오기 cmtList(); }); } // 한줄댓글 리스트 가져오는 메소드 function cmtList() { $('#cmtTarget').load("<%=cp%>/re/listCmt?no=${item.no}"); } function doDeleteCmt(cno) { $.post('<%=cp%>/re/deleteCmt', {"cno":cno, no:${item.no}}, function(data) {cmtList();}); } $(function(){ // id가 cmt인 텍스트에서 엔터를 쳤을 경우 // 바로 데이터 입력이 되도록 작성 $('#cmt').keyup(function(e){ if(e.keyCode == 13) doCreateCmt(); }); // 처음 읽기 화면 들어왔을때 바로 리스트를 가져와서 보여줌 cmtList(); }); </script> . . . <body> <div> <div>글쓴이 : <input type="text" id="cwriter" value="${userid }" style="width: 10%" /> 댓글 : <input type="text" id="cmt" style="width: 50%" /> <input type="button" value="입력" id="createbt" onclick="doCreateCmt();" /></div> </div> <div id="cmtTarget"></div> </body> targetView - listCmt.jsp <?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <% String cp = request.getContextPath(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Insert title here</title> </head> <body> <c:forEach var="item" items="${listCmt }"> <div> <div> ${item.cwriter } : ${item.cmt } [${item.cdate }] <input type="button" value="삭제" onclick="doDeleteCmt('${item.cno}');" /> </div> </div> </c:forEach> </body> </html> Model - ReboardDao.java @Repository public class ReboardDao {
@Autowired private SqlSession mapper;
public List getListCmt(String no) { return mapper.selectList("reboard.listCmt", no); }
public void createCmt(ReboardDto dto) { mapper.insert("reboard.createCmt", dto); }
public void deleteCmt(ReboardDto dto) { mapper.delete("reboard.deleteCmt", dto); } } |
#1.스프링부트,Spring Data JPA게시판(구현기술및기능)-오라클연동게시판소스 | ||
Spring + Mybatis 설정하기 - Mapper를 이용하여 DAO자동생성하기 |