검색 기능이 들어간 게시판 3 - 상세 페이지, 수정, 삭제
상세 페이지
list.do 페이지에서 view.do 요청을 받으면 String view 메소드를 찾아온다.
이 때, num, pageNum 두 가지 값을 가지고 온다.
이 메소드에서는 조회수를 1 증가시키는 selectUpdate 메소드를 호출하고,
글의 상세 정보를 DTO 객체에 담아오는 select 메소드를 호출하여 model 객체로 공유하여 view 페이지로 전달한다.
수정
num값과 pageNum 값을 가지고 updateForm.do 어노테이션을 찾아간다.
가지고 온 num 값을 매개로 select SQL문으로 특정 글에 대한 정보를 담아 DTO 객체 board에 담는다.
수정 폼 실행시 입력 양식에 기존 작성한 글의 내용을 출력해야 하기 때문이다.
이후로 board 객체와 상세 페이지에서 가지고 온 pageNum을 가지고 updateForm.jsp로 이동한다.
db에 저장된 값을 board객체에 담아왔기 때문에
뷰 페이지에서 비밀번호 검증이 가능하다.
폼 태그의 name 값이 frm으로 설정되어 있고
onsubmit 이벤트 핸들러를 추가하여 submit 실행 시 함수를 불러오는 역할을 하고 있다.
hidden 객체는 함수 실행시 전달되는 객체이므로 비밀번호를 함수에 전달할 수 있다.
board 객체에서 추출한 비밀번호는 name=passwd 인데,
수정폼의 비밀번호 입력양식은 name=passwd2 인것을 확인할 수 있다.
비밀번호 검증이 완료되면 update.do 값을 찾아 컨트롤러로 이동한다.
이미 뷰페이지에서 비밀번호 검증을 했기 때문에 메소드 내용이 그리 많지는 않다.
update SQL문 실행 메소드를 호출하고, 그 결과를 result 변수에 담는다.
이 result 변수와 pageNum 변수를 update 뷰 페이지로 전송한다.
삭제
글의 num값과 글목록의 정보인 pageNum값을 가지고 deleteForm.do를 찾아 컨트롤러로 간다.
글의 상세정보를 구해오는 메소드를 호출해 정보를 DTO 객체 board에 담아
deleteForm.jsp 뷰 페이지로 이동하는 내용이 전부다.
수정폼과 마찬가지로 비번 비교를 뷰페이지에서 바로 실행한다.
비밀번호 비교만 하면 되는 페이지라 다른 뷰 페이지에 비해 내용이 단촐하다.
pageNum과 num 값은 계속 가지고 움직이다.
글 삭제가 실행되면 pageNum 값을 사용해 진입했던 페이지로 이동해야 하기 때문이고,
num 값으로 db에서 특정 데이터를 찾아 그 데이터를 대상으로 SQL문을 실행하기 때문이다.
delete.do 값을 찾아 컨트롤러로 이동한다.
어노테이션 값과 메소드 이름은 delete 이지만
실행하는 SQL문은 update 이다.
원문이나 답글을 작성할 때 del 컬럼에 들어가는 기본값 'n'을 'y'로 수정하는 내용이 담겨 있다.
삭제가 실행되면 del컬럼의 값이 바뀌고
뷰 페이지에서는 삭제 메시지와 함께 링크가 사라진다.