Spring - Spring MVC 패턴에서 ajax를 활용한 실시간 댓글달기 소스
목록  
제 목 Spring MVC 패턴에서 ajax를 활용한 실시간 댓글달기 소스
작성자 박세청 작성일 2014/08/10 04:36


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자동생성하기

목록