게시글의 조회수 카운트가 올라갈 때는 언제인가?
게시판 리스트에서 특정 게시글을 클릭해서 상세 페이지에 들어가게 되면 조회수가 +1이 된다.
그렇다면 Controller에서 case detail이 실행될 때 조회수가 +1이 될 수있도록 해주어야 한다.
이 말만 듣고 냅다 Controller case detail에 무언가를 해주어야 하는 것은 아니고
case detail에서 사용하는 method를 이용해야하는데
case detail은 getDetail(bno) method를 사용하고 있다.
BoardService는 interface일 뿐이니까 실질적으로 구현하는 BoardServiceImpl class로 이동하여
getDetail(int bno) method에서 조회수를 업데이트 하는 구문을 추가한다.
int isOk = bdao.readcountUp(bno);
BoardServiceImpl.java
package service;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import domain.BoardVO;
import domain.PagingVO;
import repository.BoardDAO;
import repository.BoardDAOImpl;
public class BoardServiceImpl implements BoardService {
// ... (기존 코드)
@Override
public BoardVO getDetail(int bno) {
log.info(">>> detail check 2");
// 조회수 +1
int isOk = bdao.readcountUp(bno);
return bdao.getDetail(bno);
}
// ... (기존 코드)
}
bdao가 readcountUp(bno) method를 구현할 수 있도록 DAO > DAOImpl > mapper까지
순차적으로 진행한다.
BoardDAO.interface
package repository;
import java.util.List;
import domain.BoardVO;
import domain.PagingVO;
public interface BoardDAO {
List<BoardVO> selectList(PagingVO pgvo);
int getTotal(PagingVO pgvo);
int insert(BoardVO bvo);
BoardVO getDetail(int bno);
int delete(int bno);
int update(BoardVO bvo);
int readcountUp(int bno);
}
BoardDAOImpl.class
package repository;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import domain.BoardVO;
import domain.PagingVO;
import orm.DatabaseBuilder;
public class BoardDAOImpl implements BoardDAO {
// ... (기존 코드)
@Override
public int readcountUp(int bno) {
log.info(">>> readcountUp check3");
int isOk = sql.update("BoardMapper.readcount", bno);
if(isOk > 0) sql.commit();
return isOk;
}
}
boardMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="BoardMapper">
<!-- ... (기존 코드) -->
<update id="readcount">
update board set readcount = readcount + 1
where bno = #{bno}
</update>
<!-- ... (기존 코드) -->
</mapper>
게시물 조회 전 게시판 리스트 화면
게시물 조회 중인 상세 페이지 화면
게시물 조회 후 게시판 리스트 화면
DB에도 조회수 카운트가 +1로 업데이트 되었다면 이로써 게시물 조회수를 업데이트하는 작업이 끝났다.
[JSP/Servlet] 12. 게시글 조회수
(다음 게시물 예고편)
[JSP/Servlet] 13. 게시글 파일첨부 - 등록 / 상세 / 리스트
얼렁뚱땅 주니어 개발자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!