Java/Spring Framework
[ Spring ] 게시글 좋아요 기능
Mungwang
2023. 8. 30. 17:41
🥇 VS-Code [ jsp ]
📺 JSP 본문 코드

🥈 VS-Code [ js ]
// 좋아요 버튼이 클릭 되었을 때
const boardLike = document.getElementById("boardLike");
// 로그인 여부 검사
boardLike.addEventListener("click",e =>{
if(loginMemberNo == ""){
alert("로그인한후 이용해주세요");
return;
}
let check; // 기존에 좋아요 X(빈하트) : 0
// 기존에 좋아요 O(꽉찬하트) : 1
// contains("클래스명") : 클래스가 있으면 true, 없으면 false
if(e.target.classList.contains("fa-regular")){ // 좋아요 X (빈하트)
check = 0;
} else{ /// 좋아요 0(꽉찬하트)
check = 1;
}
// 로그인한 회원 번호, 게시글번호, 체크 전달할 데이터
// ajax로 서버로 제출할 파라미터를 모아둔 JS객체
const data = {"boardNo" : boardNo, "memberNo": loginMemberNo, "check" : check};
// ajax 코드 작성
fetch("/board/like" , {
method : "POST",
headers : {"Content-Type" : "application/json"},
body : JSON.stringify(data)
})
.then(response => response.text()) // 응답 객체를 필요한 형태로 파싱하여 리턴
.then(count => {
console.log("count :" + count);
if(count == -1){ // INSERT, DELETE 실패 시
console.log("좋아요 처리 실패");
return;
}
// toggle() : 클래스가 있으면 없애고, 없으면 추가하고
e.target.classList.toggle("fa-regular");
e.target.classList.toggle("fa-solid");
// 현재 게시글의 좋아요 수를 화면에 출력
e.target.nextElementSibling.innerText = count;
}) // 파싱된 데이터를 받아서 처리하는 코드 작성
.catch( err=> {
console.log("예외 발생");
console.log(err);
})
});
🥉 Spring
📺 BoardController
- @ResponseBody : 반환되는값이 비동기 요청한곳으로 반환되는 어노테이션

📺 BoardService

📺 BoardServiceImpl
- @Transactional : DML 구문 수행할때 예외발생시 롤백해주는 어노테이션

📺 BoardDAO

📺 board-mapper.xml

💎 Result
🔈좋아요 버튼 클릭전 웹브라우저

🔈좋아요 버튼 클릭 웹브라우저 ( 하트에 색이 더해지고 좋아요 갯수가 올라감 )
