Spring 게시판 게시글 추천 기능 구현 (내 프로젝트에 적용)

Back-End/Spring 2019. 8. 21. 15:51

게시글을 추천할 수 있는 버튼을 만들고 자신의 글이 아닌 글에만 추천을 할 수 있게끔 구현 


("추천" 버튼이 자신의 글이 아닌경우에만 출력되게 함)


나중에 코드를 추가해서 하루에 한번씩만 추천할 수 있도록 수정할 예정


지금은 테스트용도라 추천을 계속 할 수 있음




memberboardview.jsp (게시글 세부내용 관련 페이지) 중 일부


1
2
3
4
5
6
7
8
9
    <!-- 로그인이 되어있고, 본인 글이 아닐경우에만 추천할 수 있도록 버튼을 출력 -->
 
    <c:if test = "${sessionScope.user_id != null and sessionScope.user_id != dto.user_id
    or sessionScope.navername != null and sessionScope.navername != dto.user_id
    or sessionScope.kakaonickname != null and sessionScope.kakaonickname != dto.user_id
    or sessionScope.facebookname != null and sessionScope.facebookname != dto.user_id}">
            
<button type = "button" id = "btnRecommend">추천하기</button>
    
    </c:if>
cs


1
2
3
4
5
6
7
8
9
10
//추천하기 버튼

$("#btnRecommend").click(function(){
    if(confirm("해당 글을 추천하시겠습니까?")){
        document.form1.action="recommend.do";
        document.form1.submit();
        
        alert("해당 글을 추천하였습니다.")
        
        }
    });

cs




MemberBoardController.java (게시글 관련 컨트롤러) 중 일부


1
2
3
4
5
6
7
8
//게시물 추천 관련 메소드
    @RequestMapping("/board/recommend.do")
    public String recommend (@RequestParam int member_bno) throws Exception {
        
        memberboardservice.recommend(member_bno);
    
        return "forward:/board/list.do"; //페이지값을 그대로 넘겨받기위해서 포워딩을 사용해 컨트롤러로 리턴시킨다.
    }
cs




MemberBoardService.java (게시글 관련 서비스 인터페이스) 중 일부


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.example.hansub_project.service.board;
 
import java.util.List;
import java.util.Map;
 
import javax.servlet.http.HttpSession;
 
import com.example.hansub_project.model.board.dto.MemberBoardDTO;
 
 
public interface MemberBoardService {
 
    
    public void recommend(int member_bno) throws Exception;    //게시글 추천관련
    
}
 
cs




MemberBoardServiceImpl.java (게시글 관련 서비스 인터페이스 구현 클래스) 중 일부


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.example.hansub_project.service.board;
 
import java.util.List;
import java.util.Map;
 
import javax.annotation.Resource;
import javax.inject.Inject;
import javax.servlet.http.HttpSession;
 
import org.springframework.stereotype.Service;
 
import com.example.hansub_project.model.board.dao.MemberBoardDAO;
import com.example.hansub_project.model.board.dto.MemberBoardDTO;
 
@Service    //서비스 빈으로 설정함
public class MemberBoardServiceImpl implements MemberBoardService {
    
    @Inject    //dao를 호출하기 때문에 의존성을 주입한다.
    MemberBoardDAO memberboarddao;
 
 
    //게시글 추천관련 메소드 구현
    @Override
    public void recommend(int member_bno) throws Exception {
        
        memberboarddao.recommend(member_bno);
        
        }
 
    }
 
 
 
cs




MemberBoardDAO.java (게시글 관련 DAO 인터페이스) 중 일부


1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.example.hansub_project.model.board.dao;
 
import java.util.List;
 
 
import com.example.hansub_project.model.board.dto.MemberBoardDTO;
 
//DAO 클래스
public interface MemberBoardDAO {
    
    public void recommend(int member_bno) throws Exception;  //추천하기 메소드
    
}
 
cs




MemberBoardDAOImpl.java (게시글 관련 DAO 인터페이스 구현 클래스) 중 일부


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.example.hansub_project.model.board.dao;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import javax.inject.Inject;
 
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
 
import com.example.hansub_project.model.board.dto.MemberBoardDTO;
import com.example.hansub_project.model.member.dao.MemberDAO;
 
 
@Repository     //dao 선언
public class MemberBoardDAOImpl implements MemberBoardDAO {
 
    @Inject    //db에 접속하기 위해 의존관계를 주입
    SqlSession sqlSession; 
    
    
    //추천수 증가처리 메소드
    @Override
    public void recommend(int member_bno) throws Exception {
        
        sqlSession.update("memberboard.recommend", member_bno);
    }
 
 
    
}
    
    
cs




boardMapper.xml (게시글 관련 mapper) 중 일부


추천 버튼을 한번 누를때마다 추천수가 1씩 증가함


1
2
3
4
5
6
7
8
<!-- 게시글 추천 관련 쿼리 -->
 
<update id = "recommend">
update member_board
set recommend = recommend+1 
where member_bno = #{member_bno} 
 
</update>
cs





: