
// 클릭시 조회수 증가하는 컨트롤러 생성 + 중복 sesiion은 같은글 조회수 안오르게함
@RequestMapping(value="/viewCount.do", method=RequestMethod.GET)
public String countUp(@RequestParam("boardMyhomeArticleNo") int boardMyhomeArticleNo, HttpSession session) throws Exception {
// 최신 게시글 데이터를 가져오기
myhomeService.countUp(boardMyhomeArticleNo, session);
return "redirect:/board/board_myhome/myHomeSelect.do?boardMyhomeArticleNo=" + boardMyhomeArticleNo;
}
//조회수 증가
@Override
public int countUp(int boardMyhomeArticleNo, HttpSession session) throws Exception {
// 세션에 "viewed"라는 이름의 데이터를 가져옴, 없으면 밑에서 저장됨
Set<Integer> viewed = (Set<Integer>) session.getAttribute("viewed");
// 세션에 아무것도 없으면 "viewed"저장
if (viewed == null) {
viewed = new HashSet<>();
session.setAttribute("viewed", viewed);
}
// 있으면 조회했는지 확인
if (viewed.contains(boardMyhomeArticleNo)) {
System.out.println("이미 조회한 글입니다.");
} else {
System.out.println("조회수가 증가됩니다.");
viewed.add(boardMyhomeArticleNo);
myhomeDAO.countUp(boardMyhomeArticleNo);
}
return boardMyhomeArticleNo;
}
// 조회수 증가 (sqlSession.update를 통해 매퍼에 접근)
@Override
public int countUp(int boardMyhomeArticleNo) throws DataAccessException {
int result = sqlSession.update("mapper.board.countUp", boardMyhomeArticleNo);
return result;
}
<!-- 조회수 증가 (넘버 검색후 +1) -->
<update id="countUp" parameterType="int">
<![CDATA[
UPDATE boardMyhome
SET boardMyhomeViews = boardMyhomeViews + 1
WHERE boardMyhomeArticleNo = #{boardMyhomeArticleNo}
]]>
</update>