본문 바로가기

국비

01.27 국비학원 80일차 (게시글-추가,수정,삭제)

---------------------------------------------------------------웹페이지 기능 구현 이어서--------------------------------------------------------------

 

  • 4 - 상세 페이지 구현

상세페이지 서블릿

세션을 활용하여 세션에 같은 id 기록이 있으면 조회수가 한번만 증가할 수 있도록 설정

if문 → 세션 생길 때 만들어진 boardViewHistory 속성을 가져와 history에 저장 하는데, 만약 history에 해당 id 가 없다면,

서비스의 upViewCnt 메서드를 이용해 조회수를 올리고 history 에 id 를 추가하고 변경된 history 값을 다시 세션의 boardViewHistory 속성을 설정한다.

---조회수를 먼저 올린 후 올려진 값이 반영된 값을 getData 하는 것이 로직 순서에 맞음 (이 값을 data 라고 저장)

HttpSessionListener 에 세션이 생길 때 id 기록을 담을 수 있는 "boardViewHistory" 속성 설정
상세페이지 service

(현재 코드에서 upViewCnt 는 boolean 말고 void 로 변경하여 반환값 없애도 된다)

dao 의 selectData 질의한 것을 data 로 저장 / dao 의 updateViewCnt 로 질의한 것을 count로 저장해 값에 따라 true,false 

상세페이지 dao
mapper

selectData 와 updateViewCnt 모두 dto 객체를 전달하니 parameterType 은 model.dto.BoardDTO 가 된다.

selectData 는 게시글 테이블에서 해당 id 의 id, btype, title, writer, context, createDate, updateDate, viewCnt 조회

updateViewCnt 는 게시글 테이블에서 해당 id 의 viewCnt(조회수)를 1 증가시킴

상세페이지 jsp
상세 페이지. 새로고침 하거나 글에 다시 들어와도 같은 id로 접속할 때는 조회수가 변경되지 않음

 

  • 4 - 추가 페이지 구현

추가페이지 서블릿

사용자가 입력한 title 과 context 정보를 dto 객체에 담고, 세션에서 user 정보를 가져와 userId를 작성자로 담고, 게시글 타입은 B (일반게시글) 로 기본 설정한다.

정상적으로 글이 추가되면 추가 글의 상세페이지가 나오고 추가 되지 않으면 다시 글 추가 페이지로 돌아감

service 의 add 메서드
dao
mapper

sequence 를 활용하여 추가글 id 설정.

추가페이지 jsp
성공적으로 저장되어 (insert count = 1 반환) detail 페이지 반환
목록에 추가 작성글이 추가된 것을 확인할 수 있다.

 

  • 4 - 수정 페이지 구현

수정 페이지 서블릿 doGet

수정페이지도 세션에 접근하여 로그인계정과 작성자가 일치한지를 확인하여 수정이 가능하도록 한다.

수정페이지 서블릿 doPost

사용자가 입력한 수정 내용을 가져와 저장한다. 여기서도 로그인계정과 작성자가 같은지 다시 확인한다.

service의 updatdData 메서드
dao
mapper. 수정된 title, context 를 반영하고 수정날짜를 현재 sysdate 로 설정
수정페이지 jsp. id값을 가지고 있어야 구분이 가능하기 때문에 숨김처리로 가져온다.

 

  • 4 - 삭제 기능 구현

삭제 기능 서블릿

마찬가지로 사용자계정과 작성자가 일치할 시에만 삭제 가능하도록 한다.

계정과 작성자가 일치할 때, 삭제가 정상적으로 작동하면 게시판 목록 페이지를 반환하고 정상적으로 작동하지 못하면 다시 해당 글의 상세페이지를 반환한다.

계정과 작성자가 일치하지 않으면, 에러 페이지를 반환한다.

service의 delete 메서드
dao
mapper
삭제하려는 글 상세페이지에서 삭제 버튼 누르면 삭제됨
정상 작동하여 삭제됨. 목록에서 찾아볼 수 없음