Spring 프로젝트에서 게시판을 만들 때 사용했던 조회수를 기능.
코딩 방금 시작한 나도 했으니 모두 할 수 있다.
우선 회원가입 기능과 로그인 기능(session에 저장), 게시판의 상세 보기 페이지를 만든 후 작업 해야 한다.
목표 : 로그인 시 저장된 세션을 이용하여 하루에 1번만 조회수가 올라가게 만드는 것!
생각해야 하는 건 다음과 같다.
1. 사용자가 로그인을 하고 게시글을 봐야지 조회수가 올라갈 것
2. 게시글의 상세 보기 페이지에 들어갔을 때 해당게시글과 사용자 그리고 방문 날짜를 데이터 베이스에 저장해야 하는 것
3. 게시글의 상세 보기 페이지에 들어갔을 때 데이터베이스에서 위의 정보를 확인하고 없을 경우에만 조회수가 올라갈 것
위의 3가지만 생각하며 코드를 작성해 보자
코드 작업
1. 우선 Entity를 생성해 보자
- 나는 투표게시판을 만들어 VoteView로 파일을 생성했다.
처음 Entity를 만들 때 import를 어떤 것을 해야 할지 헷갈려 고생을 한 기억이 있어 모두 올린다.
user와 vote(게시글) LocalDate 이렇게 세 가지를 저장하기 위해 파일을 생성한다.
@Data를 작성해 주면 getter와 setter를 생략할 수 있다.
이렇게 작성하면 서버를 실행했을 때 데이터 베이스에 자동으로 테이블을 생성해 준다.
2. Repository도 생성해야 한다.
메서드는 컨트롤러에서 작성 후에 생성해도 상관없다.
3. Controller
- 게시판 컨트롤러 파일에 상세 보기 페이지가 있다면 거기에 추가해 주면 된다.
이해를 돕기 위해 주석처리를 했다.
여러 가지 방법이 있겠지만 이렇게 작성하면 간단하게 기능을 만들 수 있는 것 같다.
이렇게 코드를 작성하면 레파지토리를 사용할 때 에러가 발생할 것이다.
@Autowired를 컨트롤러 맨 위에 작성해 주자
클래스 아래에 위치시키면 좋을 것 같다
앞은 파일명(import 해야 함), 뒤는 내가 사용하고 싶은데로 지어주면 된다.
헷갈리지 않게 맨 앞만 소문자로 변경하여 사용하자
이렇게 파일을 만들고 로그인한 후 게시글의 상세 보기 페이지를 들어가면 조회수가 하루에 한 번만 올라갈 것이다.
데이터베이스에는 아래와 같이 저장된다
VoteView파일
들어간 날짜와 user의 primary key와 vote의 primary key가 저장된다.
게시판 테이블인 Vote에는 view라는 이름으로 조회수가 증가한다.
'Spring' 카테고리의 다른 글
Spring 게시판 작성시간(몇분전) (5) | 2023.11.02 |
---|
댓글