본문 바로가기
[ Developer ]/Web - Servlet JSP

[JSP Web] 게시글 수정 Update 구현하기

by 김현섭. 2016. 6. 1.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Article Update
  • 게시글 수정하는 기능을 생성한다
  • 우선 ModifyServlet을 생성한다

# 수정 기능 Task
  1. 수정할 게시글 결정
    1. 수정하고자 하는 글 ID를 파라미터로 받기
  2. 수정할 게시글 정보 가져오기
    1. 수정할 게시글의 작성자 본인 확인 (보안상 중요)
      1. 작성자 본인인 것을 확인하지 않으면 URL로 접근하여 삭제가능
  3. 수정할 게시글 정보 JSP로 전송

수정 기능을 생성하기 위해 위와 같은 과정을 해야한다

ModifyServlet


그리고 나서 selectedarticle.jsp에서 수정을 한다
작성자일 때 보였던 삭제 버튼 옆에 수정버튼 까지 만들면 된다

selectedarticle.jsp (선택된 게시글 정보 출력)


그리고 write.jsp에서 form에서 내용을 변경해주면 된다
input에서는 value를 넘겨받은 article의 title을 출력해주면 된다
그렇다면 게시글 입력으로 들어왔을 때는 article이 넘어오지 않았으니 작성이 안된 상태이다

textarea는 input과는 다르게 내용 안에 EL문법으로 작성을 해야 한다


그러나 textarea는 article의 띄어쓰기가 또 적용되게 servlet에서 보낼 때 바꿔서 보내줘야 한다


이제는 write.jsp에서 수정 화면시 수정 버튼으로 바꿔주기 위해 jstl을 사용한다

write.jsp


script에서도 조건을 걸어줘야 한다
아래와 같은 조건으로 버튼에 맞게 서블릿으로 넘겨주면 된다


그리고 수정 버튼에 붙어 있는 다시쓰기 버튼은 원래 있던 내용으로 바꿔주는 역할을 한다
그렇기 때문에 id를 reset으로 주고 jQuery를 이용해서 내용을 바꾼다


하지만 위 부분은 에러나기 때문에 
location.reload() 시켜준다


이제 ModifyServlet으로 넘길 때 articleId를 넘겨야 한다
그러기 위해서 수정 버튼 앞에 hidden으로 input을 만들고 articleId를 넣어두면 된다


이제 넘길 modifyAction을 만든다
똑같이 Biz를 추가한 후 doGet을 막아준다


그러나 무엇이 달라진 것 인지를 체크해야 한다
why? 내용이 바뀌지 않았다면 UPDATE할 필요가 없기 때문

ArticleBiz에 modifyArticle 메소드를 생성하면서 request 자체를 파라미터로 받아온다

ModifyActionServlet


ArticleBiz


changeCount를 통해 변경이 된 내용만 변경을 해준다 -> 효율성

ArticleBiz에서 수정이 된지 안된지를 Servlet으로 보내줘야 하는 문제가 있다
변경사항이 입력 안된 경우와 변경 내용이 없는 경우를 분리 시키기 위해
변경 내용이 없다면 예외처리를 진행한다

ArticleBiz


예외를 던지고 ModifyActionServlet에서는 예외처리를 해주면 된다


이제 비즈 부분에서 modifyArticle을 생성한다
request 자체를 파라미터로 넘겨받는다

ArticleBiz


ArticleDAO에서 DB를 접근하는 메소드를 생성한다

ArticleDAO 


이렇게 되면 수정하는 부분만을 비교해서 수정을 하게 되면 효율적으로 수정을 할 수 있다