이번 시간에는 counting을 넣어볼건데요.

프로그래밍에는 정해진 방법이 없다고 하니, 여건에 맞게 개발하면되겠습니다.

보통 카운터가 올라갈 때는 게시글을 클릭했을 때 올라가겠죠?

근데 그냥 클릭했을때만 올라가게한다면 글쓴이가 자기 카운터올릴려고 계속 들어갈 수 있겠죠?

이 게시판을 만들면서 개인정보가 있을 만한 로그인이나 회원가입을 만들지 않았습니다.

그렇다면 간단하게 개인을 확인할 수 있는 방법이 무엇이 있을까요?

IP를 사용하면 됩니다. IP를 가져오는 메소드가 있는데, request.getRemoteAddr() 메소드입니다.

IP를 사용하려면 컬럼등 추가해야할게 많습니다. 다 추가하러 가봅시다

먼저 DB에 칼럼값을 넣어줘야합니다.

기본값은 127.0.0.1로 컬럼을 추가하였습니다. (SQL Developer를 통해서)


DB를 고쳤으니 DB에서 값을 가져오는 형태인 beans.board도 고쳐야합니다.

변수를 선언해주고 게터와 세터도 제너레이터로 만들어줍시다.


ip를 받을 변수도 선언했으니 이제 글을 쓸 때 ip를 저장해야합니다.

insertAction.Java는 따로 만드는 것을 안했습니다만, 개인적으로 만들었을거라 생각합니다.

reqeust.getREmoteAddr()로 ip를 가져옵니다.

IP를 가져왔으니 이제 SQL 쿼리구문에도 IP를 저장할 수 있게 고쳐야겠습니다.

board.xml로 이동하여 regip를 추가해줍시다.


마지막으로 view를 고쳐주면 되겠습니다. ip를 추가한김에 게시글에 ip가 보이도록 설정하겠습니다.

Content.jsp에서 ip가 보이도록 고쳤습니다.

이제 Count가 증가할 수 있도록 해야합니다.

그런데 처음설명할 때 글을 클릭하면 카운트가 1증가할 수 있게해야합니다. 근데 ContentAction.java에서 처리할건지

다른 Action을 추가할건지 고민해봐야 합니다.

이번엔 CountAction을 추가하고 Redirect로 Content.Action으로 갈 수 있도록 해봅시다.

CountAction이 할 일은 게시글을 쓴 ip와 접속한 ip를 비교하여 같으면 카운트가 증가하지 않고 ContentAction으로

다를 경우 카운트를 증가하고 contentAction으로 Redirect하면 되겠습니다.


먼저 List.jsp에서 content.do가 아닌 count.do로 바꿉니다. 그래야 countAction으로 들을테니까요.

CountAction을 사용할려면 Command.properties에서도 추가해주어야합니다. 까먹으면 안되요.
/count.do=com.board.action.CountAction

CountAciton의 기능을 구현할 차례입니다.

게시글의 idx를 통해 ip를 가져오고 사용자의 ip를 가져와서 서로 대조한 후 같으면 증가를 안하고 다르면 증가합니다.

그리고 증가한 count의 값을 데이터베이스에 저장시키면 되는거죠.

그런데 우린 count가 증가한 값을 데이터베이스에 저장하는 Sql구문과 메소드가 없습니다. 만들러가야죠.

com.board.dao.BoardDao.java에 기능추가하러 갑시다.


기능 추가하였으니 이제 SQL 쿼리문도 추가하러 갑니다

Board.xml


완벽합니다~

하지만 최신 아파치를 쓰면 0:0:0:0:0:0:0:0이 찍히는 경우가 있는데 이 경우는 IPv6여서 나옵니다.

아파치 설정을 바꾸면 127.0.0.1로 나오니 구글에서 검색하시면 되겠습니다.

(0:0:0:0:0:0:0:0 ip로 몇개 게시글을 쓰고 127.0.0.1로 바꾸면 count가 증가하는 테스트를 쉽게 할 수 있습니다)

누락되었던 기능도 하나하나 만들어가네요.

나름 그냥저냥 게시판같은 느낌이 드네요.

거의 다 끝나갑니다. 드디어! 

+ Recent posts