사용자가

1.목록페이지를 본다

2. 클릭하면 자세한내용이 나온다 (detail.jsp) 

3. 자세한페이지에 수정버튼, 삭제버튼이있다

 

제목,내용 수정할 수있게해보자.

수정할 수있는 상태를만들기

id에 해당하는 수정페이지

detail.jsp

detail.jsp를 복사한다.

제목 value에 자바코드를 넣는다.

내용 textarea태그를 만들고 안에 콘텐트를 불러온다.

<td colspan="3"><input type ="text" name="title"value="<%=notice.getTitle() %>"></td>
<tr>
<td colspan="4">
<textarea rows="20" cols="80"><%=notice.getContent() %></textarea>
</td>
</tr>

edit.jsp

<%=id%>

detail.jsp?id=<%=notice.getId()%>">취소</a>


sendRedirect

서블릿이 다른 서블릿을 요청할 수있게한다.

사용자가 저장을 눌러서 '업데이트처리'한테 post했지만 detail.jsp를 사용자에게 돌려준다.

 

jsp로만들면 <%%>코드블럭부담 + 제스퍼이용, 업데이트는 서블릿으로하는게 낫다

디테일jsp에 출력기능이 다있다. redirect로 detail.jsp에게 출력기능을 부탁한다.

 

  • 새로운패키지생성 controller.lecture
  • EditController 클래스생성
  • edit.jsp에서 보낸 <form action="edit" method="post"> , <textarea rows="20" cols="80"><%=notice.getContent() %></textarea>를 받을수 있게 준비한다.
  • name = "title"을 넣어 value="" 가 전달되게한다.
  • <textarea>태그에도 name을 넣는다

id는 자바스크립트로 값에 접근하는데 사용,

name은 jsp에서는 request.getparameter(name); 이렇게 값에 접근

editcontroller / edit

업데이트시 특정레코드만 수정하는거니까 id가 필요하다.

edit.jsp에 <input>태그에 숨겨서 보낼 수있다.

<input type="hidden"name="id" value="<%=id%>">


service.get(id);

editController.java

 

NoticeService.java

  • NoticeSerive.java에 update(Notice notice) 메소드 생성
  • 제목,내용,조회수,첨부파일 등  업데이트가 될 수있다.
  • sql을 한문장으로 쓸 수있게한다. 범용으로 쓸 수있는 update().
  • service.get(id);를 통해 해당id에 대한 데이터를 채워놓은상태에서 title,content를 다른값으로  대체할수있다.
notice = service.get(id);

조회수만 업데이트된다면 나머지는 null값을 가진다. -> 데이터를 DB에서 가져와서 업데이트한것만 바꾼다음에 널을 채운다. (sql에 업데이트 가능한것들을 한번에 나열)

수정할 것만 채워서 전달하면 나머지는 null이 채워지고 ->업데이트 후 기존데이터가 null이 된다.

넘겨지지않은 부분을 채워야한다.

So, EditController클래스에서

Notice notice = new Notice();로 새로운 객체를 생성하지말고

Notice notice = service.get(id);로 기존의 데이터를 가져온다.

 

+ Recent posts