Spring

Spring 게시판 조회수(계정당 하루에 1번 올리기)

class="song" 2023. 11. 1.
728x90

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라는 이름으로 조회수가 증가한다.

 

 

728x90

'Spring' 카테고리의 다른 글

Spring 게시판 작성시간(몇분전)  (5) 2023.11.02

댓글